Webserver · 4 min read · Jan 23, 2026
Installation von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung (LEMP) auf Debian Wheezy
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 Wheezy-Server mit PHP5-Unterstützung (über PHP-FPM) und MySQL-Unterstützung (LEMP = L inux + nginx (ausgesprochen “ e ngine x”) + M ySQL + P HP) 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 Wheezy verfügbar, das wir wie folgt installieren können:
apt-get 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 folgende Seite sehen:

Das Standard-Dokumentenverzeichnis von nginx auf Debian Wheezy ist /usr/share/nginx/www.
4 Installation von PHP5
Wir können PHP5 in nginx über PHP-FPM zum Laufen bringen (PHP-FPM (FastCGI Process Manager) ist eine alternative PHP-FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Websites jeder Größe nützlich sind, insbesondere für stärker frequentierte Websites), die wir wie folgt installieren:
apt-get install php5-fpmPHP-FPM ist ein Daemon-Prozess (mit dem Init-Skript /etc/init.d/php5-fpm), der einen FastCGI-Server auf dem Socket /var/run/php5-fpm.sock ausführt.
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.nginx.org/NginxFullExample und hier: http://wiki.nginx.org/NginxFullExample2)
Zuerst (das ist optional) passen Sie die Anzahl der Worker-Prozesse an und setzen Sie den keepalive_timeout auf einen angemessenen Wert:
| [...] worker_processes 4; [...] 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; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; index index.php index.html index.htm; # Machen Sie die Seite über http://localhost/ zugänglich server_name localhost; location / { # Zuerst versuchen, die Anfrage als Datei zu bedienen, dann # als Verzeichnis, dann auf die Anzeige eines 404 zurückfallen. try_files $uri $uri/ /index.html; # Kommentieren Sie aus, um naxsi an diesem Standort zu aktivieren # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } # Nur für nginx-naxsi, das mit nginx-naxsi-ui verwendet wird: abgelehnte Anfragen verarbeiten #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #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 /usr/share/nginx/www; } # übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 hört # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # HINWEIS: Sie sollten "cgi.fix_pathinfo = 0;" in php.ini haben # Mit php5-cgi allein: #fastcgi_pass 127.0.0.1:9000; # Mit php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # den Zugriff auf .htaccess-Dateien verweigern, wenn das Dokumentenverzeichnis von Apache # mit dem von nginx übereinstimmt # location ~ \/\.ht { deny all; } } [...] |
Kommentieren Sie beide listen-Zeilen aus, um nginx auf Port 80 IPv4 und IPv6 hören zu lassen.
servername ; macht dies zu einem Standard-Catchall-vhost (natürlich können Sie hier auch einen Hostnamen wie www.example.com angeben).
Ich habe index.php zur Indexzeile hinzugefügt. root /usr/share/nginx/www; bedeutet, dass das Dokumentenverzeichnis das Verzeichnis /usr/share/nginx/www ist.
Der wichtige Teil für PHP ist die location ~ .php$ {}-Strophe. Kommentieren Sie sie aus, um sie zu aktivieren. Bitte beachten Sie, dass ich die Zeile try_files $uri =404; hinzugefügt habe, um Zero-Day-Exploits zu verhindern (siehe http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP und http://forum.nginx.org/read.php?2,88845,page=3).
Jetzt speichern Sie die Datei und laden nginx neu:
/etc/init.d/nginx reloadÖffnen Sie als Nächstes /etc/php5/fpm/php.ini…
vi /etc/php5/fpm/php.ini… und setzen Sie cgi.fix_pathinfo=0:
| [...] ; 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=0 [...] |
Laden Sie PHP-FPM neu:
/etc/init.d/php5-fpm reloadErstellen Sie nun die folgende PHP-Datei im Dokumentenverzeichnis /usr/share/nginx/www:
vi /usr/share/nginx/www/info.php| |
Rufen Sie diese Datei nun in einem Browser auf (z. B. http://192.168.0.100/info.php):

Wie Sie sehen, funktioniert PHP5, und es funktioniert über FPM/FastCGI, wie in der Server-API-Zeile angezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP5 aktiviert sind. MySQL ist dort nicht aufgeführt, was bedeutet, dass wir noch keine MySQL-Unterstützung in PHP5 haben.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.