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. 🙂