Monkey Webserver + PHP5 + SQLite unter Raspbian

Aus einem Raspberry Pi lässt sich mit geringem Aufwand auf Basis von Raspbian ein vollwertiger Webserver mit PHP-Support zaubern. Mithilfe von SQLite kann der eingebettete Webserver kleinere datenbankgestützte Webanwendungen ausführen.

Zuerst wird das offizielle Monkey APT-Repository eingebunden - das geschieht durch Einfügen einer Zeile in die Konfigurationsdatei /etc/apt/sources.list:

1# echo "deb http://packages.monkey-project.com/primates_pi primates_pi main" >> /etc/apt/sources.list

Die folgenden Befehle aktualisieren den APT-Cache und installieren Monkey inklusive SSL- und FastCGI-Support (wird für PHP benötigt) und einiger anderer Plugins:

1# apt-get update
2# apt-get install monkey{,-auth,-dirlisting,-fastcgi,-liana,-logger,-mandril,-polarssl}

Anschließend werden PHP5 inklusive FastCGI Process Manager und SQLite3-Support installiert:

1# apt-get install php5{,-fpm,-cgi,-sqlite} sqlite3

Anschließend muss das FastCGI-Modul von Monkey noch aktiviert und konfiguriert werden. Da Monkey keine native PHP-Unterstützung mitbringt, wird mittels FastCGI eine Verbindung zum PHP FastCGI Process Manager hergestellt. Dieser übernimmt die Kommunikation mit dem eigentlichen PHP-Interpreter und übergibt die generierten Inhalte anschließend an den Webserver. Zum Aktivieren genügt das Einfügen einer Zeile in die Konfigurationsdatei /etc/monkey/plugins.load:

 1# vi /etc/monkey/plugins.load
 2...
 3    # FASTCGI
 4    # =======
 5    # Adds FastCGI proxy support.
 6    #
 7    Load /usr/lib/monkey/monkey-fastcgi.so
 8...
 9
10ESC ZZ

Konfiguriert wird das Modul anschließend in einer separaten Konfigurationsdatei unterhalb /etc/monkey/plugins/fastcgi.

In der ersten Rubrik (FASTCGI_SERVER) werden Informationen zum PHP FastCGI Process Manager hinterlegt. Die Standard-Werte stimmten bei meiner Installationsbereits. Falls Fehler auftreten, sollte überprüft werden, ob das Socket (hier /var/run/php5-fpm.sock) existiert.

In der zweiten Rubrik (FASTCGI_LOCATION) können beispielsweise Zugriffslimitierungen definiert werden. Es ist beispielsweise ratsam, nur für bestimmte Unterverzeichnisse das Ausführen von PHP-Dateien zu erlauben. Die Definition erfolgt hier mithilfe regulärer Ausdrücke - in diesem Beispiel werden zu Testzwecken alle PHP-Dateien freigeschaltet. Damit Fehler später einfacher in Logdateien nachvollzogen werden können, werden in den einzelnen Rubriken jeweils einzigartige Namen (ServerName, LocationName) vergeben.

Ich hatte bei meinem Setup gelegentlich das Problem, dass PHP-Anwendungen nach einiger Zeit nicht mehr ausgeführt wurden. Abhilfe schaffte hier das Anpassen der MaxConnections- und KeepAlive-Einstellungen.

 1# vi /etc/monkey/plugins/fastcgi/fastcgi.conf
 2...
 3[FASTCGI_SERVER]
 4        ServerName php5-fpm1
 5        ServerPath /var/run/php5-fpm.sock
 6        MaxConnections 5
 7
 8[FASTCGI_LOCATION]
 9        LocationName php5_location
10        ServerNames php5-fpm1
11        KeepAlive On
12        Match /*.php
13
14ESC ZZ

Nach einem Neustart des Monkey-Dienstes steht PHP zur Verfügung:

1# service monkey restart

Wenn man ernsthaft in Erwägung zieht das System als öffentlichen Webserver zu verwenden, sollte man das System jedoch unbedingt absichern:

1# apt-get install fail2ban iptables-persistent aide

Firewall-Regeln, Fail2Ban- und AIDE-Konfigurationen sind natürlich noch anzupassen. 🙂

Übersetzungen: