Mit Apache's mod_cache auf Debian Lenny Daten zwischenspeichern

Caching With Apache's mod_cache On Debian Lenny

Version 1.0

Autor: Falko Timme

Folge mir auf Twitter!


Diese Anleitung erklärt wie man seine Webseiteninhalte zwischenspeichern kann, indem man Apaches mod_cache auf einem Debian Lenny benutzt. Wenn man eine viel besuchte, dynamische Webseite hat, das viele Datenbank-Anfragen bei jedem Zugriff generiert, kommt es zu einer erhöhten Serverauslastung. Diese kann erheblich gesenkt werden, indem die Inhalte für einige Minuten oder mehr zwischengespeichert werden, abhängig davon wie häufig der Webseiteninhalt aktualisiert wird.

Diese Anleitung ist ohne jede Gewähr.

1 Vorbemerkung

Ich gehe davon aus, dass Du bereits eine funktionierende Apache2 Installation hast (Apache 2.2.x - für die Vorabversionen wird cache-Mod allerdings als exeprimentell eingestuft) aus den Debian Paketen. Wenn die Apache Version in den Debian Paketen die 2.2.9 sein sollte, ist das perfekt.

Ich verwende hier den Dokumenten root /var/www für meinen vhost Test. Bitte passe dieses an, sollte Dein Dokument root anders sein.

2 mod_cache aktivieren

mod_cache hat zwei Untermodule, die den Zwischenspeicher verwalten: mod_disk_cache (um Inhalte auf der Festplatte zu speichern) und mod_mem_cache (um Inhalte im Cahce zu speichern, was schneller als die Festplatten-Version ist). Nachdem Du Dich für eine der Methoden entschieden hast, gehe weiter zu Kapitel 2.1 (mod_disk_cache) oder 2.2 (mod_mem_cache).

2.1 mod_disk_cache

Die mod_disk_cache Konfiguration ist in /etc/apache2/mods-available/disk_cache.conf gespeichert, also editieren wir diese:

vi /etc/apache2/mods-available/disk_cache.conf

Die Zeile CacheEnable disk / unbedingt auskommentieren, so daß die minimale Konfiguration folgendermaßen aussieht:
<IfModule mod_disk_cache.c>
# cache cleaning is done by htcacheclean, which can be configured in # /etc/default/apache2 # # For further information, see the comments in that file, # /usr/share/doc/apache2.2-common/README.Debian, and the htcacheclean(8) # man page. # This path must be the same as the one in /etc/default/apache2 CacheRoot /var/cache/apache2/mod_disk_cache # This will also cache local documents. It usually makes more sense to # put this into the configuration for just one virtual host. CacheEnable disk / CacheDirLevels 5 CacheDirLength 3 </IfModule>
Du findest die Erklärungen für diese und andere  Konfigurationsoptionen auf http://httpd.apache.org/docs/2.2/mod/mod_disk_cache.html.

Nun können wir mod_cache und mod_disk_cache aktivieren:

a2enmod cache

a2enmod disk_cache

/etc/init.d/apache2 restart

Um sicher zu sein, dass unser Cache Verzeichnis  /var/cache/apache2/mod_disk_cache mit der Zeit nicht zu voll wird, müssen wir es mit dem htcacheclean Befehl zwischendurch aufräumen bzw. leeren. Dieses Befehl ist Teil des apache2-utils Pakets, welches wir folgendermaßen installieren:

aptitude install apache2-utils

Hiernach können wir htcacheclean als daemon starten:

htcacheclean -d30 -n -t -p /var/cache/apache2/mod_disk_cache -l 100M -i

Das wird den Zwischenspeicherverzeichnis (cache) alle 30 Minuten leeren und damit dafür sorgen, dass er nicht größer als 100 MB wird. Um mehr über htcacheclean zu erfahren, schau Dir dieses an:

man htcacheclean

Damit htcacheclean nicht jedesmal beim (Neu-)Start manuell gestartet werden muss,editieren wir die Datei /etc/rc.local...

vi /etc/rc.local

... und fügen folgende Zeile hinzu, genau vor der  exit 0 Zeile:
[...]
/usr/sbin/htcacheclean -d30 -n -t -p /var/cache/apache2/mod_disk_cache -l 100M -i [...]
Dieser Befehl wird htcacheclean automatisch starten, jedesmal wenn der Server (neu-)startet.

2.2 mod_mem_cache

Die Konfiguration von mod_mem_cache findet man in /etc/apache2/mods-available/mem_cache.conf:

vi /etc/apache2/mods-available/mem_cache.conf

<IfModule mod_mem_cache.c>
CacheEnable mem / MCacheSize 4096 MCacheMaxObjectCount 100 MCacheMinObjectSize 1 MCacheMaxObjectSize 2048 </IfModule>
Das ist die Standardkonfiguration; wenn Du möchtest, kannst Du diese ändern. Eine Liste der Konfigurationsbefehle für mod_mem_cache findest Du hier: http://httpd.apache.org/docs/2.2/mod/mod_mem_cache.html.

Nun aktivieren mod_cache und mod_mem_cache wie folgt:

a2enmod cache

a2enmod mem_cache

/etc/init.d/apache2 restart

Das ist schon fast, aber nur fast alles! Mit mod_mem_cache wirst Du nie wieder irgendwelche Verzeichnisse aufräumen müssen.

0 Kommentar(e)

Zum Posten von Kommentaren bitte