Site icon bintorosoft.com

PHP-FPM Pools einrichten: Isolation pro Website/Projekt

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.

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

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 combined

PHP-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 apache2

Mit einer info.php-Datei kann überprüft werden, welcher Pool aktiv ist:

echo "<?php phpinfo(); ?>" > /var/www/meineseite/info.php

OPcache 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] = 1

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

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:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version