Webserver Installation · 6 min read · Jan 05, 2026
Installation von Nginx mit PHP (als PHP-FPM) und MariaDB (LEMP) auf Debian 8
Dieses Tutorial zeigt Ihnen die Installation des Nginx-Webservers auf Debian 8. Nginx (ausgesprochen “engine x”) ist ein kostenloser, Open-Source, leistungsstarker HTTP-Server. Nginx ist bekannt für seine Stabilität, seinen reichen Funktionsumfang, seine einfache Konfiguration und seinen geringen Ressourcenverbrauch. Dieses Tutorial zeigt, wie Sie Nginx mit PHP-Unterstützung (über PHP-FPM) und MariaDB als MySQL-Drop-in-Ersatz installieren können. Diese Konfiguration wird oft als LEMP bezeichnet = L inux + nginx (ausgesprochen “ e ngine x”) + M ySQL + P HP).
Vorbemerkung
In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen. Sie sollten einen Debian 8-Server haben, ich werde den minimalen Debian-Server als Basissystem für dieses Tutorial verwenden.
System aktualisieren
Es wird empfohlen, die Paketlisten zu aktualisieren und alle ausstehenden Updates zu installieren, bevor wir mit der Nginx-Installation beginnen. Führen Sie die folgenden Befehle aus, um alle ausstehenden Updates zu installieren.
apt-get update
apt-get upgrade -yIch werde später den Nano-Editor verwenden, um Konfigurationsdateien zu bearbeiten. Nano kann mit folgendem Befehl installiert werden:
apt-get -y install nano MariaDB installieren (als MySQL-Drop-in-Ersatz)
Um MariaDB zu installieren, führen wir aus:
apt-get -y install mariadb-server mariadb-clientSie werden aufgefordert, ein Passwort für den MariaDB-Root-Benutzer anzugeben - dieses Passwort gilt für den Benutzer root@localhost sowie für [email protected], sodass wir später kein MariaDB-Root-Passwort manuell angeben müssen:
Neues Passwort für den MariaDB “root”-Benutzer: <– yourrootsqlpassword
Wiederholen Sie das Passwort für den MariaDB “root”-Benutzer: <– yourrootsqlpassword

Nginx installieren
Nginx ist als Paket für Debian Jessie verfügbar, das wir wie folgt installieren können:
apt-get -y install nginxStarten Sie Nginx anschließend:
systemctl start nginx.serviceGeben Sie die IP-Adresse oder den Hostnamen Ihres Webservers in einen Browser ein (z. B. http://192.168.1.100), und Sie sollten die folgende Seite sehen:

Das Standard-Nginx-Dokumentenstammverzeichnis auf Debian 8 ist /var/www/html.
PHP installieren
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, insbesondere für stärker frequentierte Websites, nützlich sind), die wir wie folgt installieren:
apt-get -y install php5-fpmPHP-FPM ist ein Daemon-Prozess (mit der systemd-Einheit php5-fpm.service), der einen FastCGI-Server auf dem Socket /var/run/php5-fpm.sock ausführt.
Nginx konfigurieren
Die Nginx-Konfiguration befindet sich in /etc/nginx/nginx.conf, die wir jetzt öffnen:
nano /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)
Setzen Sie zuerst den keepalive_timeout auf einen angemessenen Wert wie 2 Sekunden:
[...]
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:
nano /etc/nginx/sites-available/default[...]
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL-Konfiguration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Selbstsignierte Zertifikate, die vom ssl-cert-Paket generiert wurden
# Verwenden Sie sie nicht auf einem Produktionsserver!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Fügen Sie index.php zur Liste hinzu, wenn Sie PHP verwenden
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# Zuerst versuchen, die Anfrage als Datei zu bedienen, dann
# als Verzeichnis, dann zurückfallen auf die Anzeige eines 404.
try_files $uri $uri/ =404;
}
# Übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 hört
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # Mit php5-cgi allein:
# fastcgi_pass 127.0.0.1:9000;
# Mit php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# Zugriff auf .htaccess-Dateien verweigern, wenn das Dokumentenstammverzeichnis von Apache
# mit dem von nginx übereinstimmt
#
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).
Ich habe index.php zur Indexzeile hinzugefügt. root /var/www/html; bedeutet, dass das Dokumentenstammverzeichnis das Verzeichnis /var/www/html ist.
Der wichtige Teil für PHP ist die location ~ .php$ {}-Strophe. Kommentieren Sie es wie oben gezeigt aus, um es zu aktivieren.
Jetzt speichern Sie die Datei und laden Nginx neu:
systemctl reload nginx.serviceÖffnen Sie als Nächstes /etc/php5/fpm/php.ini…
nano /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. Eine Einstellung
; von null bewirkt, dass PHP sich wie zuvor verhält. Standard ist 1. Sie sollten Ihre Skripte
; so ändern, dass sie SCRIPT_FILENAME anstelle von PATH_TRANSLATED verwenden.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...] Laden Sie PHP-FPM neu:
systemctl reload php5-fpm.serviceErstellen Sie jetzt die folgende PHP-Datei im Dokumentenstamm /var/www/html/:
nano /var/www/html/info.phpJetzt rufen wir diese Datei in einem Browser auf (z. B. http://192.168.1.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 MariaDB / MySQL-Unterstützung in PHP haben.
MySQL / MariaDB-Unterstützung in PHP erhalten
Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php5-mysqlnd installieren. Es ist eine gute Idee, auch einige andere PHP-Module zu installieren, da Sie diese möglicherweise für Ihre Anwendungen benötigen. Sie können nach verfügbaren PHP-Modulen wie folgt suchen:
apt-cache search php5Wählen Sie die benötigten aus und installieren Sie sie wie folgt:
apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xslAPCu ist ein kostenloser und offener PHP-Opcode-Cache für das Caching und die Optimierung von PHP-Zwischencode, der den PHP-Opcode-Cache erweitert. Es ersetzt den APC-Cache und ist ähnlich wie andere PHP-Opcode-Cache, wie eAccelerator und Xcache. Es wird dringend empfohlen, eines dieser Module zu installieren, um Ihre PHP-Seite zu beschleunigen.
APCu kann wie folgt installiert werden:
apt-get install php5-apcuLaden Sie jetzt PHP-FPM neu:
systemctl reload php5-fpm.serviceLaden Sie jetzt http://192.168.1.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:

PHP-FPM dazu bringen, eine TCP-Verbindung zu verwenden (optional)
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…
nano /etc/php5/fpm/pool.d/www.conf… und lassen Sie die Listenzeile 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:
systemctl reload php5-fpm.serviceGehen 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:
nano /etc/nginx/sites-available/default[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # Mit php5-cgi allein:
# fastcgi_pass 127.0.0.1:9000;
# # Mit php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
}
[...] Laden Sie schließlich Nginx neu:
systemctl reload nginx.serviceVirtuelle Maschinen-Image
Dieses Tutorial ist als einsatzbereite virtuelle Maschine im OVA / OVF-Format für Howtoforge-Abonnenten verfügbar. Das VM-Format ist mit VMWare und Virtualbox sowie wahrscheinlich einigen anderen Tools kompatibel, die dieses Format importieren können. Den Download-Link finden Sie im rechten Menü oben. Klicken Sie auf den Dateinamen, um den Download zu starten.
Die Anmeldedaten der VM sind:
SSH-Anmeldung
Benutzername: root
Passwort: howtoforge
MariaDB-Anmeldung
Benutzername: root
Passwort: howtoforge
Bitte ändern Sie die Passwörter nach dem ersten Boot.
Die VM ist für die statische IP 192.168.1.100 konfiguriert, die IP kann in der Datei /etc/network/interfaces geändert werden.
Links
- nginx: http://nginx.net/
- nginx Wiki: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MariaDB: https://mariadb.org/
- Debian: http://www.debian.org/
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.