Webserver Installation · 5 min read · Dec 31, 2025
Installation von Nginx mit PHP5 und MySQL-Unterstützung auf Debian Squeeze
Installation von Nginx mit PHP5 und MySQL-Unterstützung auf Debian Squeeze
Version 1.0
Autor: Falko Timme
Folge mir auf Twitter
Nginx (ausgesprochen “engine x”) ist ein kostenloser, Open-Source, leistungsstarker HTTP-Server. Nginx ist bekannt für seine Stabilität, seinen umfangreichen Funktionsumfang, seine einfache Konfiguration und seinen geringen Ressourcenverbrauch. Dieses Tutorial zeigt, wie Sie Nginx auf einem Debian Squeeze-Server mit PHP5-Unterstützung (über FastCGI) und MySQL-Unterstützung installieren können.
Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!
1 Vorbemerkung
In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen.
2 Installation von MySQL 5
Um MySQL zu installieren, führen wir aus
apt-get install mysql-server mysql-clientSie werden aufgefordert, ein Passwort für den MySQL-Root-Benutzer anzugeben - dieses Passwort gilt für den Benutzer root@localhost sowie [email protected], sodass wir später kein MySQL-Root-Passwort manuell angeben müssen:
Neues Passwort für den MySQL “root”-Benutzer: <– yourrootsqlpassword
Wiederholen Sie das Passwort für den MySQL “root”-Benutzer: <– yourrootsqlpassword
3 Installation von Nginx
Nginx ist als Paket für Debian Squeeze verfügbar, das wir wie folgt installieren können:
apt-get install nginxStarten Sie nginx anschließend:
/etc/init.d/nginx startDas Standard-Nginx-Dokumentenverzeichnis ist /var/www, das noch nicht existiert; daher müssen wir es wie folgt erstellen:
mkdir /var/www
chown www-data:www-data /var/wwwGeben Sie die IP-Adresse oder den Hostnamen Ihres Webservers in einen Browser ein (z. B. http://192.168.0.100), und Sie sollten die folgende Seite sehen:

Sie erhalten einen 403-Fehler, da keine Indexseite in /var/www vorhanden ist.
4 Installation von PHP5
Wir können PHP5 über FastCGI in nginx zum Laufen bringen. Glücklicherweise bietet Debian Squeeze ein FastCGI-fähiges PHP5-Paket, das wir wie folgt installieren (zusammen mit einigen PHP5-Modulen wie php5-mysql, die Sie benötigen, wenn Sie MySQL von Ihren PHP-Skripten aus verwenden möchten):
apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xslÖffnen Sie dann /etc/php5/cgi/php.ini und entfernen Sie das Kommentarzeichen bei der Zeile cgi.fix_pathinfo=1:
vi /etc/php5/cgi/php.ini| [...] ; cgi.fix_pathinfo bietet *echte* PATH_INFO/PATH_TRANSLATED-Unterstützung für CGI. PHP's ; vorheriges Verhalten war, PATH_TRANSLATED auf SCRIPT_FILENAME zu setzen und nicht zu verstehen, ; was PATH_INFO ist. Für weitere Informationen zu PATH_INFO siehe die CGI-Spezifikationen. Das Setzen ; dieses Wertes auf 1 bewirkt, dass PHP CGI seine Pfade an die Spezifikation anpasst. Ein Wert ; von null bewirkt, dass PHP sich wie zuvor verhält. Standard ist 1. Sie sollten Ihre Skripte ; so anpassen, dass sie SCRIPT_FILENAME anstelle von PATH_TRANSLATED verwenden. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=1 [...] |
Es gibt kein eigenständiges FastCGI-Daemon-Paket für Debian Squeeze, daher verwenden wir das Programm spawn-fcgi von lighttpd. Wir installieren lighttpd wie folgt:
apt-get install lighttpdSie werden eine Fehlermeldung sehen, die besagt, dass lighttpd nicht starten kann, da Port 80 bereits verwendet wird:
Starting web server: lighttpd2011-02-24 01:43:18: (network.c.358) can't bind to port: 80 Address already in use
failed!
invoke-rc.d: initscript lighttpd, action "start" failed.So sollte es sein, da nginx bereits auf Port 80 lauscht. Führen Sie aus
update-rc.d -f lighttpd removedamit lighttpd beim Booten nicht gestartet wird.
Wir haben lighttpd installiert, weil wir nur ein Programm benötigen, das mit dem Paket geliefert wird, /usr/bin/spawn-fcgi, das wir verwenden können, um FastCGI-Prozesse zu starten. Werfen Sie einen Blick auf
spawn-fcgi --helpum mehr darüber zu erfahren.
Um einen PHP-FastCGI-Daemon zu starten, der auf Port 9000 auf localhost lauscht und als Benutzer und Gruppe www-data ausgeführt wird, führen wir den folgenden Befehl aus:
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pidNatürlich möchten Sie diesen Befehl nicht jedes Mal manuell eingeben, wenn Sie das System starten. Um den Befehl automatisch beim Booten auszuführen, öffnen Sie /etc/rc.local…
vi /etc/rc.local… und fügen Sie den Befehl am Ende der Datei (vor der exit-Zeile) hinzu:
| [...] /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid [...] |
5 Konfiguration von nginx
Die nginx-Konfiguration befindet sich in /etc/nginx/nginx.conf, die wir jetzt öffnen:
vi /etc/nginx/nginx.confDie Konfiguration ist leicht verständlich (Sie können hier mehr darüber erfahren: http://wiki.codemongers.com/NginxFullExample und hier: http://wiki.codemongers.com/NginxFullExample2)
Zuerst (das ist optional) erhöhen Sie die Anzahl der Worker-Prozesse und setzen Sie den keepalive_timeout auf einen angemessenen Wert:
| [...] worker_processes 5; [...] keepalive_timeout 2; [...] |
Die virtuellen Hosts sind in server {}-Containern definiert. Der Standard-vhost ist in der Datei /etc/nginx/sites-available/default definiert - lassen Sie uns ihn wie folgt ändern:
vi /etc/nginx/sites-available/default| [...] server { listen 80; ## lauschen für ipv4 listen [::]:80 default ipv6only=on; ## lauschen für ipv6 server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www; index index.php index.html index.htm; } location /doc { root /usr/share; autoindex on; allow 127.0.0.1; deny all; } location /images { root /usr/share; autoindex on; } #error_page 404 /404.html; # leiten Sie Serverfehlerseiten zur statischen Seite /50x.html um # #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root /var/www/nginx-default; #} # leiten Sie die PHP-Skripte an Apache weiter, das auf 127.0.0.1:80 lauscht # #location ~ \.php$ { #proxy_pass http://127.0.0.1; #} # leiten Sie die PHP-Skripte an den FastCGI-Server weiter, der auf 127.0.0.1:9000 lauscht # location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } # verweigern Sie den Zugriff auf .htaccess-Dateien, wenn das Dokumentenverzeichnis von Apache # mit dem von nginx übereinstimmt # location ~ /\.ht { deny all; } } [...] |
servername ; macht dies zu einem Standard-Catchall-vhost (natürlich können Sie hier auch einen Hostnamen wie www.example.com angeben).
Im location /-Teil habe ich index.php zur Indexzeile hinzugefügt. root /var/www; bedeutet, dass das Dokumentenverzeichnis das Verzeichnis /var/www ist.
Der wichtige Teil für PHP ist die location ~ .php$ {}-Strophe. Kommentieren Sie sie aus, um sie zu aktivieren. Bitte stellen Sie sicher, dass Sie die fastcgi_param-Zeile in fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; ändern (ersetzen Sie /var/www durch das Dokumentenverzeichnis Ihres vhosts), da der PHP-Interpreter sonst das PHP-Skript, das Sie in Ihrem Browser aufrufen, nicht finden kann.
Stellen Sie sicher, dass zwischen include und fastcgi_params einige Leerzeichen stehen; - in der Standarddatei ist dies als ein Wort geschrieben, was ein Fehler ist.
Speichern Sie nun die Datei und starten Sie nginx neu:
/etc/init.d/nginx restartErstellen Sie nun die folgende PHP-Datei im Dokumentenverzeichnis /var/www:
vi /var/www/info.php| |
Rufen Sie diese Datei in einem Browser auf (z. B. http://192.168.0.100/info.php):

Wie Sie sehen, funktioniert PHP5, und es funktioniert über FastCGI, wie in der Server-API-Zeile angezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP5 aktiviert sind, einschließlich des MySQL-Moduls:

6 Links
- nginx: http://nginx.net/
- nginx Wiki: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- MySQL: http://www.mysql.com/
- Debian: http://www.debian.org/
Über den Autor
Falko Timme ist der Eigentümer von Timme Hosting (ultra-schnelles nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Hauptentwickler von ISPConfig (seit 2000). Er hat auch zum O’Reilly-Buch “Linux-Systemadministration” beigetragen.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.