Was sind die Vor- und Nachteile von PHP als Apache-Modul oder FastCGI?


7

Mein VPS bietet mir die Möglichkeit, PHP als Apache-Modul oder als FastCGI auszuführen.

Wie soll man diese Entscheidung treffen? Performance? Sicherheit? Benutzerfreundlichkeit? Kompatibilität?

Ich benutze PLESK.


2
Ist dies besser für ServerFault oder für StackOverflow geeignet?
Nute

1
Bitte nicht schließen. Wenn Sie der Meinung sind, dass es übertragen werden sollte, tun Sie dies, aber schließen Sie es nicht. Es ist keine offene Frage.
Nute

Beide engen Stimmen, die Sie sehen können, sind tatsächlich Stimmen, die an Webmaster übertragen werden sollen (sie erscheinen unter dem Dach "schließen"). Möglicherweise können Sie diese Frage schneller löschen und bei Webmastern eine neue erstellen. Es wird Ihrem Repräsentanten nicht schaden, wenn Sie dies tun, und wenn Sie dies nicht tun, müssen Sie entweder warten, bis ein Mod hier ankommt, oder warten, bis 5 Personen abstimmen ...
DaveRandom

Für alle anderen, die durch den obigen Kommentar von @ DaveRandom kurz verwirrt sind, beachten Sie bitte, dass er veröffentlicht wurde, bevor diese Frage von SO hierher migriert wurde und bevor sie Antworten hatte.
Ilmari Karonen

Antworten:


4

Durch die Verknüpfung von PHP als Apache HTTPD-Modul sind sie untrennbar miteinander verbunden.

Dies ist nicht ohne Probleme:

In der Tat sind viele PHP- Bibliotheken nicht threadsicher. Daher ist es wichtig , das Prefork-MPM- Modul für HTTPD 2.x in der Produktion zu verwenden, um einen nicht-Threaded-Pre-Forking-Webserver zu implementieren, der Anforderungen auf ähnliche Weise wie HTTPD 1.3 verarbeitet .

Dieser Ansatz wirkt sich jedoch stark auf die Leistung aus, was die CPU und den RAM überlasten und Zeitüberschreitungen und andere Probleme verursachen kann.

Auf der Handbuchseite Apache Performance Tuning erfahren Sie etwas mehr über die Vor- und Nachteile:

Das Prefork- MPM verwendet mehrere untergeordnete Prozesse mit jeweils einem Thread. Jeder Prozess verarbeitet jeweils eine Verbindung. Auf vielen Systemen ist Prefork in der Geschwindigkeit mit Worker vergleichbar, benötigt jedoch mehr Speicher. Das Threadless-Design von Prefork bietet in einigen Situationen Vorteile gegenüber Worker: Es kann mit nicht threadsicheren Modulen von Drittanbietern verwendet werden und ist auf Plattformen mit schlechter Thread-Debugging-Unterstützung einfacher zu debuggen.

Daher ist meiner Meinung nach PHP mit FastCGI besser für die Produktion geeignet.

Außerdem bevorzuge ich mod_fastcgi anstelle von mod_fcgid, da es mehr Funktionen bietet, beispielsweise die Möglichkeit, einen externen Prozessmanager zu definieren.

Auf jeden Fall wird das Prefork-MPM- Modul nicht mehr benötigt , und es wird endlich möglich sein, das Worker-MPM- Modul weiterzugeben , was viel effektiver ist. mit der Ausnahme, dass der Verwaltungsprozess über ein Shell-Skript abgewickelt wird, um die ausführbare Datei php-cgi zu starten , was nicht sehr praktisch ist.

Glücklicherweise können wir den FastCGI Process Manager für PHP ( PHP-FPM ) verwenden , einen beliebten Patch , der seit PHP 5.3.3 nativ integriert ist . Wenn Sie PHP 5.2.x verwenden , sind Sie leider auf das klassische FastCGI beschränkt .

Dennoch ist es wichtig , sich der möglichen Schwachstellen durch die CGI - Modus beteiligt zu sein , wie auf den manuellen Seite gemeldet CGI und Kommandozeilen - Setups :

Warnung
Ein im CGI-Modus bereitgestellter Server ist mehreren möglichen Sicherheitslücken ausgesetzt. Bitte lesen Sie unseren Abschnitt zur CGI-Sicherheit , um zu erfahren, wie Sie sich vor solchen Angriffen schützen können.

Sie können sich diesen Blog-Beitrag ansehen, der ein Beispiel für die praktische Anwendung enthält und der beim Schreiben dieser Antwort eine große Hilfe war:

PHP, FastCGI, Fpm und Apache (Französisch)
PHP, FastCGI und Apache Fpm (Englisch mit Google Translate)


1

Nein, es ist tatsächlich etwas komplizierter. Soweit ich die Frage verstanden habe, lädt Apache beim Behandeln einer Anfrage die gesamte PHP-Bibliothek (im Fall von PHP als Apache-Modul). Auch bei der Ausführung einer statischen Ressourcenanforderung. Es verbraucht also viel Speicher.

Die andere Lösung ist ein leichter Front-http-Server. Es führt eine statische Anfrage aus und leitet eine PHP-Anfrage an das PHP-CGI weiter.

Um dies fortzusetzen:

  • Apache PHP-Modul: Einfach, leicht, Standard, zu 90% zu verwenden.
  • PHP-CGI: Performant, wenn viele statische Ressourcen (Bilder, Bilder usw.) vorhanden sind. Etwas komplizierter zu konfigurieren, zu warten.

-1

PHP mit der Option FAST CGI läuft genauso schnell wie unter LINUX OS. Microsoft hat in IIS7 für PHP viele Verbesserungen vorgenommen, um den Hosting-Markt für OPEN SOURCE SCRIPT (WordPress, Drupal, Joomla usw.) abzudecken.

Ich hoste meine PHP-Anwendungen auf IIS7 mit FastCGI und führe WordPress genauso reibungslos aus wie unter Linux Hosting. Ich muss nur meine PHP-Dateien in das Verzeichnis public_html hochladen, um meine PHP-Anwendungen auszuführen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.