Lighttpd Webserver mit PHP und MySQL auf dem Raspberry Pi2/3 installieren

Der Webserver Lighttpd gilt als besonders Leichtgewichtig und daher wie geschaffen für den Raspberry Pi. In diesem Tutorial installiere ich Lighttpd auf einem Raspberry Pi2, wobei diese Anleitung ebenfalls auf den Raspberry Pi3 angewendet werden kann.

Um einen Webserver auch sinnvoll nutzen zu können installieren wir natürlich auch PHP und MySQL mit phpMyAdmin. Als Basis nutzen wir wieder eine Installation von Raspian, alternativ könnte man für einen reinen Webserver auch Raspian Lite benutzen.

Die Installation von Raspian habe ich in diesem Artikel schon behandelt und werde in diesem Artikel nicht mehr näher darauf eingehen. Bei der Installation einfach das aktuellste Image benutzen!

Nachdem dieser Schritt erledigt ist, können wir mit der Installation des Webservers Lighttpd beginnen. Wir können dies wieder entweder direkt am Raspberry Pi oder per SSH zB über Putty erledigen. Falls in die Desktopoberfläche gebootet wurde könnte man das auch noch per Remote erledigen.

Lighttpd

sudo apt-get install lighttpd

Danach können wir Lighttpd auch schon testen, indem wir in unserem Webbrowser die IP-Adresse des Raspberry’s aufrufen zB 192.168.1.50

PHP

Ohne PHP wären wir auf reine statische Inhalte gebunden, um flexibler zu sein installieren wir es nach.

sudo apt-get install php5-common php5-cgi php5

Lighttpd soll auch PHP ausführen können.

sudo lighty-enable-mod fastcgi-php

Empfehlung der Placeholder Seite von Lighttpd

sudo lighty-enable-mod cgi
sudo lighty-enable-mod userdir

Lighttpd neuladen

sudo /etc/init.d/lighttpd force-reload

oder Alternativ

sudo service lighttpd force-reload

Um danach gleich mal PHP testen zu können legen wir im Webroot die Datei info.php an. Mit

sudo nano /var/www/html/info.php

erstellen wir die Datei und fügen

<?php phpinfo(); ?>

als Inhalt hinzu und speichern die Datei anschließend. Über die Konsole mit folgender Tastenkombination:

STRG + X  ->  Y  ->  ENTER

Die erstellte info.php Datei können wir natürlich anschließend im Browser aufrufen und uns davon überzeugen, dass PHP funktioniert.

Genauso wie in diesem Tutorial können wir auch hier wieder einen eigenen Benutzer anlegen, mit dem wir die Dateien für den Webserver verwalten.

sudo useradd -o -u 33 -g 33 -d /var/www -M webuser

Das Passwort für den angelegten Benutzer vergeben mit:

sudo passwd webuser

Den Webroot noch übernehmen

sudo chown -R www-data:www-data /var/www/html

Zusätzliche PHP Bibliotheken

Je nachdem welche Software wir auf dem Webserver verwenden wollen, kann es möglich sein, zusätzliche PHP Bibliotheken zu installieren. Mit

sudo apt-get install php5-curl php5-gd

können wir dann auch Rainloop bzw. das datenbanklose CMS GetSimple unter Lighttpd nutzen.

SQlite

Nicht immer ist gleich eine MySQL-Datenbank nötig. Oft hat man auch mit SQlite sein auslangen. SQlite könnten wir mit folgendem Befehl installieren.

sudo apt-get install sqlite3 php5-sqlite

Zur besseren Verwaltung von SQlite-Datenbanken kann ich phpLiteAdmin sehr empfehlen. Wie man zB auch WordPress mit SQlite betreiben könnte, können sie hier nachlesen.

MySQL und phpMyAdmin

Nicht jede Anwendung ist auch SQlite kompatibel. MySQL und zur besseren Verwaltung davon phpMyAdmin können wir mit folgenden Befehlen nachinstallieren.

sudo apt-get install mysql-server mysql-client php5-mysql phpmyadmin

Während der Einrichtung müssen wir noch das Passwort für den MySQL Benutzer „root“ festlegen und Lighttpd als Webserver auswählen.

Die Frage „Configure database for phpmyadmin with dbconfig-common“ beantworten noch mit „No„.

Die wesentlichen Dinge des Webservers sind nun eingerichtet und es wird an der Zeit den Raspberry Pi mal neu zu starten.

sudo reboot

Eventuelle zusätzliche Einstellungen

Um zB den Serverport zu ändern müsste man die Datei lighttpd.conf bearbeiten.

sudo nano /etc/lighttpd/lighttpd.conf

Damit die Änderungen wirksam werden entweder wieder den Raspberry neustarten oder zumindest den Webserver Lighttpd

sudo /etc/init.d/lighttpd restart

Eventuelle PHP-Einstellungen ändert man in der php.ini, zB memory_limit, upload_max_filesize, post_max_size …

sudo nano /etc/php5/cgi/php.ini

Auch schönere URL lassen sich mit mod_rewrite realisieren. Ein paar Links zu diesem Thema.

https://www.guyrutenberg.com/2008/05/24/clean-urls-permalinks-for-wordpress-on-lighttpd/
http://virtual.berrydejager.com/how-to-fix-the-wordpress-permalinks-when-using-lighttpd/
http://tenabletechtips.com/2013/03/18/rewriting-urls-for-wordpress-with-lighttpd/
http://blog.forret.com/2007/03/15/urlrewrite-for-wordpress-on-lighttpd/
http://www.queryadmin.com/758/lighttpd-rewrite-rules-wordpress-sites/

Geschwindigkeit von Lighttpd gegenüber von Apache

Ich habe sowohl auf Apache als auch auf Lighttpd jeweils WordPress, Rainloop, GetSimple und OwnCloud getestet. Einen spürbaren Unterschied zwischen den beiden Webservern konnte ich nicht feststellen.

Also habe ich mir die Mühe gemacht unter Linux einen Apache Benchmark durchzuführen. Dabei habe ich folgende Befehle im Terminal ausgeführt.

ab -n 100 -c 5 http://192.168.1.50/test.jpg
ab -n 1000 -c 50 http://192.168.1.50/test.jpg
ab -n 10000 -c 100 http://192.168.1.50/test.jpg

Das Ergebnis war zumindest in meinem Fall ernüchternd. Die Transferrate und die Requests pro Sekunde waren bei beiden Webservern annähernd identisch. Dabei wurde bei beiden Test exakt die gleiche Hardware verwendet – gleicher Laptop, gleicher Raspberry Pi, gleiche SD-Karte etc.

Verwendet wurde das Raspberry Pi2 Modell. Es mag sein, dass es sich beim Pi1 oder Pi3 anders verhält. Auch eine andere SD-Karte könnte das Ergebnis schon wieder komplett anders aussehen lassen, in meinem Fall eine Sandisk Ultra 32GB Class 10.

Von der Verwaltung her ist mir persönlich der Apache lieber, aber das ist reine Geschmackssache.




Bitte beachten Sie, dass dieser Beitrag bereits vor über einem Jahr geschrieben wurde und unter umständen nicht mehr aktuell ist.