PHP mit PHP-FPM auf Ubuntu 20.04 installieren und konfigurieren
PHP ist eine weit verbreitete serverseitige Skriptsprache, die zur Entwicklung dynamischer Webanwendungen eingesetzt wird. Mit PHP-FPM lässt sich die Performance steigern, da PHP-Prozesse effizienter verwaltet werden.
Diese Anleitung zeigt, wie man PHP und PHP-FPM auf Ubuntu 20.04 installiert und eine funktionierende PHP-Umgebung einrichtet.
Voraussetzungen
Bevor Sie beginnen, stellen Sie Folgendes sicher:
- Sie haben Zugriff auf einen Ubuntu 20.04 Server.
- Ein neuer A-Record für Ihre Domain verweist auf die IP-Adresse des Servers.
- Sie können sich per SSH als Nicht-Root-Benutzer mit Sudo-Rechten anmelden.
- Der Server ist auf dem neuesten Stand.
PHP installieren
PHP ist in den Standard-APT-Repositories von Ubuntu 20.04 verfügbar. Aktualisieren Sie die Serverpakete und installieren Sie die neueste PHP-Version.
Aktualisieren Sie den Paketindex:
$ sudo apt update
PHP installieren:
$ sudo apt install php -y
Die installierte PHP-Version überprüfen:
$ php -v
Beispielausgabe:
PHP 7.4.3-4ubuntu2.29 (cli) (built: Mar 25 2025 18:57:03) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3-4ubuntu2.29, Copyright (c), by Zend Technologies
PHP-Erweiterungen installieren
Erweiterungen erweitern die Funktionen von PHP, z. B. für Datenbankanbindungen, Verschlüsselung oder Bildbearbeitung. Viele Anwendungen und Frameworks benötigen sie.
Gängige Erweiterungen installieren:
$ sudo apt install -y php-mysql php-mbstring php-bcmath php-zip php-gd php-curl php-xml
Mit diesem Befehl werden folgende Erweiterungen installiert:
- php-mysql: Stellt die Verbindung zu MySQL-Datenbanken her.
- php-mbstring: Unterstützt UTF-8-Textverarbeitung.
- php-bcmath: Ermöglicht präzise mathematische Berechnungen.
- php-zip: Aktiviert den Umgang mit ZIP-Archiven.
- php-gd: Fügt Bildbearbeitungsfunktionen hinzu.
- php-curl: Unterstützt Datentransfer über URLs.
- php-xml: Bietet Funktionen zur XML-Verarbeitung.
Alle verfügbaren Erweiterungen auflisten:
$ sudo apt-cache search php | grep "^php7.4"
Installierte Erweiterungen anzeigen:
$ php -m
Beispielausgabe:
[PHP Modules] bcmath calendar Core ctype curl date dom exif FFI ..... [Zend Modules] Zend OPcache
PHP-FPM installieren und konfigurieren
PHP-FPM ist in den Ubuntu-Repositories enthalten und passt zur installierten PHP-Version. Installieren Sie es, um PHP-Anfragen effizient zu verarbeiten, und richten Sie es so ein, dass es beim Booten automatisch startet.
PHP-FPM installieren:
$ sudo apt install php-fpm -y
PHP-FPM-Version prüfen (für PHP 7.4):
$ php-fpm7.4 -v
Beispielausgabe:
PHP 7.4.3-4ubuntu2.29 (fpm-fcgi) (built: Mar 25 2025 18:57:03)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3-4ubuntu2.29, Copyright (c), by Zend Technologies
Den Inhalt des PHP-Konfigurationsverzeichnisses auflisten:
$ ls /etc/php/7.4/
Beispielausgabe:
apache2 cli fpm mods-available
Das Vorhandensein des fpm-Ordners bestätigt, dass PHP-FPM verfügbar ist und konfiguriert werden kann.
In das Pool-Konfigurationsverzeichnis wechseln:
$ cd /etc/php/7.4/fpm/pool.d/
Die Standard-Pool-Konfigurationsdatei bearbeiten:
$ sudo nano www.conf
Den Pool-Namen überprüfen:
[www]
User- und Group-Einstellungen prüfen:
user = www-data
group = www-data
Socket-Pfad kontrollieren:
listen = /run/php/php7.4-fpm.sock
Pool-Konfiguration anpassen:
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Erklärung der wichtigsten Direktiven:
pm: Legt den Prozess-Manager-Typ fest (static, dynamic, ondemand).pm.max_children: Definiert die maximale Anzahl an Kindprozessen.pm.start_servers,pm.min_spare_servers,pm.max_spare_servers: Steuern die Anzahl laufender und inaktiver Prozesse.pm.process_idle_timeout: Beendet inaktive Prozesse nach einer festgelegten Zeit.access.log: Protokolliert alle eingehenden Anfragen.slowlog&request_slowlog_timeout: Erfassen langsamer Anfragen zur Optimierung.
Speichern und schließen Sie die Datei, anschließend PHP-FPM neu starten, um die Änderungen zu übernehmen:
$ sudo systemctl restart php7.4-fpm
PHP und PHP-FPM testen
PHP ist für die Ausführung dynamischer Inhalte zuständig, während PHP-FPM die Verarbeitung optimiert und effizient steuert. Um die Funktionsfähigkeit zu prüfen, erstellen Sie eine Beispiel-PHP-Datei mit dem Nginx-Webserver.
Zum Home-Verzeichnis wechseln:
$ cd
Eine neue Datei sample.php erstellen:
$ nano sample.php
Folgenden Inhalt einfügen:
Datei speichern und schließen.
Das Skript mit der PHP-CLI ausführen:
$ php sample.php
Erwartete Ausgabe:
Greetings from centron! PHP is working correctly on this server
Damit ist bestätigt, dass PHP dynamische Dateien korrekt verarbeitet.
Nginx mit PHP-FPM konfigurieren
Installieren Sie Nginx, um die Integration mit PHP-FPM zu testen:
$ sudo apt install nginx -y
Standard-Virtual-Host-Config sichern:
$ sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.BAK
Neue Standardkonfiguration anlegen:
$ sudo nano /etc/nginx/sites-available/default
Konfiguration hinzufügen:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html/;
index index.html index.php index.nginx-debian.html;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
Diese Konfiguration lauscht auf Port 80, liefert Dateien aus /var/www/html aus und leitet PHP-Anfragen an den PHP-FPM-Socket weiter.
Konfiguration testen:
$ sudo nginx -t
Die Ausgabe sollte bestätigen, dass keine Syntaxfehler vorhanden sind.
Neue Datei /var/www/html/test.php erstellen:
$ sudo nano /var/www/html/test.php
Folgenden Inhalt einfügen:
Diese Datei zeigt die installierte PHP-Version und Konfigurationsdetails im Browser an.
Apache stoppen (falls aktiv), um Port 80 freizugeben:
$ sudo systemctl stop apache2
HTTP-Zugriff über UFW erlauben:
$ sudo ufw allow 80
Nginx neu starten:
$ sudo systemctl restart nginx
Im Browser aufrufen:
http://SERVER-IP/test.php
Mehrere PHP-Versionen installieren
Um weitere Versionen wie PHP 8.1 zu nutzen, fügen Sie das Repository ppa:ondrej/php hinzu.
PPA hinzufügen:
$ sudo add-apt-repository -y ppa:ondrej/php
PHP 8.1 und den zugehörigen FPM-Dienst installieren:
$ sudo apt install -y php8.1 php8.1-fpm
PHP 8.1-Version prüfen:
$ php8.1 -v
Beispielausgabe:
PHP 8.1.32 (cli) (built: Mar 13 2025 18:26:45) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.32, Copyright (c) Zend Technologies
with Zend OPcache v8.1.32, Copyright (c), by Zend Technologies
Status des PHP-FPM-Dienstes überprüfen:
$ sudo systemctl status php8.1-fpm
Die Ausgabe sollte bestätigen, dass der Dienst aktiv und in Betrieb ist.
Neues Webverzeichnis für PHP 8.1-Anwendungen anlegen:
$ sudo mkdir -p /var/www/php81-site
Testdatei kopieren und als index.php speichern:
$ sudo cp /var/www/html/test.php /var/www/php81-site/index.php
Neue Nginx-VHost-Datei erstellen:
$ sudo nano /etc/nginx/sites-available/php81-site.conf
Konfiguration einfügen:
server {
listen 9000;
listen [::]:9000;
root /var/www/php81-site;
index index.php index.html;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
Diese Konfiguration liefert Inhalte aus /var/www/php81-site über PHP 8.1-FPM und lauscht auf Port 9000.
Virtuellen Host aktivieren:
$ sudo ln -s /etc/nginx/sites-available/php81-site.conf /etc/nginx/sites-enabled/
Nginx-Konfiguration erneut testen:
$ sudo nginx -t
Port 9000 in der Firewall freigeben:
$ sudo ufw allow 9000/tcp
$ sudo ufw reload
Nginx neu starten:
$ sudo systemctl restart nginx
Im Browser öffnen:
http://SERVER-IP:9000
Daraufhin wird die PHP-8.1-Info-Seite angezeigt. Mit /test.php können Sie parallel prüfen, dass PHP 7.4 weiterhin unabhängig funktioniert.
Fazit
Sie haben erfolgreich PHP und PHP-FPM auf Ubuntu 20.04 eingerichtet. Mehrere PHP-Versionen stehen für unterschiedliche Projekte bereit und sind über Nginx sicher integriert, um dynamische Webinhalte performant zu verarbeiten.


