[Eisfair] [e64] APACHE2_MPM und php7?

Sebastian Scholze sebastian at eisfair.org
So Nov 14 21:43:19 CET 2021


Hallo,

Am 14.11.21 um 20:00 schrieb Detlef Paschke:
> Am 14.11.2021 um 19:49 schrieb Detlef Paschke:
>>
>> Wie schon angesprochen, Doku-Pflege ja selbst Changelog-Pflege gerät bei
>> Eisfair immer weiter ins Hintertreffen.

Du kannst Dich gerne hierbei einbringen!

> Ohne Suche nach der Fehlermeldung nach aktiviertem APACHE2_MPM auf
> "worker" oder "event" wüsste man noch nicht einmal, was php7-fpm
> überhaupt ist.

Naja, das steht ja selbst im Paketnamen: php7-fpm FastCGI Process Manager.

Zum Problem:
Schaue bitte einmal was "/etc/init.d/php7-fpm status" ausgibt. Es sollte 
eine Ausgabe wie folgt erscheinen:
"php7-fpm is running with Process ID(s) 32691 32523 32522 32521."

Zum Hintergrund:
PHP als Apache2 Modul kann nur mit dem worker "prefork" funktionieren.
Nur bei diesem MPM kümmert sich Apache um das Laden der Module (inkl. PHP).

HTTP/2 funktioniert mit dem MPM prefork nur "eingeschränkt". Aus diesem 
Grund habe ich mich damals dazu entschieden es bei dem eisfair Paket nur 
mit den MPMs event und worker zu ermöglichen (siehe auch hier für mehr 
Infos: [1]

Wenn ich unter eisfair nun HTTP/2 (und damit die MPM event oder worker) 
und PHP nutzen möchte, muss ich eine Alternative zum apache php Modul 
haben (apache2_php7) und dies ist FPM (php7-fpm).

Was muss ich nun konfigurieren?
-apache2_php7 deaktivieren (START_PHP7='no')
-apache auf MPM event umstellen (APACHE2_MPM='event')
-HTTP/2 aktivieren (APACHE2_ENABLE_HTTP2='yes')
-php7-fpm aktivieren (START_PHP7_FPM='yes')

Was nun im Hintergrund passiert:
-Sobald die Konfiguration von php7-fpm aktiviert wird, wird die Datei 
"/etc/apache2/mods-available/php7-fpm.conf" angelegt und es wird ein 
symlink in dem Ordner "/etc/apache2/mods-enabled/" für diese Datei 
erzeugt. Hierdurch liest apache2 beim nächsten Neustart die 
Konfigurationsdatei ein und leitet alle Zugriffe auf php Dateien 
(Dateiendung .php?" an FPM weiter.

-FPM kümmert sich um die Abarbeitung der PHP Dateien und liefer das 
Ergebnis an apache2 zurück, der wiederum die Seite ausliefert.

-Läuft FPM nicht, zeigt apache2 folgende Fehlermeldung: "503 Service 
Unavailable".

-Zeigt Apache2 den Inhalt der PHP Dateien an, dann ist Apache2 nicht so 
konfiguriert, dass er die PHP Dateien an einen PHP Interpreter (in 
diesem Fall FPM) weiterleitet. Apache2 behandelt die PHP Dateien dann 
einfach wie Textdateien.

Was Du noch auf die Schnelle prüfen kannst:
-ls -l /etc/apache2/mods-enabled/php7-fpm.conf
lrwxrwxrwx 1 root root 41 Nov  3 12:08 
/etc/apache2/mods-enabled/php7-fpm.conf -> 
/etc/apache2/mods-available/php7-fpm.conf

-/etc/init.d/php7-fpm status
php7-fpm is running with Process ID(s) 21121 21120 21119.


Sebastian

[1] https://httpd.apache.org/docs/trunk/howto/http2.html#mpm-config


Mehr Informationen über die Mailingliste Eisfair