Vorwort

Doch bevor es los geht hab ich noch einige Anmerkungen: Wenn das Tutorial einfach wie hier beschrieben umgesetzt wird, kann dies Auswirkungen auf Counter und andere Statistik-Tools haben. Tipps dazu am Ende des Beitrags.

Turbo auspacken …

Zunächst mal solltet ihr lighttpd installieren. Unter Gentoo geht das mit

1
emerge -av www-servers/lighttpd

Für das hier vorgestellte Szenario sollten die  USE-Flags wie folgt aussehen:

1
www-servers/lighttpd bzip2 -doc -fam -fastcgi -gdbm -ipv6 -ldap -libev -lua -memcache -minimal -mysql pcre -php -rrdtool -ssl -test -webdav -xattr

Wenn alles erfolgreich verlaufen ist, habt ihr nun einen zweiten Webserver auf dem System installiert.

… Anschließen …

Nach dem Installieren hat irgendeiner mal das Konfigurieren gesetzt. Zunächst wird die Konfiguration des neuen lighttpd angepasst.

Je nach Szenario kann die Konfiguration abweichen. Ich beschäftige mich hier nur mit der Konfiguration von mehreren vhosts. Solltet ihr diese nicht brauchen, oder nur einen Virtual Host betreiben, so schaut euch bitte die Dokumentation auf der lighttpd wiki an.

Alle Anpassungen werden in der Datei /etc/lighttpd/lighttpd.conf vorgenommen.

Die Parameter var.basedir und server.document-root müssen auf die Pfade des default-vhost von dem bereits konfigurierten Apache zeigen.

Außerdem müssen folgende Module aktiviert werden:

  • mod_proxy
  • mod_expire
  • mod_compress

Die Parameter server.username und server.groupname sollten denen des Apaches entsprechen, um  Berechtigungsproblemen vorzubeugen. Sie können jedoch auch abweichen, dies empfehle ich jedoch nur erfahreneren Usern, und die wiesen wie sie solche Probleme vermeiden können.

Wir lassen den Server auf Port 80 laufen, den Apache werden wir gleich noch anpassen.

Nun kommt das wichtigste: Die Vhost-Konfiguration. Hier mal nur an einem Beispiel dargestellt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$HTTP["host"] =~ "blog\.exmaple\.org" {
    server.document-root = "/var/www/blog.example.com/blog"
    server.errorlog = "/var/log/lighttpd/blog.exmaple.com/error.log"
    accesslog.filename = "/var/log/lighttpd/blog.example.com/access.log"
    $HTTP["url"] !~ "\.(js|css|gif|jpg|png|ico|txt|swf|html|htm)$" {
        proxy.server  = (
            "" => (
                ( "host" => "127.0.0.1", "port" => 8080 )
            )
        )
    }

    $HTTP["url"] =~ "\.(js|css|txt|swf|html|htm)" {
        expire.url = ( "" => "access plus 1 hours" )
    }

    $HTTP["url"] =~ "\.(gif|jpg|png|ico)" {
        expire.url = ( "" => "access plus 12 hours" )
    }
}

$HTTP["host"] =~ "(^|www\.)example\.org" {
    server.document-root = "/var/www/example.com/http"
    server.errorlog = "/var/log/lighttpd/exmaple.com/error.log"
    accesslog.filename = "/var/log/lighttpd/example.com/access.log"
    proxy.server  = (
        "" => (
            ( "host" => "127.0.0.1", "port" => 8080 )
        )
    )
}

Der erste $HTTP[„host“] Eintrag greift, wenn der Host blog.example.org Aufgerufen wird. Der Zweite bei www.example.org und example.org.

Durch den Regulären Ausdruck in der Proxy.Server Direktive in der ersten Vhost Definition wird dafür gesorgt, dass Anfragen nach statischen Dateien direkt vom lighttpd beantwortet werden, ohne extra den Apache belästigen zu müssen. Da ist der lighttpd viel schneller.
Die beiden Expire-Direktiven sorgen noch dafür das der Client die statischen Dateien cached, wieder weniger Last.

Im Anschluss passen wir noch den Listen-Port des Apaches an (8080). Eventuelle Virtual-Host-Direktiven sollten auch angepasst werden.

… und Anlassen!

Nun starten wir zuerst den Apache neu, danach machen wir den lighttpd an.

Zum Testen macht nun euren Firefox auf und schaut ob alles noch geht. Sollte nun in eurem Browser ein Fehler erscheinen, nehmt den Vorschlaghammer in die rechte Hand und haut einmal auf den Server, sofern er für euch zugänglich ist. Wenn ihr den Server nicht in eurer nähe habt, nehmt den Seitenschneider, trennt damit die Verbindung des Modems zur Wand und setzt euch in eine Ecke. Sollte euch langweilig werden, schaut den Ausgaben von cat /dev/urandom zu :-)

Anregungen zum weiteren Tuning

Dieser Artikel zeigt nur den grundlegenden Aufbau des beschriebenen Szenarios. Durch die Verwendung von mod_cache kann noch mal einiges an Geschwindigkeit raus geholt werden. Jedoch ist dies kein Standard Modul, und muss manuell gebaut werden. Anders als beim Apache erfordert dies jedoch einen rebuild des gesamten lighttpd. Näheres dazu auf in der ModCache Dokumentation.

Wenn ich mal Zeit habe, werde ich ein entsprechendes ebuild bereitstellen.

Viel Erfolg

Eine Meinung zu “HowTo: Webserver-Tuning mit Apache2 und lighttpd

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>