gallery blog

Apache suExec/Fastcgi nach Lighttpd Teil I

Author:

Jan Scholten devnull [at] rootsvr [dot] de

Copyright und Lizenz

  Dieser Inhalt ist unter einer Cretive-Commons Lizenz lizensiert.
Teile dieses Howtos basieren auf dem Howto von Florian (floschi) Schießl und auf HowTos der lighttpd Seite.

Feedback

Dieser Eintrag beschreibt die Erfahrungen und Notwendigen Schritte um die Apache2 + fastcgi Installation auf lighttpd + fastcgi zu migrieren. Feedback zu diesem Dokument ist natürlich willkommen, einfach eine Mail an den Autor schicken.

Einleitung / Abstrakt

Apache2 + mod-fastcgi ist relativ behäbig, grade die mitlaufenden Apache Prozesse ziehen eine Menge Speicher. Nach diversen Benchmarks ist lighttpd + fast-cgi etwa so schnell wie apache2 + '''mod-php''' und deutlich schneller als die fast-cgi Variante vom Apache die wir auch nutzen (siehe  Drupal mit Lighty) Gleichzeitig ist der Ressourcenverbrauch vom lighty deutlich geringer. Lighty rettet bei Slashdot
Nachem wir seit längerer Zeit eine Apache/suExec/fast-cgi Installation nach dem HowTo von kase am laufen haben war ich neugierig wie gut oder schlecht der vielfach beworbene Lighttpd sich schlägt.
Dieses Dokument orientiert sich an der derzeitigen Installation und versucht den Umstieg so einfach wie möglich zu machen.
Das Bedeutet es wird alles vorbereitet (Lighty auf Port 81) um nachher einfach switchen zu können.
Testet man in einer VMWare statt direkt auf dem Server wird der laufende Betrieb nicht beeinflusst. Durch die seperate Lighty Instanz auf 81 sollte aber auch auf einem produktiven Server keine Probleme auftreten. Sind die Tests erfolgreich verlaufen kann man über einen Umstieg entschieden.

Generell gilt: Jeder macht das auf eigene Gefahr, ich habe alles nach bestem Wissen und Gewissen aufgeschrieben, übernehme allerdings keinerlei Verantwortung.

Lighttpd

Lighttpd ist ein schlanker Webserver der darauf ausgelegt ist möglichst schnell, sicher und ressourcenschonend zu arbeiten. Eine Liste von Seiten die Lighttpd einsetzen findet man hier und enthält ein paar interessante Namen: Sourceforge, Teile von wikipedia, youtube, mininova usw. Lighty bei bekannten Seiten Lighty hat bei weitem keine so große Userbase wie Apache: Netcraft zeigt aktuell etwa 180k Domains, tendenz steigend.
Edit: mittlerweile zeigt Lighty ein enormes monatliches Wachstum und liegt zZ bei 1.4 Mio Sites.

Es gibt zwar weniger Plugins bzw. Module, als für den Apache - die Grundbedürfnisse werden aber befriedigt und ein paar intelligente Tricks und eine eingängige Konfiguration vereinfachen die Arbeit.

Installation

Es gibt z.Z. kein fertiges Paket für Debian stable, in testing und unstable sind allerdings lighttpd Pakete im repository. Derweil behelfen wir uns indem wir lighttpd von Hand bauen. Um ein fertiges Debian Paket zu schnüren ist es am einfachsten den folgenden Weg zu wählen: Es fehlen ein paar Pakete, die zum Bau eines lighttpd-Paketes benötigt werden. Einfach als root den Debian-Way nutzen: aptitude install libbz2-dev debhelper Seit Version 1.4.8 wurde im lighttpd-Quellcode das Unterverzeichnis debian/ entfernt, um die Aufnahme in die reguläre Entwicklung von Ubuntu und Debian zu erleichtern. Die lighttpd-Doku empfiehlt aber, einfach das debian/ Verzeichnis einer alten Quellcodeversion zu nehmen, das debian/changelog entsprechend anzupassen und ein eigenes aktuelles Paket zu bauen. Im Einzelnen: Alte und aktuelle Version (die aktuelle Versionsnummer und den entsprechenden Link gibt's auf http://www.lighttpd.net/download/) vom lighttpd holen:
  cd /usr/local/src/
wget http://www.lighttpd.net/download/lighttpd-1.4.7.tar.gz
wget http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz
Beide entpacken und wie oben erklärt das debian/ Unterverzeichnis der alten in die neue Version kopieren:
  tar xzf lighttpd-1.4.7.tar.gz
tar xzf lighttpd-1.4.13.tar.gz
cp -R lighttpd-1.4.7/debian lighttpd-1.4.13/
Jetzt das changelog entsprechend anpassen (einfach einen Block oben einfügen, der dem darunter entspricht - nur eben mit den aktuellen Daten):
  cd lighttpd-1.4.13/
vi debian/changelog
Jetzt kann das Paketbauen beginnen.
  dpkg-buildpackage  
Im übergeordneten Verzeichnis befindet sich nun ein fertiges backfrisches Debianpaket, das mit dem dpkg-Mechanismus installiert (und ggf. wieder entfernt) werden kann:
  cd ..  
dpkg -i lighttpd_1.4.13-1_i386.deb
Lighttpd bricht jetzt beim Start ab, weil Apache2 ja noch auf Port 80 lauscht.. soll er doch, wir konfigurieren Lighty einfach so das er parallel auf Port 81 arbeitet, damit wir den Betrieb nicht stören und testen können.

Konfiguration

Die Konfigurationsdatei liegt unter /etc/lighttpd/lighttpd.conf und ist relativ gut verständlich. Genauere Dokumentation findet man in der Lighttpd Dokumentation

Kurzer Abschweif

Hätten wir nur einzelene vhosts gebraucht und auf die Sicherheit geschissen (mod-php eben) wäre es ganz einfach: * mod_simple_vhost aktivieren * die drei Zeilen einkommentieren:
  simple-vhost.server-root         = "/var/www/"  
simple-vhost.default-host = "meindefaulthost.de"
simple-vhost.document-root = "/docs/"
Damit ist jedes Verzeichnis unterhalb von /var/www/ ein vHost mit seinem Doc Root in /var/www/ +domain+ /docs Dazu Fastcgi aktivieren:
  fastcgi.server              = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/home/webmaster/php/bin/php-fcgi"
)
)
)
Und es würde schon mal laufen. Mit der Ausnahme: Keine unterschiedlichen Userrechte und nur ein zentrales Logfile, verschiedene Logs sind bei mod_simple_vhost scheinbar nicht geplant gewesen - kommt vielleicht noch. Man kann sich aber wohl mit Conditionals helfen Man kann aber schön sehen das die Konfiguration einfach und die Plugins durchdacht und eingängig sind.

© 2007 Jan Scholten | Webhosting by rootsvr.de | Design by Flavia Schoenleber | Stand 03/2007