nginx mit PHP5 und MySQL unter Debian Lenny
Da ich gerade einen Root mit dem schlanken Webserver nginx, MySQL und PHP5 unter Debian 5 “Lenny” einrichten soll, schreibe ich hier einfach mal ein Tutorial.
Wenn ihr die Befehle als User root ausführt (nicht empfohlen!), könnt ihr das sudo vornedran weglassen.
Zuerst führen wir mal mit den folgenden Befehlen ein Update der Paketdatenbank und eine Aktualisierung der vorhandenen Pakete durch.
sudo apt-get update && sudo apt-get upgrade
Danach geht es an die Installation von nginx und PHP 5:
sudo apt-get install nginx mysql-server php5-cli php5-cgi php5-mysql
Der Webserver nginx hat leider keine direkte Unterstützung für PHP5, deswegen müssen wir das Ganze über das FastCGI-Interface machen. Dafür brauchen wir das Paket spawn-fcgi, um den FastCGI-Prozess zu starten. Hiermit kommen wir zu einem weiteren Problem: spawn-fcgi ist erst in der Entwicklerversion von Debian als eigenständiges Paket verfügbar, im Moment hängt es noch bei lighttpd in der Installationsdatei herum. Andere Tutorials haben an dieser Stelle ein Kompilieren der Sourcen von lighttpd vorgeschlagen, allerdings geht es auch einfacher: Auf der Paketseite von spawn-fcgi bei Sid finden sich Download-Links für eine vorkompilierte Version. Unter “Download” einfach eure Architektur auswählen (bei mir ist es i386, welche Architektur ihr habt findet ihr mit uname -m heraus) und die Adresse des Pakets bei einem Mirrorserver mit Rechtsklick -> Link-Adresse kopieren in die Zwischenablage einfügen. Jetzt führt ihr die folgenden Befehle aus, um in den Paketcache zu wechseln und spawn-fcgi zu installieren:
cd /var/cache/apt/archives
sudo wget [hier die Adresse, die ihr kopiert habt, einfügen]
sudo dpkg -i [der Name des heruntergeladenen Pakets, z.B. spawn-fcgi_1.6.2-2_i386.deb]
Dann erstellen wir noch ein kleines Skript, um PHP5-CGI komfortabel mit FastCGi zu starten. Hierzu gebt ihr zuerst folgendes ein:
sudo nano /usr/bin/php5-fastcgi
Nun kommt folgendes in die Datei, wobei [Port] irgendein Port in der Portrange über 1024 (z.B. 7475) sein sollte:
#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p [Port] -u www-data -f /usr/bin/php5-cgi
Ihr könnt den Editor jetzt mit [Strg]+[X] schließen und die Abfrage zum Speichern mit [y] und [Enter] beantworten. Jetzt erstellen wir in der selben Vorgehensweise noch ein Initscript unter /etc/init.d/php5-fastcgi mit nachfolgendem Inhalt:
#!/bin/bash
PHP_SCRIPT=/usr/bin/php5-fastcgi
RETVAL=0
case “$1″ in
start)
$PHP_SCRIPT
RETVAL=$?
;;
stop)
killall -9 php
RETVAL=$?
;;
restart)
killall -9 php
$PHP_SCRIPT
RETVAL=$?
;;
*)
echo “Usage: php5-fastcgi {start|stop|restart}”
exit 1
;;
esac
exit $RETVAL
Hiernach könnt ihr die Scripts noch mit folgenden Befehlen ausführbar machen und in den “Autostart” des Servers legen:
sudo chmod 755 /usr/bin/php5-fastcgi /etc/init.d/php5-fastcgi
sudo update-rc.d php5-fastcgi defaults
Danach bearbeiten wir noch die Datei /etc/nginx/sites-available/default und fügen die folgenden Zeilen hinzu (oder bearbeiten/unkommentieren die schon vorhandenen), während wir [Port] wieder mit dem oben eingetragenen Port ersetzen:
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:[Port];
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
}
Wenn ihr wollt, dass nginx auch die Datei index.php anstatt der index.htm(l) als erste Datei nimmt, könnt ihr noch diese Zeilen anpassen:
location / {
root /var/www/nginx-default;
index index.php index.html index.htm;
}
Nachdem wir nun PHP5/FastCGI mit dem Befehl sudo /etc/init.d/php5-fastcgi gestartet haben, sollte PHP mit nginx laufen.

Hehe, dank meinem Server
Tutorialing by doing eben