Server Installation · 6 min read · Jan 23, 2026
Installation von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung (LEMP) auf Ubuntu 14.04 LTS
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 Ubuntu 14.04-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.
Ich führe alle Schritte in diesem Tutorial mit Root-Rechten aus, stellen Sie also sicher, dass Sie als Root angemeldet sind:
sudo su
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 ist sowohl für den Benutzer root@localhost als auch für [email protected] gültig, 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 Ubuntu 14.04 verfügbar, das wir installieren können. Da Apache2 standardmäßig installiert ist, werden wir es zuerst entfernen und dann nginx installieren:
service apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2
apt-get install nginx
Starten Sie nginx anschließend:
service 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-Nginx-Dokumentenstammverzeichnis unter Ubuntu 14.04 ist /usr/share/nginx/html.
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 beschäftigte Websites), die wir wie folgt installieren:
apt-get install php5-fpm
PHP-FPM ist ein Daemon-Prozess (mit dem Init-Skript 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 [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; # Machen Sie die Seite über http://localhost/ zugänglich server_name _; 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/html; } # leiten Sie die PHP-Skripte an den FastCGI-Server weiter, 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 Dokumentenstammverzeichnis von Apache # mit dem von nginx übereinstimmt # location ~ /\.ht { deny all; } } [...] |
Kommentieren Sie beide listen-Zeilen aus, um nginx dazu zu bringen, auf Port 80 IPv4 und IPv6 zu hören.
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/html; bedeutet, dass das Dokumentenstammverzeichnis das Verzeichnis /usr/share/nginx/html ist.
Der wichtige Teil für PHP ist die location ~ .php$ {} Stanza. Kommentieren Sie es aus, um es 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:
service 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 ; dieser 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:
service php5-fpm reload
Erstellen Sie jetzt die folgende PHP-Datei im Dokumentenstamm /usr/share/nginx/html:
vi /usr/share/nginx/html/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 FPM/FastCGI, wie in der Zeile Server-API 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.
6 MySQL-Unterstützung in PHP5 erhalten
Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php5-mysql installieren. Es ist eine gute Idee, auch einige andere PHP5-Module zu installieren, da Sie diese möglicherweise für Ihre Anwendungen benötigen. Sie können nach verfügbaren PHP5-Modulen wie folgt suchen:
apt-cache search php5
Wählen Sie die benötigten aus und installieren Sie sie wie folgt:
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
APC ist ein kostenloser und offener PHP-Opcode-Cache zur Zwischenspeicherung und Optimierung von PHP-Zwischencode. Es ist ähnlich wie andere PHP-Opcode-Cache, wie eAccelerator und Xcache. Es wird dringend empfohlen, eines dieser Programme zu installieren, um Ihre PHP-Seite zu beschleunigen.
APC kann wie folgt installiert werden:
apt-get install php-apc
Laden Sie jetzt PHP-FPM neu:
service php5-fpm reload
Laden Sie jetzt http://192.168.0.100/info.php in Ihrem Browser neu und scrollen Sie wieder zum Abschnitt Module. Sie sollten jetzt viele neue Module dort finden, einschließlich des MySQL-Moduls:
7 PHP-FPM dazu bringen, eine TCP-Verbindung zu verwenden
Standardmäßig hört PHP-FPM auf dem Socket /var/run/php5-fpm.sock. Es ist auch möglich, PHP-FPM eine TCP-Verbindung verwenden zu lassen. Öffnen Sie dazu /etc/php5/fpm/pool.d/www.conf…
vi /etc/php5/fpm/pool.d/www.conf
… und lassen Sie die listen-Zeile wie folgt aussehen:
| [...] ;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000 [...] |
Dies bewirkt, dass PHP-FPM auf Port 9000 auf der IP 127.0.0.1 (localhost) hört. Stellen Sie sicher, dass Sie einen Port verwenden, der auf Ihrem System nicht verwendet wird.
Laden Sie dann PHP-FPM neu:
php5-fpm reload
Gehen Sie als Nächstes durch Ihre nginx-Konfiguration und alle Ihre vhosts und ändern Sie die Zeile fastcgi_pass unix:/var/run/php5-fpm.sock; in fastcgi_pass 127.0.0.1:9000;, z. B. so:
vi /etc/nginx/sites-available/default
| [...] 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; } [...] |
Laden Sie schließlich nginx neu:
service nginx reload
8 CGI/Perl-Skripte
Wenn Sie CGI/Perl-Skripte mit nginx bereitstellen möchten, lesen Sie bitte dieses Tutorial: Bereitstellung von CGI-Skripten mit Nginx auf Debian Squeeze/Ubuntu 11.04
Der empfohlene Weg ist die Verwendung von fcgiwrap (Kapitel 4).
9 Links
- nginx: http://nginx.net/
- nginx Wiki: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Ubuntu: http://www.ubuntu.com/
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.