Webserver · 4 min read · Dec 30, 2025
Nginx Mit PHP5 Und MySQL Unterstützung Auf Debian Lenny Installieren
Nginx Mit PHP5 Und MySQL Unterstützung Auf Debian Lenny Installieren
Version 1.0
Autor: Falko Timme
Nginx (ausgesprochen “engine x”) ist ein kostenloser, Open-Source, leistungsstarker HTTP-Server. Nginx ist bekannt für seine Stabilität, seinen reichen Funktionsumfang, die einfache Konfiguration und den geringen Ressourcenverbrauch. Dieses Tutorial zeigt, wie Sie Nginx auf einem Debian Lenny-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 MySQL 5.0 Installieren
Um MySQL zu installieren, führen wir
aptitude install mysql-server mysql-clientSie werden aufgefordert, ein Passwort für den MySQL-Root-Benutzer anzugeben - dieses Passwort gilt sowohl für den Benutzer root@localhost als auch für [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 Nginx Installieren
Nginx ist als Paket für Debian Lenny verfügbar, das wir wie folgt installieren können:
aptitude install nginxStarten Sie nginx anschließend:
/etc/init.d/nginx startGeben Sie die IP-Adresse oder den Hostnamen Ihres Webservers in einen Browser ein (z.B. http://192.168.0.100), und Sie sollten die Nginx-Startseite sehen:

4 PHP5 Installieren
Wir können PHP5 in nginx über FastCGI zum Laufen bringen. Glücklicherweise bietet Debian Lenny 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 aus Ihren PHP-Skripten verwenden möchten):
aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash 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 fügen Sie die Zeile cgi.fix_pathinfo = 1 ganz am Ende der Datei hinzu:
vi /etc/php5/cgi/php.ini| [...] cgi.fix_pathinfo = 1 |
Es gibt kein eigenständiges FastCGI-Daemon-Paket für Debian Lenny, daher verwenden wir das Programm spawn-fcgi von lighttpd. Wir installieren lighttpd wie folgt:
aptitude install lighttpdSie werden eine Fehlermeldung sehen, dass lighttpd nicht starten kann, weil Port 80 bereits verwendet wird:
Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can't bind to port: 80 Address already in use
failed!So sollte es sein, denn nginx hört bereits auf Port 80. Führen Sie
update-rc.d -f lighttpd removeaus, damit 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 hört und als Benutzer und Gruppe www-data läuft, 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 manuell eingeben, wann immer Sie das System starten, also um das System zu veranlassen, den Befehl beim Booten automatisch 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 Nginx Konfigurieren
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 werden 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; server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www/nginx-default; 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; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { #proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # 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/nginx-default; bedeutet, dass das Dokumentenstammverzeichnis das Verzeichnis /var/www/nginx-default 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/nginx-default$fastcgi_script_name; ändern (ersetzen Sie /var/www/nginx-default durch das Dokumentenstammverzeichnis Ihres vhosts), da der PHP-Interpreter sonst das PHP-Skript, das Sie in Ihrem Browser aufrufen, nicht finden kann.
Stellen Sie sicher, dass einige Leerzeichen zwischen include und fastcgi_params; stehen - in der Standarddatei wird dies als ein Wort geschrieben, was ein Fehler ist.
Jetzt speichern Sie die Datei und starten Sie nginx neu:
/etc/init.d/nginx restartJetzt erstellen Sie die folgende PHP-Datei im Dokumentenstamm /var/www/nginx-default:
vi /var/www/nginx-default/info.php| |
Jetzt rufen wir 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/
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.