Entwicklungsumgebung: LEMP-Stack

Ich wurde bezüglich meines letzten Beitrages angesprochen, dass der Apache2-Webserver schon ein wenig betagt ist und eher so 2000 ist. Das lass ich mir natürlich nicht zwei Mal sagen und möchte deshalb heute, als Alternative zum Apache2-Webserver, nginx [engine x] vorstellen.

Die Installation auf einem Ubuntu Server ist denkbar einfach.

sudo aptitude install nginx
sudo aptitude install mysql-server
sudo aptitude install php5-fpm php5-cli php5-mysql php5-gd php5-curl php5-mcrypt php-apc

Ein wichtiger Unterschied liegt bei der PHP-Ausführung. In einem LEMP-Stack wird PHP mit Hilfe des FastCGI-Process-Managers ausgeführt und nicht in einem Apache-Modul.
Werden Einstellungen in der php.ini geändert brauch nur noch der FPM neu gestartet werden und nicht, wie beim Apache2, der gesamte Webserver.

sudo /etc/init.d/php5-fpm start|stop|restart

nginx Konfiguration

Die Konfigurationsdateien liegen in /etc/nginx/sites-available. Hier können wir sämtliche benötigten vHost-Konfigurationen ablegen.
Um die Konfiguration zu aktivieren erstellen wir einen Symlink im Ordner /etc/nginx/sites-enabled.

sudo ln -s /etc/nginx/sites-available/<your.site.com> /etc/nginx/sites-enabled/<your.site.com>

Ich verwende für die Entwicklung eine minimale Konfiguration, um meine Applikationen auszuliefern. Auf den Produktionsmaschinen läuft der nginx dann mit zusätzlichen Einstellungen, wie gzip, cache etc. Ich empfehle auch in der Entwicklungsumgebung ein separates Server-Logging, um eine bessere Übersicht zu erhalten.

# /etc/nginx/sites-available/<your.site.com>

server {
  listen 80;
  server_name <your.site.com>

  root /var/www/<your.site.com>
  index index.php index.html;

  access_log /var/log/nginx/<your.site.com>.access.log;
  error_log /var/log/nginx/<your.site.com>.error.log;
  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
  }
}

Wird nginx in einer VM, wie es bei mir der Fall ist, betrieben. Sollte die Einstellung sendfile off; gesetzt werden. Dazu muss die Datei /etc/nginx/nginx.conf bearbeiten un die entsprechende Zeile abändern. Jeder sollte diese Einstellung sofort finden, da sie im oberen Teil der Konfigurationsdatei steht.

PHP-FPM Konfiguration

Die offizielle Installation von PHP-FPM läuft auf einem Socket im IP-Stack, welcher standardmäßig über den Port 9000 angesprochen wird. Soll der PHP-FPM nun auf einem Unix-Socket laufen ist eine kleine Änderung am FPM Pool notwendig.

# /etc/php5/fpm/pool.d/www.conf listen = /var/run/php5-fpm.sock

Danach noch neu starten und schon wird automatisch am definiertem Ort ein Unix-Socket erstellt.

PHP-Konfiguration

Damit das parsen noch etwas sicherer wird benötigen wir eine kleine Anpassung an der PHP-Konfiguration.

# /etc/php5/fpm/php.ini cgi.fix_pathinfo = 0

Kommentar schreiben

Benutzerdaten
Ihr Kommentar