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

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.