Open Source im professionellen Einsatz

© Pippilotta, photocase.com

Apache-Alternativen

Leichtgewichte

Obwohl Apache seit langem der meistverwendete Webserver ist, sind nicht alle Anwender damit zufrieden. Als leichtgewichtige Konkurrenten treten Cherokee und Lighttpd gegen ihn an. Letzterer konnte sich im vergangenen Jahr sogar heimlich unter die ersten Plätze schleichen.

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.

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.

Listing 1: »default«
von Cherokee

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.

Listing 2: Fast CGI mit
Cherokee

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 }

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook