PHP-FPM: Der FastCGI Process Manager

Wenn ihr zum Abkapseln von PHP-Umgebungen auf euren Apache-Servern Lösungen wie fcgid in Kombination mit suexec verwendet, dann kann ich euch empfehlen, euch mal den FastCGI Process Manager anzugucken.

Etwas, das ich besonders zu schätzen weiß, ist, dass man im Gegensatz zur Lösung mit fcgid und suexec über die CGI-Schnittstelle von PHP bei FPM auch einzelne Werte aus der globalen PHP-Konfigurationsdatei in den einzelnen Pool-Konfigurationen überschreiben kann. So hat man eine Konfigurationsdatei und kann dann in den speziellen Pool-Konfigurationen dynamisch Einstellungen (zum Beispiel open_basedir) überschreiben und muss nicht jedes mal die komplette PHP-Konfigurationsdatei duplizieren.

Außerdem läuft der FastCGI Process Manager als Daemon und übernimmt auch die Rechteverwaltung. Das heißt, dass man in der Apache-Konfiguration kein suexec mehr braucht, sondern dass man den Benutzer und die Gruppe, unter der PHP ausgeführt werden soll, in den einzelnen Pool-Konfigurationsdateien festlegen kann. Für jeden einzelnen Pool wird dann ein UNIX-Domain-Socket angelegt, über das man dann in der Apache-Konfiguration mit dem Proxy-Modul proxy_fcgi kommunizieren kann:

<FilesMatch \.php$>
	SetHandler "proxy:unix:/var/run/php/<version>/hostname.tld.sock|fcgi://"
</FilesMatch>

Und wenn man später aus irgendeinem Grund auf Nginx umsteigt und PHP direkt über den Nginx ansprechen möchte, dann kann man das einfach tun, ohne die PHP-Konfiguration auch nur anzufassen oder den PHP-FPM-Daemon neu zu starten. Man spricht einfach das UNIX-Socket über Nginx anstatt Apache an. Wunderschön!

Der Autor

Hi. Ich bin Thomas. Hier veröffentliche ich in unregelmäßgen Abständen mehr oder weniger interessante Beiträge über Dies und Jenes, hauptsächlich über Computer und IT. Außerdem mag ich die Linux-Kommandozeile, vor allem wenn ich darauf mit (m)einer mechanischen Tastatur herumhacken kann. 😀