Site icon bintorosoft.com

Multi-Pool PHP-FPM: Isolation pro Tenant/Domain ohne Overhead

In modernen Webhosting-Umgebungen ist Multi-Tenant-Betrieb ein häufiges Szenario, bei dem mehrere Websites oder Anwendungen auf demselben Server gehostet werden. PHP-FPM bietet die Möglichkeit, für jeden Tenant bzw. jede Domain einen eigenen Pool zu konfigurieren. Dies ermöglicht eine strikte Isolation, verbesserte Sicherheit und gezieltes Resource Management, ohne den Overhead einzelner Serverprozesse unnötig zu erhöhen. In diesem Artikel betrachten wir, wie Multi-Pool PHP-FPM professionell eingerichtet und optimiert wird.

Warum Multi-Pool PHP-FPM?

Die klassische PHP-FPM-Konfiguration mit einem globalen Pool ist für einfache Setups ausreichend. Bei Multi-Tenant-Umgebungen treten jedoch folgende Probleme auf:

Multi-Pool PHP-FPM löst diese Probleme durch Isolation auf Benutzer- und Prozess-Ebene.

Grundprinzipien der Pool-Isolation

Jeder Pool läuft unter einem eigenen Unix-Benutzer und einer eigenen Gruppe. Dies ermöglicht:

Beispiel-Architektur

Pool-Konfiguration Schritt für Schritt

Die Konfiguration erfolgt typischerweise in /etc/php/8.1/fpm/pool.d/ oder vergleichbaren Pfaden.

Pool für Tenant A

[siteA]
user = siteA
group = siteA
listen = /run/php/php8.1-siteA.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php_admin_value[open_basedir] = /var/www/siteA:/tmp
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen,eval,assert
php_admin_value[memory_limit] = 128M
php_admin_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php-fpm-siteA.log

Pool für Tenant B

[siteB]
user = siteB
group = siteB
listen = /run/php/php8.1-siteB.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 15
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
php_admin_value[open_basedir] = /var/www/siteB:/tmp
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen,eval,assert
php_admin_value[memory_limit] = 256M
php_admin_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php-fpm-siteB.log

Performance-Optimierung

Multi-Pool-Betrieb kann Ressourcen intensiv nutzen, wenn nicht richtig dimensioniert:

Max Children und Queueing

Socket-Typen

Sicherheit und Isolation

Die strikte Trennung der Pools reduziert Sicherheitsrisiken erheblich.

Dateisystemzugriff

Funktionseinschränkungen

Logging und Debugging

Integration mit Webserver

Webserver müssen die richtigen Pools ansprechen. In Nginx:

server {
    server_name siteA.example.com;
    root /var/www/siteA;
location ~ .php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-siteA.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

}

Für Tenant B analog, einfach den Pool-Socket und das Root-Verzeichnis anpassen.

Monitoring und Wartung

Fazit

Multi-Pool PHP-FPM ermöglicht sichere, performante und skalierbare Multi-Tenant-Umgebungen. Durch Benutzer-Isolation, getrennte Resource-Limits und individuelles Logging wird jeder Tenant geschützt, ohne den Betrieb anderer Websites zu gefährden. Mit sorgfältiger Konfiguration und Monitoring lassen sich Tenants effizient betreiben und gleichzeitig Sicherheitsrisiken minimieren.

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