Bandbreite sparen mit mod_deflate auf Lighttpd 1.4 (Debian Etch) - Seite 2


dpkg-buildpackage wird sich höchstwahrscheinlich über fehlende Pakete beschweren, die es benötigt um das neue lighttpd .deb Paket zu erstellen:

server1:/usr/src/lighttpd-1.4.13# dpkg-buildpackage
dpkg-buildpackage: source package is lighttpd
dpkg-buildpackage: source version is 1.4.13-4etch1
dpkg-buildpackage: source changed by Steve Kemp <skx@debian.org>
dpkg-buildpackage: host architecture i386
dpkg-buildpackage: source version without epoch 1.4.13-4etch1
dpkg-checkbuilddeps: Unmet build dependencies: debhelper (>= 5.0.0) cdbs libssl-dev zlib1g-dev libbz2-dev libattr1-dev libpcre3-dev libmysqlclient15-dev libldap2-dev libfcgi-dev libgdbm-dev libmemcache-dev liblua5.1-0-dev dpatch patchutils pkg-config uuid-dev libsqlite3-dev libxml2-dev
dpkg-buildpackage: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: (Use -d flag to override.)
server1:/usr/src/lighttpd-1.4.13#

Wenn Du auf einen ähnlichen Fehler stößt, installiere die fehlenden Pakete, z.B. wie folgt:

apt-get install debhelper cdbs libssl-dev zlib1g-dev libbz2-dev libattr1-dev libpcre3-dev libmysqlclient15-dev libldap2-dev libfcgi-dev libgdbm-dev libmemcache-dev liblua5.1-0-dev dpatch patchutils pkg-config uuid-dev libsqlite3-dev libxml2-dev

Führe danach erneut dpkg-buildpackage aus:

dpkg-buildpackage

(Auf http://trac.lighttpd.net/trac/wiki/Mod_Deflate heißt es, dass bzip2 Unterstützung in lighttpd für mod_deflate aktiviert sein muss, damit es funktioniert. Erfreulicherweise unterstützt Debians lighttpd Paket (und daher auch unser neues Paket) bzip2 standardmäßig, wir brauchen also nichts zu tun um es zu aktivieren.)

Der dpkg-buildpackage Befehl sollte nun lighttpd wieder neu erstellen und ein neues .deb Paket im /usr/src Verzeichnis erstellen. Das kann etwas dauern, sei bitte geduldig. Es kann sein, dass Du einige Warnungen über Signaturen erhlätst - die kannst Du ignorieren.

Danach gehen wir in das /usr/src Verzeichnis und sehen nach, was wir haben:

cd ..
ls -l

Die Ausgabe könnte wie folgt aussehen:

server1:/usr/src# ls -l
total 1628
drwxr-xr-x 8 root root 4096 2007-08-08 19:09 lighttpd-1.4.13
-rw-r--r-- 1 root src 29377 2007-08-08 19:07 lighttpd_1.4.13-4etch1.diff.gz
-rw-r--r-- 1 root src 861 2007-08-08 19:07 lighttpd_1.4.13-4etch1.dsc
-rw-r--r-- 1 root src 2000 2007-08-08 19:12 lighttpd_1.4.13-4etch1_i386.changes
-rw-r--r-- 1 root src 287998 2007-08-08 19:12 lighttpd_1.4.13-4etch1_i386.deb
-rw-r--r-- 1 root src 69033 2006-12-13 17:22 lighttpd-1.4.13.mod_deflate.jz.patch
-rw-r--r-- 1 root src 793309 2007-06-01 20:15 lighttpd_1.4.13.orig.tar.gz
-rw-r--r-- 1 root src 99606 2007-08-08 19:11 lighttpd-doc_1.4.13-4etch1_all.deb
-rw-r--r-- 1 root src 63136 2007-08-08 19:12 lighttpd-mod-cml_1.4.13-4etch1_i386.deb
-rw-r--r-- 1 root src 62948 2007-08-08 19:12 lighttpd-mod-magnet_1.4.13-4etch1_i386.deb
-rw-r--r-- 1 root src 58546 2007-08-08 19:12 lighttpd-mod-mysql-vhost_1.4.13-4etch1_i386.deb
-rw-r--r-- 1 root src 60212 2007-08-08 19:12 lighttpd-mod-trigger-b4-dl_1.4.13-4etch1_i386.deb
-rw-r--r-- 1 root src 70268 2007-08-08 19:12 lighttpd-mod-webdav_1.4.13-4etch1_i386.deb
server1:/usr/src#

Wie Du siehst, ist ein neues lighttpd_1.4.13-4etch1_i386.deb Paket erstellt worden, das wir nun wie folgt installieren können (das wird Dein vorhandenes lighttpd ersetzen):

dpkg -i lighttpd_1.4.13-4etch1_i386.deb

(Wenn Du diese Module benötigst, kannst Du lighttpd-mod-cml_1.4.13-4etch1_i386.deb, lighttpd-mod-magnet_1.4.13-4etch1_i386.deb, lighttpd-mod-mysql-vhost_1.4.13-4etch1_i386.deb, lighttpd-mod-trigger-b4-dl_1.4.13-4etch1_i386.deb und lighttpd-mod-webdav_1.4.13-4etch1_i386.deb nach dem gleichen Verfahren installieren.)

Nun müssen wir die Datei mod_deflate.so in das lighttpd Modul-Verzeichnis kopieren:

cp /usr/src/lighttpd-1.4.13/debian/tmp/usr/lib/lighttpd/mod_deflate.so /usr/lib/lighttpd

Wenn Du magst, kannst Du nun Folgendes ausführen

lighttpd -V

um das Erstellungsdatum herauszufinden, um sicher zu gehen, dass das neue lighttpd installiert ist:

server1:/usr/src# lighttpd -V
lighttpd-1.4.13 (ssl) - a light and fast webserver
Build-Date: Aug 8 2007 19:10:28

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:/usr/src#

Wie Du sehen kannst, ist eine bzip2 Unterstützung eingebaut, was eine Voraussetzung für mod_deflate ist. (Mach Dir keine Sorgen, wenn Du mod_deflate nicht in der Ausgabe siehst - das ist normal.)

3 Konfiguration von Lighttpd

Die lighttpd Konfiguration ist auf Debian Etch in /etc/lighttpd/lighttpd.conf. Wir öffnen diese Datei und fügen "mod_deflate", der server.modules Zeile hinzu (falls mod_rewrite aktiviert ist, ist es wichtig, dass mod_deflate hinter mod_rewrite aufgeführt wird!):

vi /etc/lighttpd/lighttpd.conf
[...]
server.modules = ( "mod_access", "mod_alias", "mod_accesslog", "mod_fastcgi", # "mod_rewrite", "mod_deflate", # "mod_redirect", # "mod_status", # "mod_evhost", # "mod_compress", # "mod_usertrack", # "mod_rrdtool", # "mod_webdav", # "mod_expire", # "mod_flv_streaming", # "mod_evasive" ) [...]
In der gleichen Datei fügen wir folgende mod_deflate Konfiguration hinzu (Du kannst es ans Ende von /etc/lighttpd/lighttpd.conf setzen):
[...]
deflate.enabled = "enable" deflate.compression-level = 9 deflate.mem-level = 9 deflate.window-size = 15 # deflate.bzip2 only in patch for 1.4.x deflate.bzip2 = "enable" # deflate.allowed_encodings only in 1.5.x #deflate.allowed_encodings = ( "bzip2", "gzip", "deflate" ) deflate.min-compress-size = 200 #deflate.sync-flush = "enable" deflate.output-buffer-size = 4096 deflate.work-block-size = 512 deflate.mimetypes = ("text/html", "text/plain", "text/css", "text/javascript", "text/xml") #deflate.debug = "enable"
Danach starten wir lighttpd neu:

/etc/init.d/lighttpd restart

Es sollte ohne Fehler neu starten.

Versuch nun auf ein paar .html/.php/.txt/... Datein von einem lighttpd Server in einem Browser zuzugreifen. Es sollte ohne Probleme funktionieren. Falls Du blanke Seiten erhalten solltest, versuche den Wert von deflate.output-buffer-size in /etc/lighttpd/lighttpd.conf auf 2048 oder 1024 zu verringern (vergiss nicht lighttpd nach den Änderungen von /etc/lighttpd/lighttpd.conf neu zu starten).

Um zu prüfen, dass mod_deflate wirklich Deine Dateien komprimiert, kannst Du die Zeile deflate.debug = "enable" in /etc/lighttpd/lighttpd.conf aktivieren (starte lighttpd danach neu). Sieh Dir nun /var/log/lighttpd/error.log an, z.B. wie folgt:

tail -f /var/log/lighttpd/error.log

(drücke STRG-c wenn Du das error-log verlassen möchtest)

und versuche auf ein paar Dateien von Deinem lighttpd Server zuzugreifen. Wenn eine Datei komprimiert wird, solltest Du etwas ähnliches in lighttpds error-log finden:

[...]
2007-08-08 18:40:33: (mod_deflate.c.919) in: 53875 out: 8446
2007-08-08 18:40:33: (mod_deflate.c.1020) finished uri: /info.php , query:
[...]

In diesem Beispiel bedeutet das, dass die Datei info.php die eine Dateigröße von 53875 Bytes hat, auf nur 8446 Bytes komprimiert wurden ist. Das sind weniger als 20% der Originalgröße!

4 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte