Make money mit Magento und nginx

Für ein sehr spannendes neues Projekt habe ich angefangen mich mit Shop-Systemen zu beschäftigen. Die Wahl fiel nach einiger Recherche sehr schnell auf Magento. Das System gibt es als Community-Edition kostenlos oder für etwas größere Projekte auch gegen Gebühr. Eine Gegenüberstellung der drei Versionen findet man hier.

Die Installation von Magento ist wirklich sehr einfach. Nach dem Download und dem Entpacken, kopiert man den Inhalt des „magento“-Ordners einfach ins das Public-Root-Verzeichnis des Servers. Danach legt man noch einen vhost an und editiert die nginx.conf. Folgende Konfiguration, die ich mir aus dem Magento-Forum geholt habe, hat bei mir gut funktioniert:

  1. #user  nobody;
  2. worker_processes  1;
  3.  
  4. #error_log  logs/error.log;
  5. #error_log  logs/error.log  notice;
  6. #error_log  logs/error.log  info;
  7.  
  8. #pid        logs/nginx.pid;
  9.  
  10. events {
  11.     worker_connections  1024;
  12. }
  13.  
  14. http {
  15.     include       mime.types;
  16.     default_type  application/octet-stream;
  17.  
  18.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  19.                       '$status $body_bytes_sent "$http_referer" '
  20.                       '"$http_user_agent" "$http_x_forwarded_for"';
  21.  
  22.     access_log  logs/access.log  main;
  23.  
  24.     sendfile        on;
  25.     #tcp_nopush     on;
  26.  
  27.     #keepalive_timeout  0;
  28.     keepalive_timeout  65;
  29.  
  30.     #gzip  on;
  31.  
  32.     autoindex off;
  33.     map $scheme $fastcgi_https {
  34.         default off;
  35.         https on;
  36.     }
  37.  
  38.     gzip  on;
  39.  
  40.     server {
  41.         listen       80;
  42.         server_name  shop;
  43.  
  44.     root        F:/server/public;
  45.     index       index.php;
  46.     charset     utf-8;
  47.  
  48.     location / {
  49.         index index.html index.php; ## Allow a static html file to be shown first
  50.         try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
  51.         expires 30d; ## Assume all files are cachable
  52.     }
  53.  
  54.     ## These locations would be hidden by .htaccess normally
  55.     location /app/                { deny all; }
  56.     location /includes/           { deny all; }
  57.     location /lib/                { deny all; }
  58.     location /media/downloadable/ { deny all; }
  59.     location /pkginfo/            { deny all; }
  60.     location /var/                { deny all; }
  61.  
  62.     location /var/export/ { ## Allow admins only to view export folder
  63.         auth_basic           "Restricted"; ## Message shown in login window
  64.         auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
  65.         autoindex            on;
  66.     }
  67.  
  68.     location  /. { ## Disable .htaccess and other hidden files
  69.         return 404;
  70.     }
  71.  
  72.     location @handler { ## Magento uses a common front handler
  73.         rewrite / /index.php;
  74.     }
  75.  
  76.     location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
  77.         rewrite ^(.*.php)/ $1 last;
  78.     }
  79.  
  80.     location ~ .php$ { ## Execute PHP scripts
  81.         expires        off; ## Do not cache dynamic content
  82.         fastcgi_pass   127.0.0.1:9000;
  83.         fastcgi_param  HTTPS $fastcgi_https;
  84.         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  85.         include        F:/nginx/conf/fastcgi_params;
  86.     }
  87.     }
  88. }

Da Magento offensichtlich mit lokalen Installationen nicht klar kommt, gibt es ein paar Probleme bei der Installation (Sprache lässt sich nicht ändern) und beim Betrieb. Wenn man nach der Installation versucht sich als admin anzumelden, wird dies nicht gelingen. Man wird immer wieder auf die Login-Seite geleitet. Wenn man zu den doch eher wenigen Nutzern von von Opera gehört, dann gibt es diese Probleme nicht! Für alle anderen könnte folgende Lösung, die ich im Magento-Forum gefunden habe, helfen.

Man kommentiert einfach die Zeilen 81, 82 und 83 (nicht das Komma in Zeile 80 vergessen!) in der Datei appcodecoreMageCoreModelSessionAbstractVarien.php aus dem magento-Ordner aus und schon funktioniert der Shop wunderbar.

  1. // session cookie params
  2. $cookieParams = array(
  3. 'lifetime' => $cookie->getLifetime(),
  4. 'path'     => $cookie->getPath()//,
  5. //'domain'   => $cookie->getConfigDomain(),
  6. //'secure'   => $cookie->isSecure(),
  7. //'httponly' => $cookie->getHttponly()
  8. );

Sollte man den Shop einfach in einem Unterordner vom html-Ordner von nginx abgelegt haben und diesen nicht über einen Hostnamen aufrufen, dann reicht es eventuell statt localhost/shop einfach 127.0.0.1/shop im Browser einzugeben. Das habe ich jedoch nicht getestet.

Als nächstes muss man einfach nur noch die URL zu seiner Magento-Installation im Browser aufrufen (im Beispiel wäre das shop/) und den Anweisungen folgen.  Das Prüfen der URLs habe ich deaktiviert…eben weil es ja nur eine lokale Installation ist. Für die Tabellen in der neu anzulegenden Datenbank ist es sicher sinnvoll einen Präfix wie „magento_“ anzugeben. Sollten noch andere Daten in der gleichen Datenbank gespeichert werden, dann kann man die Tabellen so leichter auseinander halten. Eine etwas ausführlichere Anleitung gibt es hier.

Viel Spaß beim Ausprobieren von Magento!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.