PHP-FPM Pools ermöglichen die Isolation einzelner Websites oder Projekte auf einem Server. Durch separate Pools erhält jede Anwendung eigene Ressourcen, Benutzerrechte und OPcache-Einstellungen, wodurch Stabilität, Sicherheit und Performance verbessert werden. Dieser Leitfaden richtet sich an Einsteiger, IT-Studierende und Junior Network Engineers und zeigt, wie PHP-FPM Pools eingerichtet, konfiguriert und getestet werden.
Grundlagen von PHP-FPM Pools
PHP-FPM (FastCGI Process Manager) verwaltet PHP-Prozesse effizient. Pools erlauben, mehrere PHP-Versionen oder Projekte auf einem Server zu betreiben, ohne dass sich Anwendungen gegenseitig beeinflussen.
- Jeder Pool kann einen eigenen Benutzer und Gruppe haben
- Ressourcen wie Memory-Limit und max-children lassen sich individuell einstellen
- OPcache kann pro Pool konfiguriert werden
- Logs pro Pool ermöglichen bessere Überwachung
PHP-FPM Pool anlegen
Die Pool-Konfiguration erfolgt in /etc/php/7.4/fpm/pool.d/ für Ubuntu/Debian. Jede Website erhält eine eigene .conf-Datei.
Beispiel: Website “meineseite”
sudo nano /etc/php/7.4/fpm/pool.d/meineseite.conf
[meineseite]
user = www-data
group = www-data
listen = /run/php/php7.4-fpm-meineseite.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
php_admin_value[memory_limit] = 256M
php_admin_value[max_execution_time] = 60
php_admin_flag[display_errors] = off
access.log = /var/log/php7.4-fpm/meineseite_access.log
slowlog = /var/log/php7.4-fpm/meineseite_slow.log
request_slowlog_timeout = 5s
Parameter im Detail
Benutzer und Gruppe
Jeder Pool sollte unter einem dedizierten Benutzer laufen. www-data ist üblich für Webserver, kann aber für mehr Isolation angepasst werden.
listen
Definiert den Socket oder Port, über den der Webserver den Pool anspricht. Sockets sind performanter als TCP-Ports auf demselben Server.
Process Management
pm = dynamic: Prozesse werden nach Bedarf erzeugt und beendetpm.max_children: maximale Anzahl an PHP-Prozessenpm.start_servers,pm.min_spare_servers,pm.max_spare_servers: Steuerung des Prozess-Pools
PHP-Einstellungen pro Pool
Memory-Limits, max_execution_time und andere Einstellungen lassen sich pro Pool anpassen, um Ressourcen optimal zu verteilen.
Logs
Separate Access- und Slow-Logs erleichtern das Monitoring und Debugging einzelner Websites.
Webserver anpassen
Der Webserver muss den Pool ansprechen. Beispiele für Nginx und Apache:
Nginx
server { listen 80; server_name meineseite.de;root /var/www/meineseite;
index index.php index.html;
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm-meineseite.sock;
}
access_log /var/log/nginx/meineseite_access.log;
error_log /var/log/nginx/meineseite_error.log;}
Apache
<VirtualHost *:80> ServerName meineseite.de DocumentRoot /var/www/meineseite<FilesMatch .php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm-meineseite.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/meineseite_error.log
CustomLog ${APACHE_LOG_DIR}/meineseite_access.log combinedPHP-FPM Pool aktivieren und testen
sudo systemctl restart php7.4-fpm sudo systemctl status php7.4-fpm sudo nginx -t && sudo systemctl reload nginx sudo apache2ctl configtest && sudo systemctl reload apache2Mit einer
info.php-Datei kann überprüft werden, welcher Pool aktiv ist:echo "<?php phpinfo(); ?>" > /var/www/meineseite/info.phpOPcache und Pool-Isolation
OPcache kann pro Pool aktiviert werden, sodass jede Website ihren eigenen Cache bekommt. Dies verhindert Konflikte zwischen verschiedenen Projekten.
php_admin_value[opcache.enable] = 1 php_admin_value[opcache.memory_consumption] = 128 php_admin_value[opcache.max_accelerated_files] = 10000 php_admin_flag[opcache.validate_timestamps] = 1Netzwerk- und Subnetzüberlegungen
Bei mehreren PHP-FPM Pools und Webservern in Load-Balanced-Umgebungen ist eine saubere IP- und Subnetzplanung wichtig.
IPv4 Subnetz
<math> Server-IP = 192.168.170.10/24 Subnetzadresse = 192.168.170.10 & 255.255.255.0 = 192.168.170.0 Broadcastadresse = 192.168.170.0 | ~255.255.255.0 = 192.168.170.255 </math>IPv6 Subnetz
<math> Server-IP = 2001:db8:abcd:170::10/64 Subnetzadresse = 2001:db8:abcd:170:: & ffff:ffff:ffff:ffff:: = 2001:db8:abcd:170::0 Broadcastadresse = 2001:db8:abcd:170:ffff:ffff:ffff:ffff </math>Best Practices
- Jede Website / jedes Projekt in einem eigenen FPM-Pool
- Dedizierte Benutzer und Gruppen für jeden Pool
- Memory- und Prozesslimits pro Pool anpassen
- OPcache pro Pool konfigurieren
- Separate Logs für bessere Überwachung und Debugging
- Webserver korrekt auf Socket oder Port des Pools verweisen
- Testing der Pools mit
phpinfo()oder CLI - Regelmäßige Updates von PHP-FPM und Modulen
- Deployment-Workflows auf Pool-Konfiguration abstimmen
- Monitoring der CPU- und RAM-Auslastung pro Pool einrichten
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

