Wer gegen Platzhirsche antreten will, hat es nicht gerade leicht. Im Web ist der Apache-Server nicht nur auf Unix-Seite derart weit verbreitet, dass die meisten gar nicht auf die Idee kommen, es könne auch Alternativen geben. Andererseits schleppt der Apache-Server durchaus einigen Ballast mit sich herum, der bis zu seinem Ursprung als NCSA-HTTPD zurückreicht.
So haben sich die Apache-Entwickler erst mit Version 2 vom Multiprozess-Modell mit seiner festen Anzahl vorab gestarteter Serverinstanzen lösen können. Jetzt gibt es immerhin eine Variante, die zur Verarbeitung von Requests mehrere Threads verwendet. Die Codebasis hat sich durch diese Neukonstruktion jedenfalls noch einmal vergrößert.
Cherokee
Mit wesentlich weniger Code kommt Cherokee [1] aus, der zwar Anfang 2006 einige Medienwellen schlug (Abbildung 1), aber im Rennen um den meistverwendeten Server bisher keine Chance hat. Aber er beherrscht die wichtigsten Anwendungsfelder eines Webservers und ist von überschaubarer Größe. Das zeigt sich schon bei der Installation: Sie setzt außer der C-Library keine außergewöhnlichen Bibliotheken voraus. Nur für SSL-Verbindungen greift Cherokee auf OpenSSL oder Gnutls zurück. Unter Verzicht auf einige Funktionen lässt sich Cherokee auch in eine Mikro-Variante für Embedded-Systeme übersetzen.
Abbildung 1: Mit seinem Webserver Cherokee hat es Programmierer Alvaro Lopez Ortega in die spanische Tageszeitung „El Pais“ geschafft.
Nach dem Download von [1] und dem Entpacken bleibt nur die übliche Abfolge von »configure«, »make« und »make install«. Um die Cherokee-Dateien in die gewohnte Verzeichnishierarchie einzuspielen, ist im Configure-Schritt die Option »--prefix=/usr« nötig. Sonst landen die Dateien unter »/usr/local«. Das Konfigurations- und das Webwurzelverzeichnis setzen die Parameter »--sysconfdir« respektive »--with-wwwroot«.
Für größere Sicherheit kann Cherokee auch in einem Chroot-Jail laufen und besitzt Schnittstellen zur PAM-Authentifizierung und für LDAP. Die Performance beim Transfer großer Files verbessert Cherokee, indem er den neuen Systemaufruf »sendfile()« des Linux-Kernels verwendet, der die Datenübertragung zwischen Dateideskriptoren und Sockets beschleunigt. Für das normale Connection-Handling greift Cherokee auf das Epoll-Interface des Kernels zurück.
Sites durch Symlinks
Ist im Configure-Schritt das Konfigurationsverzeichnis auf »/etc« eingestellt, landen die Dateien mit den Cherokee-Einstellungen in »/etc/cherokee«, zum Beispiel »cherokee.conf«. Wer sich schon einmal mit der Apache-Konfiguration beschäftigt hat, dürfte damit keine Schwierigkeiten haben, auch wenn die Syntax ein bisschen anders aussieht. Zudem funktioniert Cherokee schon mit den Standardeinstellungen.
In »cherokee.conf« stehen nur die Haupteinstellungen, die für alle (virtuellen) Server gelten, die wiederum in »/etc/cherokee/sites-enabled« zu finden sind. Genauer gesagt stößt der Webmaster dort nur auf symbolische Links, die auf Dateien im parallel zu jenem Verzeichnis liegenden »sites-available« zeigen. Mit diesen Symlinks kann der Administrator ganz einfach Sites aus- und einschalten, ohne die Dateien selbst anzutasten.
Analog verhält es sich mit den Verzeichnissen »mods-available« und »mods-enabled«, die Erweiterungsmodule enthalten, zum Beispiel für SSL und die Verwaltung des Servers. Listing 1 zeigt einen Ausschnitt aus der Konfiguration des Standardservers.
Interessant sind vor allem die so genannten Handler, die, basierend auf Datei-Endungen oder Verzeichnisnamen, bestimmte Module von Cherokee aktivieren, die sich um das Datei-Handling kümmern. So lässt etwa der Handler »file« den Server ausgelieferte Dateien intern in einem Cache speichern. Auch den PHP-Support aktiviert der Administrator auf diese Weise, wie die Zeilen 26 bis 28 in Listing 1 zeigen.
01 DirectoryIndex index.php, index.html, index.htm, index.shtml
02
03 DocumentRoot /var/www/html
04
05 UserDir public_html {
06 Directory / {
07 Handler common
08 }
09
10 Directory /cgi-bin/ {
11 Handler cgi
12 DocumentRoot /var/www/cgi-bin/
13 }
14 }
15
16 Log combined {
17 AccessLog /var/log/cherokee.access
18 ErrorLog /var/log/cherokee.error
19 }
20
21 Directory /icons {
22 Handler file
23 DocumentRoot /usr/share/cherokee/icons/
24 }
25
26 Extension php, php3, php4 {
27 Handler phpcgi
28 }
|
Allerdings bekommt er damit nur die sehr langsame CGI-Version von PHP. Wie man die wesentlich schnellere Fast-CGI-Schnittstelle (FCGI) aktiviert, zeigt Listing 2. Ob der PHP-CGI-Interpreter auch Fast CGI beherrscht, verrät die Ausgabe von »php-cgi -v«. Über FCGI oder über das gleichfalls verfügbare SCGI-Interface lassen sich auch die meisten anderen Application-Server oder Frameworks wie Ruby on Rails anbinden.
01 Extension php {
02 Handler fcgi {
03 Server localhost:8002 {
04 Env PHP_FCGI_MAX_REQUESTS "-1"
05 Env PHP_FCGI_CHILDREN "11"
06 Interpreter "/usr/bin/php-cgi -b 8002"
07 }
08 }
09 }
|