HowTo: SAMP (Slug, Apache, Mysql, Php)

Also wie bekomme ich Mediawiki und Torrentflux, natürlich zusätzlich zur NAS Funktion mittels Samba und NFS, auf einen Slug? Vorweg schonmal die gute Nachricht: Es geht! Das Problem ist weniger der 266 MHz. ARM Prozessor, den der Linksys NSLU2 hat, sondern vielmehr die 32 MB RAM. Im Debian Etch für ARM gibt es zwar alles was das Herz begehrt, aber ein simples apt-get -s install mediawiki mysql-server apache2 php5 installiert zwar die passende Software, diese ist aber leider bei weitem nicht auf die beschränkten Hardwareverhältnisse eines Slug optimiert. Ich habe mir also die Mühe gemacht die Software auf so wenig wie möglich Resssourcenverbrauch zu trimmen. Los gehts….

MySQL
Ja der MySQL Server sollte auch mit drauf! Die Daten die ich im Wiki speichere will ich keinem Server im Internet anvertrauen und eine lärmende Kiste wollte ich ja gerade eben loswerden. Lange Rede kurzer Sinn, hier sind die Optionen für die my.cnf die dabei herrausgekommen sind:

key_buffer = 16k
max_allowed_packet = 1M
thread_stack = 64K
thread_cache_size = 2
sort_buffer = 64k
read_buffer_size = 8k
net_buffer_length = 2k
table_cache = 4

query_cache_limit = 128k
query_cache_size = 512k
skip-innodb

Am meisten hat hierbei die Option skip-innodb gebracht. Hierbei wird der ältere Tabellentyp InnoDB nicht mehr geladen. Da ich eh neue Tabellen anlege, die dann vom Typ MyISAM sind, kann ich mir InnoDB getrost sparen. Vor der Optimierung waren immer ca. 10 MySQL Prozesse geladen. Jetzt sieht das ganze deutlich besser aus:

669 ? S 0:00 /bin/sh /usr/bin/mysqld_safe
707 ? S 0:00 _ logger -p daemon.err -t mysqld_safe -i -t mysqld

Apache
Am stressigsten war beim Apache erst mal alle Module mittels a2dismod zu deaktivieren, die nicht unbedingt benötigt werden. Übrig geblieben sind:

root@slug:/etc/apache2/mods-enabled # ls
alias.load mime.load php5.conf php5.load rewrite.load

In der apache2.conf habe ich folgende Werte angepasst:

MaxKeepAliveRequests 100
KeepAliveTimeout 3

StartServers 1
MinSpareServers 1
MaxSpareServers 5
MaxClients 5
MaxRequestsPerChild 300

Mangels mod_dir musste ich noch ein paar Rewrite Rules einbauen um z.B. http://www.server.com/torrentflux/ an passende die index.php weiterzuleiten:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^/torrentflux/$ http://www.server.com/torrentflux/index.php [L]

PHP5
Um aus PHP noch etwas Performance rauszukitzeln, habe ich eaccelerator-0.9.5.2, 0.9.5 hatte irgendeinen Bug, wodurch PHP leider Segfaults geschmissen hat :-(, verwendet. Es handelt sich hierbei um um eine Art Cache für PHP. Die PHP Skripte werden beim ersten Aufruf im Webserver kompiliert und in einem Cache abgelegt. Wenn die Skripte nicht verändert werden, können sie so beim nächsten Aufruf deutlich schneller ausgeführt werden. Ohne diesen Beschleuniger war MediaWiki auf dem Slug leider trotz Optimierungen unbenutzbar.

Fazit
Ein High Performance Webserver wird der Slug sicher nicht, aber für den Heimgebrauch reicht die Performance aus und ich habe endlich keinen lärmenden, stromfressenden Server in der Ecke stehen. Mein Linksys hat nun im Schnitt eine Load von 1 und swapt etwas. Mediawiki und Torrentflux lassen sich benutzen. Übrigens: Ich habe natürlich auch versucht den Apache durch einen etwas „leichteren“ Webserver zu ersetzen. thttpd habe ich leider nicht mit php zum laufen bekommen, wohl aber lighttpd mit php5-cgi. Damit hat auch MediaWiki gut funktioniert, aber ich konnte keine Performancesteigerung zu meiner jetzigen Config feststellen.

Schreibe einen Kommentar