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.
Passende Infrastruktur bei centron
Ubuntu-Server ohne eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
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 updatePHP installieren:
$ sudo apt install php -yDie installierte PHP-Version überprüfen:
$ php -vBeispielausgabe:
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-xmlMit 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 -mBeispielausgabe:
[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 -yPHP-FPM-Version prüfen (für PHP 7.4):
$ php-fpm7.4 -vBeispielausgabe:
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.confDen Pool-Namen überprüfen:
[www]User- und Group-Einstellungen prüfen:
user = www-data
group = www-dataSocket-Pfad kontrollieren:
listen = /run/php/php7.4-fpm.sockPool-Konfiguration anpassen:
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3Erklä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-fpmPHP 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:
$ cdEine neue Datei sample.php erstellen:
$ nano sample.phpFolgenden Inhalt einfügen:
<!--?php echo "Greetings from centron! PHP is working correctly on this server"; ?-->Datei speichern und schließen.
Das Skript mit der PHP-CLI ausführen:
$ php sample.phpErwartete 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 -yStandard-Virtual-Host-Config sichern:
$ sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.BAKNeue Standardkonfiguration anlegen:
$ sudo nano /etc/nginx/sites-available/defaultKonfiguration 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 -tDie Ausgabe sollte bestätigen, dass keine Syntaxfehler vorhanden sind.
Neue Datei /var/www/html/test.php erstellen:
$ sudo nano /var/www/html/test.phpFolgenden Inhalt einfügen:
<!--?php phpinfo(); ?-->Diese Datei zeigt die installierte PHP-Version und Konfigurationsdetails im Browser an.
Apache stoppen (falls aktiv), um Port 80 freizugeben:
$ sudo systemctl stop apache2HTTP-Zugriff über UFW erlauben:
$ sudo ufw allow 80Nginx neu starten:
$ sudo systemctl restart nginxIm 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/phpPHP 8.1 und den zugehörigen FPM-Dienst installieren:
$ sudo apt install -y php8.1 php8.1-fpmPHP 8.1-Version prüfen:
$ php8.1 -vBeispielausgabe:
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-fpmDie 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-siteTestdatei kopieren und als index.php speichern:
$ sudo cp /var/www/html/test.php /var/www/php81-site/index.phpNeue Nginx-VHost-Datei erstellen:
$ sudo nano /etc/nginx/sites-available/php81-site.confKonfiguration 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 -tPort 9000 in der Firewall freigeben:
$ sudo ufw allow 9000/tcp
$ sudo ufw reloadNginx neu starten:
$ sudo systemctl restart nginxIm 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.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.