Monkey HTTP Server: Mit FastCGI für PHP5, Dirlisting, Logger

Monkey Server Logo

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.

Monkey Server, Dirlisting
Monkey Server, Dirlisting
Für den Raspberry PI Debian-Ableger „Raspbian“, stehen schon länger fertige Pakete zum Download bereit.
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
Zur Information: Es wird ein Kernel >=2.6.29 benötigt. Debian Squeeze, als „oldstable“, ist bereits mit Linux 2.6.32 ausgestattet.

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
Achtung: Die Einrückungen sind wichtig!

Die Einrichtung des PHP Workers folgt. Hier konzentriere ich mich wieder nur auf das Wesentliche!

An einer anderen Stelle habe ich bereits ausführlich über die PHP5 Worker geschrieben. Ein Blick in den Artikel kann nicht schaden.
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
Monkey Server, PHP Information
Monkey Server, PHP Information

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:

Wurde ein PHP via FastCGI eingerichtet und die Option „KeepAlive“ aktiviert, MUSS die Anzahl der Worker größer oder gleich „MaxConnections“ in der FastCGI Konfiguration sein!

In diesem Artikel bleibt „KeepAlive“ deaktiviert und eine Änderung ist somit nicht notwendig.

Jede Änderung bedarf einem Neustart des Dienstes!

Eine Antwort auf “Monkey HTTP Server: Mit FastCGI für PHP5, Dirlisting, Logger

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.