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-client

Sie 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 nginx

Starten Sie nginx anschließend:

/etc/init.d/nginx start

Geben 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-fpm

PHP-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.conf

Die 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 reload

Erstellen 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.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.