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:

# 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:

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

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

# 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:

# vi /etc/monkey/plugins.load
...
    # FASTCGI
    # =======
    # Adds FastCGI proxy support.
    #
    Load /usr/lib/monkey/monkey-fastcgi.so
...

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

# vi /etc/monkey/plugins/fastcgi/fastcgi.conf
...
[FASTCGI_SERVER]
        ServerName php5-fpm1
        ServerPath /var/run/php5-fpm.sock
        MaxConnections 5

[FASTCGI_LOCATION]
        LocationName php5_location
        ServerNames php5-fpm1
        KeepAlive On
        Match /*.php

ESC ZZ

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

# service monkey restart

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

# apt-get install fail2ban iptables-persistent aide

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

Sharing is caring


Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInShare on XingShare on RedditPrint this pageEmail this to someone

2 Kommentare Schreibe einen Kommentar

  1. nice article, very helpful for getting php working with monkey. Do you know how to get sqlie3 working with it though? It doesn’t seem to work for me. I’ve got sqlite3 working on the command line but not via php scripts.

    • Hey john!
      Not really to be quite honest – haven’t used Monkey for a couple of years though. Maybe you want to ask on the official Monkey chat on irc.freenode.net -> #monkey – those guys have saved a couple of times. 🙂

      Best regards,
      Christian.

Schreibe einen Kommentar