Apache/PHP für Multi-Domain Umgebung einrichten

Apache, Lighttpd, nginx, Cherokee
andreask2
Posts: 696
Joined: 2004-01-27 14:16
Location: Aachen

Apache/PHP für Multi-Domain Umgebung einrichten

Post by andreask2 » 2008-07-10 01:01

Hallo!

Ich möchte einen Webserver mit PHP für verschiedene Domains und verschiedene User einrichten. Ich habe mich damit vor einiger Zeit sehr intensiv beschäftigt, aber bin seit 1-2 Jahren etwas raus, und wollte gerne mal prüfen ob das was ich früher gemacht hatte heute noch gilt. Wichtig ist, dass es eine sichere Konfiguration ist, User oder Fehler in Skripten sollen möglichst wenig Schaden bei anderen Domains anrichten können... Außerdem muss das ganze einfach wartbar sein. Es muss auch keine Hochsicherheits-Geschichte sein, so Sachen wie SELinux etc. sind nicht wirklich nötig.

Ich hatte mir jetzt überlegt, Ubuntu 8 LTS zu installieren, mit dem entsprechenden Apache-Paket (2.2). Einzige Frage wäre, ob worker oder prefork MPM, letzte Zeit habe ich nur prefork mit mod_php verwendet, bei CGI sollte man denke ich besser worker nehmen, oder?

PHP auf jeden Fall CGI-Version mit suexec oder suphp (oder gibt es inzwischen was für mod_php, das mit suexec oder suphp vergleichbar ist und funktioniert? FastCGI möchte ich nicht.).

Ich denke, dass ich die PHP-Version aus dem Ubuntu Paketmanagement nehmen werde (obwohl die ja heute schon fast 1 Jahr alt ist). suexec oder suphp, was würdet Ihr heute empfehlen? Hab früher noch suexec eingesetzt, aber suphp scheint inzwischen auch gut ausgereift und einfacher zu bedienen, oder?

suhousin Patch? Wäre sicher auch nicht ganz verkehrt, oder?

Grüße
Andreas

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: Apache/PHP für Multi-Domain Umgebung einrichten

Post by Roger Wilco » 2008-07-10 10:07

andreask2 wrote:Einzige Frage wäre, ob worker oder prefork MPM, letzte Zeit habe ich nur prefork mit mod_php verwendet, bei CGI sollte man denke ich besser worker nehmen, oder?

Ja. Selbst mod_php ließe sich ggf. mit dem worker MPM betreiben, wenn nur threadsichere Erweiterungen genutzt werden. Das müsstest du im Zweifelsfall testen.

andreask2 wrote:PHP auf jeden Fall CGI-Version mit suexec oder suphp (oder gibt es inzwischen was für mod_php, das mit suexec oder suphp vergleichbar ist und funktioniert? FastCGI möchte ich nicht.).

Stu Herbert hat in seinem Blog ein paar Alternativen beleuchtet: http://blog.stuartherbert.com/php/categ ... -platform/

Ist ganz nett zu lesen und gibt einen guten Überblick über die verschiedenen Möglichkeiten.

andreask2 wrote:suexec oder suphp, was würdet Ihr heute empfehlen? Hab früher noch suexec eingesetzt, aber suphp scheint inzwischen auch gut ausgereift und einfacher zu bedienen, oder?

Das Problem ist einfach, dass SuPHP ähnlich dem stinknormalen CGI für jeden Request einen eigenen Prozess forkt. Das ist für moderat besuchte Seiten in Ordnung, aber sobald mehr Besucher kommen, ist das einfach zu langsam.
Du hattest ja damals die Anleitung bzgl. mod_fastcgi (+SuExec) und PHP geschrieben, wenn ich mich richtig erinnere. Im Prinzip läuft es noch genauso, nur würde ich mod_fcgid anstatt mod_fastcgi wählen.

andreask2 wrote:suhousin Patch? Wäre sicher auch nicht ganz verkehrt, oder?

Auf jeden Fall. Das dürfte AFAIR auch in Ubuntu ohne selbst kompilieren zu müssen verfügbar sein.

andreask2
Posts: 696
Joined: 2004-01-27 14:16
Location: Aachen

Re: Apache/PHP für Multi-Domain Umgebung einrichten

Post by andreask2 » 2008-07-10 12:21

Nein, wenn mod_php dann nur prefork (bei mir). Wie würdest Du testen ob eine Erweiterung bzw. die verwendete Bibliothek threadsafe ist? Bei vielen weiß man, dass es zumindest so sein sollte, bei einigen weiß man, dass sie es definitiv nicht sind, und bei den meisten weiß man es nicht wirklich. Mir ist kein Verwahren bekannt dies zuverlässig zu testen, außer ein vollständiger Code-Review.

Die Artikel von Stu sind auf jeden Fall interessant, allerdings sind mir Stabilität und Sicherheit deutlich wichtiger als Performance. Die Benchmarks in den Artikeln sind auch nicht realistisch, bei einem einzigen Funktionsaufruf wirkt sich der Nachteil von CGI am meisten aus. Wenn man dagegen ein Typo3 System mit vielen DB-Abfragen und vielen eingebundenen Skripten hat, ist der Unterschied bei weitem nicht mehr so groß. Abgesehen davon wird auch das CGI Binary inkl. Bibliotheken von Linux im Cache gehalten, wenn es sehr oft gestartet wird. Hat schon seinen Grund warum quasi alle großen Hoster PHP-CGI einsetzen. Wenn sie 95% der Server einsparen könnten, sähe das sicher auch anders aus.

Ist es tatsächlich so, dass bei suphp Prozesse geforkt werden? Ich dachte immer, das Binary auf der Platte würde jedesmal neu mit entsprechener user-id gestartet?

Grüße
Andreas

jeti-power
Posts: 23
Joined: 2003-04-06 22:02

Re: Apache/PHP für Multi-Domain Umgebung einrichten

Post by jeti-power » 2008-07-19 17:35

Servus

Ist es tatsächlich so, dass bei suphp Prozesse geforkt werden? Ich dachte immer, das Binary auf der Platte würde jedesmal neu mit entsprechener user-id gestartet?


ja, es ist noch immer so ... jeder Aufruf bedeutet das neu starten der PHP Binary und man merkt das ganze durchaus auch sehr deutlich bei umfangreicheren Scripte, sofern die Seite einigermaßen gut besucht wird.

Ich würde in deinem Fall daher auch eher auf auf mod_fcgid setzen und den minimal größeren Aufwand beim einrichten eines Vhosts in Kauf nehmen.

Ich für mein Teil habe es so gelöst:
Kleinere Webseiten bediene ich via suphp, da ich hier wirklich kein Sinn sehe den Aufwand zu tätigen. Seiten ab einer bestimmten Größe werden wiederum per fcgid bedient. Für das anlegen vom Vhost und der Starter-Scripts habe ich mir einfach ein kleines Shellscript programmiert. Damit hält sich auch der Aufwand absolut in Grenzen.

Gruß,
jeti-power