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

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

Sie 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

Geben Sie das Passwort für den MariaDB-Root-Benutzer ein.

Nginx installieren

Nginx ist als Paket für Debian Jessie verfügbar, das wir wie folgt installieren können:

apt-get -y install nginx

Starten Sie Nginx anschließend:

systemctl start nginx.service

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

Debian Nginx-Startseite.

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

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

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

Erstellen Sie jetzt die folgende PHP-Datei im Dokumentenstamm /var/www/html/:

nano /var/www/html/info.php

Jetzt rufen wir diese Datei in einem Browser auf (z. B. http://192.168.1.100/info.php):

PHP-Info.

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 php5

Wä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-xsl

APCu 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-apcu

Laden Sie jetzt PHP-FPM neu:

systemctl reload php5-fpm.service

Laden 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-Info mit MySQL.

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

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:

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

Virtuelle 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

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.