Bandbreite sparen mit mod_deflate auf Lighttpd 1.4 (Debian Etch)

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht, wie man mod_deflate auf einem lighttpd 1.4 Web Server auf Debian Etch installiert und konfiguriert. mod_deflate ist standardmäßig in lighttpd 1.5 integriert, allerdings nicht in 1.4, wo mod_compress stattdessen verwendet wird. Der Vorteil von mod_deflate gegenüber mod_compress ist, dass es statische und dynamische Dateien komprimieren kann (wie zum Beispiel PHP Dateien), wohingegen mod_compress nur statische Dateien komprimiert. Die lighttpd Version, die Debian Etch aufweist, ist 1.4.13, also müssen wir es patchen um mod_deflate zu unterstützen. mod_deflate erlaubt lighttpd Dateien zu komprimieren und sie an Clients (z.B. Browser) zu senden, die komprimierte Inhalte bearbeiten können, wie es die meisten modernen Browser können. Mit mod_deflate kannst Du HTML, Text oder XML Dateien auf ungefähr 20 - 30% ihrer originalen Größe komprimieren, dies spart Deinem Server Bandbreite, was Deine Modem Benutzer glücklicher macht.

Das Komprimieren von Dateien verursacht eine etwas größere Last auf Deinem Server, was jedoch meiner Erfahrung nach von der Tatsache wettgemacht wird, dass die Verbindungszeiten der Clients mit Deinem Server deutlich verringert werden. Zum Beispiel braucht nun ein Modem Benutzer, der sieben Sekunden benötigte, um eine unkomprimierte HTML Datei runter zu laden, nur noch zwei Sekunden für den gleichen Vorgang, allerdings mit einer komprimierten Datei.

Wenn Du mod_deflate verwendest, brauchst Du keine Angst haben, dass Du Benutzer mit älteren Browsern, die komprimierte Inhalte nicht bearbeiten können, ausschließt. Der Browser verhandelt mit dem Server bevor irgendeine Datei transferiert wird und falls der Browser nicht über die Kapazität verfügt, komprimierten Inhalt zu bearbeiten, liefert der Server die Dateien unkomprimiert.

Ich möchte an dieser Stelle darauf hinweisen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten dieses Ziel zu erreichen - dies ist der Weg, den ich gewählt habe. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Du kannst dieser Anleitung folgen, ganz egal ob lighttpd bereits installiert ist oder nicht. Wir werden ein neues lighttpd 1.4.13 .deb Paket erstellen, das das vorhandene lighttpd (falls es installiert ist) ersetzt.

Wenn lighttpd bereits installiert ist, kannst Du dessen Version und integrierte Funktionen wie folgt überprüfen:

lighttpd -V

Die Ausgabe sollte wie folgt aussehen (es sollte Version 1.4.13 anzeigen):

server1:~# lighttpd -V
lighttpd-1.4.13 (ssl) - a light and fast webserver
Build-Date: Jun 1 2007 18:19:33

Event Handlers:


+ select (generic)
+ poll (Unix)
+ rt-signals (Linux 2.4+)
+ epoll (Linux 2.6)
- /dev/poll (Solaris)
- kqueue (FreeBSD)

Network handler:

+ sendfile

Features:


+ IPv6 support
+ zlib support
+ bzip2 support
+ crypt support
+ SSL Support
+ PCRE support
+ mySQL support
+ LDAP support
+ memcached support
- FAM support
+ LUA support
+ xml support
+ SQLite support
+ GDBM support

server1:~#


2 Ein neues Lighttpd Paket mit mod_deflate Unterstützung erstellen

Zuerst installieren wir alles, was wir brauchen, um lighttpd aus den Quellen zu erstellen:

apt-get install build-essential

Dann gehen wir zum /usr/src Verzeichnis und laden das Debian Etch lighttpd Quell-Paket runter:

cd /usr/src
apt-get source lighttpd

Führe nun Folgendes aus

ls -l

um herauszufinden, was für eine lighttpd Version Du bekommen hast. Es sollte die Version 1.4.13 sein:

server1:/usr/src# ls -l
total 804
drwxr-xr-x 8 root root 4096 2007-08-08 19:03 lighttpd-1.4.13
-rw-r--r-- 1 root src 15173 2007-06-01 20:15 lighttpd_1.4.13-4etch1.diff.gz
-rw-r--r-- 1 root src 1098 2007-06-01 20:15 lighttpd_1.4.13-4etch1.dsc
-rw-r--r-- 1 root src 793309 2007-06-01 20:15 lighttpd_1.4.13.orig.tar.gz
server1:/usr/src#

Nun laden wir die lighttpd-1.4.13.mod_deflate.jz.patch Datei von http://trac.lighttpd.net/trac/wiki/Mod_Deflate und patchen die lighttpd 1.4.13 Quellen damit:

wget http://trac.lighttpd.net/trac/attachment/wiki/Mod_Deflate/lighttpd-1.4.13.mod_deflate.jz.patch?format=raw
mv lighttpd-1.4.13.mod_deflate.jz.patch?format=raw lighttpd-1.4.13.mod_deflate.jz.patch
cd lighttpd-1.4.13
patch -p1 < ../lighttpd-1.4.13.mod_deflate.jz.patch

Wenn alles klappt, sollte die Ausgabe des letzten Befehls wie folgt aussehen:

server1:/usr/src/lighttpd-1.4.13# patch -p1 < ../lighttpd-1.4.13.mod_deflate.jz.patch
patching file configure.in
patching file src/base.h
patching file src/chunk.c
patching file src/chunk.h
patching file src/connections.c
patching file src/http_chunk.c
patching file src/joblist.c
patching file src/Makefile.am
patching file src/Makefile.in
patching file src/mod_deflate.c
patching file src/plugin.c
patching file src/plugin.h
patching file src/request.c
patching file src/response.c
patching file src/server.c
Hunk #1 succeeded at 176 (offset 1 line).
Hunk #2 succeeded at 270 (offset 1 line).
Hunk #3 succeeded at 1043 (offset 1 line).
Hunk #4 succeeded at 1271 (offset 1 line).
Hunk #5 succeeded at 1324 (offset 1 line).
Hunk #6 succeeded at 1344 (offset 1 line).
server1:/usr/src/lighttpd-1.4.13#

Nachdem der Patch ohne Fehler angebracht wurde, erstellen wir unser neues lighttpd .deb Paket:

dpkg-buildpackage

0 Kommentar(e)

Zum Posten von Kommentaren bitte