Apache suExec/Fastcgi nach Lighttpd Teil I
Author:
Jan Scholten devnull [at] rootsvr [dot] deCopyright 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 SlashdotNachem 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/Beide entpacken und wie oben erklärt das debian/ Unterverzeichnis der alten in die neue Version kopieren:
wget http://www.lighttpd.net/download/lighttpd-1.4.7.tar.gz
wget http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz
tar xzf lighttpd-1.4.7.tar.gzJetzt das changelog entsprechend anpassen (einfach einen Block oben einfügen, der dem darunter entspricht - nur eben mit den aktuellen Daten):
tar xzf lighttpd-1.4.13.tar.gz
cp -R lighttpd-1.4.7/debian lighttpd-1.4.13/
cd lighttpd-1.4.13/Jetzt kann das Paketbauen beginnen.
vi debian/changelog
dpkg-buildpackageIm übergeordneten Verzeichnis befindet sich nun ein fertiges backfrisches Debianpaket, das mit dem dpkg-Mechanismus installiert (und ggf. wieder entfernt) werden kann:
cd ..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.
dpkg -i lighttpd_1.4.13-1_i386.deb
Konfiguration
Die Konfigurationsdatei liegt unter /etc/lighttpd/lighttpd.conf und ist relativ gut verständlich. Genauere Dokumentation findet man in der Lighttpd DokumentationKurzer 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/"Damit ist jedes Verzeichnis unterhalb von
simple-vhost.default-host = "meindefaulthost.de"
simple-vhost.document-root = "/docs/"
/var/www/
ein vHost mit seinem Doc Root in /var/www/ +domain+ /docs
Dazu Fastcgi aktivieren:
fastcgi.server = ( ".php" =>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.
( "localhost" =>
(
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/home/webmaster/php/bin/php-fcgi"
)
)
)