Dieser Artikel wird aktuell in Baustelle/nginx/PHP überarbeitet. Daher kann es sein, dass diese Seite hier veraltete oder nicht (mehr) zutreffende Informationen enthält. Vergleiche beide Versionen und wende dich im Zweifelsfall mit deinem konkreten Anliegen an das Support-Forum. Änderungen am Artikel bitte nur in Baustelle/nginx/PHP!
Ubuntu 14.04 Trusty Tahr
nginx verlangt für PHP eine FastCGI-Schnittstelle. Da PHP nicht im Passiv-Modus agiert, müssen - wie bei FastCGI üblich - PHP-Instanzen gestartet werden, die im Arbeitsspeicher auf ihren Einsatz warten.
Zuerst installiert man PHP im CGI-Modus, falls noch nicht geschehen, mit folgendem Paket[1]:
php5-cgi
mit apturl
Paketliste zum Kopieren:
sudo apt-get install php5-cgi
sudo aptitude install php5-cgi
Dann installiert man, falls noch nicht geschehen, das Paket
spawn-fcgi (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install spawn-fcgi
sudo aptitude install spawn-fcgi
Dann erstellt man ein Bash-Skript, welches die Instanzen startet (Quelle: Linode.com - Nginx and PHP-FastCGI on Ubuntu 🇬🇧)[2]:
1 2 | #!/bin/sh /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -f /usr/bin/php5-cgi |
Das Skript speichert man unter /usr/local/bin/php-fastcgi ab und setzt mit
chmod a+x /usr/local/bin/php-fastcgi
die notwendigen Rechte[2][4]. Man startet nun die Instanzen mit dem Befehl:
sudo php-fastcgi
Falls es Probleme geben sollte, kann man versuchen, PHP direkt an eine FastCGI-Schnittstelle zu binden. Dafür legt man die Datei /usr/local/bin/php-fastcgi mit folgendem Inhalt an:
1 2 | #!/bin/bash php-cgi -b 127.0.0.1:9000 |
Danach vergibt man Ausführrechte:
chmod a+x /usr/local/bin/php-fastcgi
Und zu guter Letzt startet man die FastCGI-Schnittstelle mit dem Befehl:
sudo php-fastcgi
Alternativ bietet sich der "FastCGI Process Manager" (kurz fpm) an, um PHP einfacher mit FastCGI einzubinden. Das Paket findet sich in den offiziellen Paketquellen:
php5-fpm (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install php5-fpm
sudo aptitude install php5-fpm
Fpm agiert als Dienst und die Konfiguration wird über /etc/php5/fpm/ vorgenommen. Den Service kann man mit:
sudo service php5-fpm restart
einfach neu starten bzw. stoppen/starten. Um PHP nun mit nginx zu nutzen, muss im Serverblock folgendes stehen:
location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi.config; # fastcgi_params wird nur für Abwärtskompatibilität verwendet }
Diese Konfiguration kann auch entsprechend an eigene Bedürfnisse angepasst werden. Nach einem Neustart von nginx sollte PHP wie gewünscht funktionieren. Und durch die Verwendung von "Unix Domain Sockets" erspart man sich Probleme mit den Ports von FastCGI.
Diese Revision wurde am 2. Dezember 2018 20:49 von noisefloor erstellt.