Ich wollte Sie nach den bekannten PHP / Apache-Konfigurationsmethoden und deren Vor- und Nachteilen fragen. Ich werde mich selbst beginnen:
---------------- PHP als Apache-Modul ----------------
Vorteile : Gute Geschwindigkeit, da Sie nicht jedes Mal exe starten müssen, insbesondere im MPM-Worker- Modus. In diesem Modus können Sie auch verschiedene PHP-Beschleuniger wie APC oder eAccelerator verwenden.
Nachteile : Wenn Sie Apache im MPM-Worker-Modus ausführen, können Stabilitätsprobleme auftreten, da jeder Fehler in einem PHP-Skript zu einer Instabilität des gesamten Thread-Pools dieses Apache-Prozesses führt. Auch in diesem Modus werden alle Skripte im Auftrag des Apache-Benutzers ausgeführt. Das ist schlecht für die Sicherheit. Für die Konfiguration von mpm-worker muss PHP im thread-sicheren Modus kompiliert werden. Zumindest die Standard-Repositorys von CentOS und RedHat verfügen nicht über eine thread-sichere PHP-Version. Unter diesen Betriebssystemen müssen Sie mindestens PHP selbst kompilieren (es gibt eine Möglichkeit, Worker-MPM unter Apache zu aktivieren). Die Verwendung von thread-sicheren PHP-Binärdateien wird als experimentell und instabil angesehen. Außerdem unterstützen viele PHP-Erweiterungen den thread-sicheren Modus nicht oder wurden im thread-sicheren Modus nicht gut getestet.
---------------- PHP als CGI ----------------
Dies scheint die langsamste Standardkonfiguration zu sein, die selbst ein "Betrug" zu sein scheint;)
---------------- PHP als CGI über mod_suphp ----------------
Pros : suphp können Sie PHP - Scripte im Namen der Skriptdatei Besitzer auszuführen. Auf diese Weise können Sie verschiedene Standorte auf demselben Computer sicher trennen. Außerdem ermöglicht suphp die Verwendung unterschiedlicher php.ini-Dateien pro virtuellem Host.
Nachteile : PHP im CGI-Modus bedeutet weniger Leistung. In diesem Modus können Sie keine PHP-Beschleuniger wie APC verwenden, da jedes Mal, wenn ein neuer Prozess erzeugt wird, das Skript den Cache des vorherigen Prozesses unbrauchbar macht. Übrigens, kennen Sie die Möglichkeit, einen Beschleuniger in dieser Konfiguration anzuwenden? Ich habe etwas über die Verwendung von shm für den PHP-Bytecode-Cache gehört. In diesem Modus können Sie PHP auch nicht über .htaccess-Dateien konfigurieren. Sie müssen dafür den P ECL htscanner installieren, wenn Sie verschiedene Optionen pro Skript über .htaccess (Direktiven php_value / php_flag) festlegen müssen.
---------------- PHP als CGI über suexec ----------------
Diese Konfiguration sieht genauso aus wie bei suphp, aber ich habe gehört, dass sie langsamer und weniger sicher ist. Es gelten fast die gleichen Vor- und Nachteile.
---------------- PHP als FastCGI ----------------
Vorteile : Der FastCGI-Standard ermöglicht es einem einzelnen PHP-Prozess, mehrere Skripte zu verarbeiten, bevor der PHP-Prozess beendet wird. Auf diese Weise erhalten Sie Leistung, da Sie nicht für jedes Skript einen neuen PHP-Prozess starten müssen. Sie können in dieser Konfiguration auch PHP-Beschleuniger verwenden (Kommentar siehe Abschnitt "Nachteile"). FCGI ermöglicht fast wie suphp auch die Ausführung von PHP-Prozessen für einige Benutzer. mod_fcgid scheint die umfassendste fcgi-Unterstützung und Flexibilität für Apache zu haben.
Nachteile : Die Verwendung des PHP-Beschleunigers im FastCGI-Modus führt zu einem hohen Speicherverbrauch, da jeder PHP-Prozess seinen eigenen Bytecode-Cache hat (es sei denn, es gibt einen Beschleuniger, der gemeinsam genutzten Speicher für den Bytecode-Cache verwenden kann. Gibt es einen solchen?). FastCGI ist auch etwas komplex zu konfigurieren. Sie müssen verschiedene Konfigurationsdateien erstellen und einige Konfigurationsänderungen vornehmen.
Es scheint, dass fastcgi die stabilste, sicherste, schnellste und flexibelste PHP-Konfiguration ist, jedoch etwas schwierig zu konfigurieren ist. Aber vielleicht habe ich etwas verpasst?
Kommentare sind willkommen!
Ich beantworte Ihre Frage nicht wirklich, aber ich verstehe nicht, dass FastCGI schwer zu konfigurieren ist. Es unterscheidet sich von den anderen Methoden, die ersetzt werden sollen (mod_php, mod_python, ...), sodass möglicherweise ein Teil des Codes neu geschrieben werden muss. Das kann der schwierige Teil sein, aber für die Konfiguration von Apache finde ich es zumindest ein Kinderspiel. Als Beispiel habe ich eine WSGI-Anwendung in Python getestet und wollte sehen, wie sie mit allen von WSGI unterstützten Protokollen funktioniert. Hier ist die virtuelle Hostdatei mit den Konfigurationen für alle Protokolle (mit
mod_fastcgi
):Es scheint mir nicht komplex zu sein. Sicher, FastCGI unterstützt viele Optionen und kann zu Tode optimiert werden, aber das ist eine andere Sache.
Um als anderer Benutzer ausgeführt zu werden, verwenden Sie suexec und
FastCGIWrapper
dann wird es:Unter diesem Link finden Sie eine benutzerdefinierte php.ini, die Sie jedoch mit der
-initial-env
Option angeben können sollten , zquelle
Ein guter Kandidat ist: Der Apache 2 ITK MPM
Hat für einen unserer Kunden mit Hunderten von VirtualHosts mit ziemlich vielen Besuchern sehr gut gearbeitet.
Sie erhalten alle Vorteile, wenn Sie PHP als Modul ausführen und einige der Nachteile klären.
quelle
Für mich ist die Frage, was der Zweck des Webservers ist. Wird mehr als ein virtueller Host bedient? Wenn ja, müssen Sie die Leistung für isolierte Sicherheit opfern. Ja, die Leistung leidet, aber mit der heutigen Hardware sollte immer noch einiges an Verkehr erforderlich sein, um größere Leistungsprobleme zu verursachen.
Wenn die Leistung so wichtig ist, führen Sie den einen Standort auf einem VPS- oder dedizierten Server aus und konfigurieren Sie die Leistung.
quelle