Monkey HTTP Server , nun unter der Apache 2.0 Lizenz, ist ein sehr leichter und schneller Web Server für GNU/Linux. Die Entwickler versprechen eine hohe Skalierbarkeit mit niedrigem Speicher- und Rechenbedarf.
Angedacht wurde der Server für „Embedded Devices“, etwa auf Basis von ARM. „x86“ und „x86_64“ Architekturen werden jedoch gleichermaßen unterstützt.
Ich entscheide mich zum besseren Kennenlernen des Monkey Servers, die Einrichtung auf einem üblichen x86_64-System händisch vorzunehmen und diverse Punkte und Funktionen zu erklären.
Zudem werde ich PHP5 via FastCGI aktivieren.
Übersicht der konfigurierten Plug-ins:
- FastCGI, zur Einbindung von PHP5
- Logger, um Aktivitäten aufzuzeichnen
- Dirlisting, um den Inhalt eines Verzeichnisses aufzuzeigen
Hier meine Demo-Installation, welche ich um ein paar Beispiele im Menü erweitert habe.
Grundinstallation
Abhängigkeiten
Die Abhängigkeiten sind sehr überschaubar und zügig installiert:
sudo apt-get install build-essential libpolarssl-dev php5-fpm
Herunterladen der Dateien
Ich arbeite im Verzeichnis „~/build“.
Dort wird die zu diesem Zeitpunkt aktuelle Version 1.5.0 abgelegt, entpackt und in das neue Verzeichnis hinein gewechselt:
mkdir ~/build cd ~/build wget http://monkey-project.com/releases/1.5/monkey-1.5.0.tar.gz tar zxfv monkey-1.5.0.tar.gz cd monkey-1.5.0
Installation
Nicht alle Parameter sind Pflicht, jedoch zum besseren Verständnis aufgeführt.
So installiere ich alle verfügbaren Plug-ins und lege einige Orte der Installation bereits fest.
Zudem wird der Standard-Benutzer von „nobody“ zum klassischen Web-Dienst Benutzer „www-data“ abgeändert:
./configure --prefix=/usr/local --logdir=/var/log/monkey --pidfile=/var/run/monkey.pid \ --default-user=www-data --default-port=80 \ --enable-plugins=fastcgi,polarssl,cgi,proxy_reverse,mandril,liana,dirlisting,cheetah,auth \ --sysconfdir=/etc/monkey --datadir=/usr/share/monkey/htdocs --plugdir=/usr/local/monkey/plugins make sudo make install
Die Grund-Installation ist somit komplett.
Dienst einrichten
Ein vorgefertigtes Init-Script ist dem Monkey Server beigelegt.
Eine kleine Änderung ist jedoch notwendig:
Im Script wird als Pfad zur Binärdatei des Monkey Servers „/usr/sbin“ definiert.
Das Anlegen einer symbolischen Verknüpfung an diesen Ort, ist einer Änderung des Scripts vorzuziehen: In Zukunft kann so ein neues Init-Script des Monkey Servers übernommen werden, ohne es vorab zu ändern:
ln -s /usr/local/bin/monkey /usr/sbin/
Anschließend wird das Script an den korrekten Ort kopiert und der Dienst installiert. An diesem Punkt starte ich den Dienst noch nicht!
cp ~/build/monkey-1.5.0/debian/monkey.init /etc/init.d/monkey update-rc.d monkey defaults
Plug-ins
Wie in der Installation festgelegt, befinden sich alle Plug-ins am Ort „/usr/local/monkey/plugins“ (siehe „–plugdir“).
Die Konfiguration der Plug-ins findet jedoch an einem anderen Ort statt: „/etc/monkey/plugins“.
Jedes Plug-in erstellt hier einen Unterordner, in welchem es individuell konfiguriert wird.
Aktiviert werden Plug-ins in der Datei „/etc/monkey/plugins.load“ durch die Anweisung „Load“.
Logger
Zuerst wird das Plug-in „Logger“ aktiviert, hierzu entferne ich die vorangehende Raute entsprechender Zeile in der Datei „/etc/monkey/plugins.load“:
Load /usr/local/monkey/plugins/monkey-logger.so
Einfacher geht es mit folgendem Befehl:
sed -i '/monkey-logger.so/c\ Load \/usr\/local\/monkey\/plugins\/monkey-logger.so' /etc/monkey/plugins.load
Damit die Aufzeichnung funktioniert, ändere ich den Besitzer des Log-Verzeichnisses zu „www-data“ ab:
chown -R www-data: /var/log/monkey
Eine erweiterte Konfiguration ist möglich, aber nicht erforderlich.
Dirlisting
Zur Demonstration aktiviere ich das „Directory Listing“. Wieder wird die Datei „/etc/monkey/plugins.load“ angepasst:
sed -i '/monkey-dirlisting.so/c\ Load \/usr\/local\/monkey\/plugins\/monkey-dirlisting.so' /etc/monkey/plugins.load
Da zu diesem Zeitpunkt nur ein Theme für die Darstellung auswählbar ist, erspare ich mir die Konfiguration.
FastCGI
FastCGI könnte das wohl interessanteste Plug-in darstellen. An dieser Stelle aktiviere und konfiguriere ich das Plug-in, um mit PHP zu kommunizieren.
Wieder beginne ich mit der Aktivierung:
sed -i '/monkey-fastcgi.so/c\ Load \/usr\/local\/monkey\/plugins\/monkey-fastcgi.so' /etc/monkey/plugins.load
Nun ist ein Eingriff in die Konfiguration obligatorisch:
sudo nano /etc/monkey/plugins/fastcgi/fastcgi.conf
Das Plug-in ist ausreichend dokumentiert. Es würde den Rahmen sprengen, auf jedes Detail einzugehen. Stellt eure Fragen gerne in den Kommentaren. :)
Eine fertige Konfiguration kann so aussehen (und darf auch übernommen werden):
[FASTCGI_SERVER] ServerName php5-fpm1 ServerPath /var/run/php5-fpm.sock MaxConnections 5 [FASTCGI_LOCATION] ServerNames php5-fpm1 Match /*.php
Die Einrichtung des PHP Workers folgt. Hier konzentriere ich mich wieder nur auf das Wesentliche!
nano /etc/php5/fpm/pool.d/www.conf
Folgende Zeilen bitte aktivieren („;“ entfernen!):
[...] listen.owner = www-data listen.group = www-data listen.mode = 0666 [...]
Im Anschluss den Dienst neustarten:
service php5-fpm restart
Auch der Web-Server kann nun gestartet werden!
service monkey start

Sonstiges
„monkey.conf“
In der Datei „/etc/monkey/monkey.conf“ befindet sich die allgemeine Konfiguration des Monkey Servers.
Die Version des Webservers verstecken ist grundsätzlich eine gute Idee. Sollte einmal eine veraltete, für Fehler anfällige Version in Betrieb sein, muss das schließlich keiner wissen. ;-) Hacker hätten es dann dank Google noch viel einfacher.
Daher setze ich die Option „HideVersion“ auf „on“:
sed -i '/HideVersion off/c\ HideVersion on' /etc/monkey/monkey.conf
Interessant ist zudem die Option „Workers“, welche im Standard auf „0“ steht und somit so viele Prozesse für den Server startet wie Prozessorkerne vorhanden sind. Eine Änderung ist nur selten notwendig. Aber:
In diesem Artikel bleibt „KeepAlive“ deaktiviert und eine Änderung ist somit nicht notwendig.
André, Just an FYI- the demo server is down. Maybe move the demo of mokey over to a stable server or VPS. It happens.