PHP: Was sind die Vorteile von FastCGI gegenüber mod_php?

30

Mir wurde kürzlich vorgeschlagen, FastCGI mit PHP zu verwenden. Jetzt bin ich auf die FastCGI-Seite gegangen und habe sie gelesen, aber ich verstehe die Vorteile nicht wirklich.

Cletus
quelle

Antworten:

37

Mit mod_php hat jeder Apache-Worker den gesamten PHP-Interpreter geladen. Da Apache pro eingehender Anforderung einen Worker-Prozess benötigt, sind schnell Hunderte von Apache-Workern im Einsatz, von denen jeder seinen eigenen PHP-Interpreter geladen hat und sehr viel Speicher benötigt.

(Beachten Sie, dass dies nicht genau der Fall ist. Mit Apache worker_mpmkönnen Sie viele Anfragen mit einem einzigen Apache-Worker mit Thread bearbeiten. Dies ist jedoch auch im Jahr 2009 nicht die empfohlene Methode zur Bereitstellung von PHP, da vermutete Threading-Probleme mit den PHP-Erweiterungen vorliegen.)

Die Verwendung von PHP im fast_cgi-Modus (die Verwendung von spawn-fcgi aus dem lighttpd-Paket) bietet die folgenden Vorteile

  • Passen Sie die Anzahl der PHP-Worker getrennt von der Anzahl der eingehenden Verbindungen an
  • Ermöglichen es Ihnen, Ihre PHP-Mitarbeiter auf einen anderen Server zu stellen oder auf mehrere Server zu skalieren, ohne die Webschicht zu ändern
  • bietet Ihnen die Flexibilität, einen anderen Webserver wie nginx oder lighttpd auszuwählen
  • Ermöglichen es Ihnen, Ihre PHP-Anwendung in einer anderen Sicherheitsdomäne auf Ihrem Webserver auszuführen
Dave Cheney
quelle
5

FastCGI bedeutet, dass die PHP-Bits im Gegensatz zu mod_php nicht im selben Prozess wie die Apache-Bits ausgeführt werden. Diese Trennung kann einige eindeutige Vorteile haben, wenn es darum geht, den Server neu zu starten oder mit außer Kontrolle geratenen Anwendungen umzugehen. Im Fall von mod_php bedeutet dies, dass der Apache-Prozess außer Kontrolle gerät Der gesamte Server muss nicht heruntergefahren werden.

pjz
quelle
4

Ein weiterer Vorteil, der noch nicht erwähnt wurde, ist die Tatsache, dass mit mod_fcgid(eine neuere Implementierung für die Verwendung von FastCGI unter Apache) und suexec Setups realisiert werden können, bei denen verschiedene vhosts verschiedene Linux-Benutzer zur Ausführung verwenden, was in einem gemeinsam genutzten Hosting-Szenario ein echter Sicherheitsvorteil sein kann .

Mit mod_php teilen sich alle vhosts denselben Benutzer, den Apache-Benutzer. Dies kann zu Sicherheitsproblemen führen.

Martin C.
quelle
Dies hängt vom MPM ab, der in diesem speziellen Apache-httpd-Setup verwendet wird. Beispielsweise ist es mit MPM-itk ( mpm-itk.sesse.net ) möglich, mod_php zu verwenden und die Skripte (oder besser: die httpd-Prozesse) im Kontext eines anderen Benutzers auszuführen.
Josefi