Sebastian Bauer IT-Blog – News, Reviews, Best Practises

5Jan/090

Apache + suEXEC + FastCGI + PHP

featherBeim Umzug meines Servers wollte ich eingestaubte Konfigurationen aufräumen. Im Bereich Webserver war mir wichtig, dass PHP mit verschiedenen Nutzerrechten ausgeführt werden kann. Eine chroot-Umgebung ist für meine Installation jedoch nicht notwendig.

Die Installation

Verschiedene Benutzer sollen unter ihrer User ID PHP Skripte ausführen können. In diesem Fall kann man PHP nicht mehr als Modul in den Apache einbinden. Es muss entweder suEXEC oder suPHP eingesetzt werden. Letzteres hat jedoch den Nachteil, dass bei jeder Anfrage der PHP-Interpreter neu geladen wird. Deswegen habe ich mich für suExec mit FastCGI entschieden.

Als Basis nutzte ich folgende Artikel: 1, 2, 3

Grundsätzlich ist die Installation nicht problematisch. Für den Betrieb wird ein aktueller Apache 2 mit FastCGI und suEXEC Modul sowie PHP CGI Version.

Für jeden Nutzer, der PHP unter eigener ID ausführen können soll, wird ein FastCGI Wrapper benötigt. Standardmäßig verlangt suEXEC, dass diese Datei unter /var/www zu finden ist.

FCGIWrapper php5-wrapper:

#!/bin/sh
export PHPRC=/home/example/conf
export PHP_FCGI_MAX_REQUESTS=100
exec /usr/bin/php5-cgi "$@"

In der Apache Konfiguration wird im VHost folgendes ergänzt:

SuexecUserGroup example example
<directory /www/example.com/htdocs/>
AddHandler fcgid-script .php
Options +ExecCGI
FCGIWrapper /var/www/php5-wrapper .php
</directory>

Wichtig ist, dass auch die PHP-Dateien die Rechte des konfigurierten Nutzers haben.

Der Betrieb

Bisher läuft der Apache mit zwei unterschiedlichen PHP FastCGI Nutzern. Bei Bedarf werden automatisch PHP Instanzen gestartet. Werden diese nicht mehr benötigt beenden sie sich nach einer Weile von selbst. Auf diese Weise werden Systemressourcen geschont.

Jeder Benutzer kann eine eigene PHP Konfiguration einsetzen. Sogar unterschiedliche PHP Versionen sind parallel möglich.

Warum Apache?

Zunächst habe ich mein System mit Hilfe von nginx vorbereitet. Dieser Leistungsstarke Webserver ist sehr Ressourcen schonend und gewinnt gleichzeitig so manchen Benchmark.

Die PHP FastCGI Instanzen müssen per Hand gestartet werden, da nginx hierfür keinen Mechanismus vorsieht. Ebenso bleibt die Zahl der geladenen PHP Prozesse konstant. D.h. die Ressourcen werden grundsätzlich benötigt.

Aber auch die Konfiguration mittels .htaccess ist bei nginx nicht möglich. Eine Anpassung durch einen normalen Benutzer ist somit nicht möglich.

Prinzipiell sehe ich nginx als leistungsfähigen Webserver, die Umgebung muss jedoch dazu passen.

About Sebastian Bauer

Der Autor hat keine Beschreibung über sich erstellt.
veröffentlicht unter: Erfahrungsberichte Kommentar schreiben
Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Kommentar schreiben


Noch keine Trackbacks.