Mit wenigen Handgriffen kann aus dem Raspberry Pi ein Webserver für den Heimgebrauch werden. Die wichtigsten Schritte zum Einrichten eines Webservers auf den RasPi erfahrt ihr in diesem Artikel.
Inhaltsverzeichnis
Apache, Lighttpd oder nginx?
In vielen Artikel zum Thema Webserver wird immer wieder behauptet das Apache im Vergleich zu lighttpd und nginx langsamer und/oder Ressourcensparender wäre. Das ist ein Vergleich zwischen Äpfel und Birnen, die Wahl des richtigen Webservers hängt immer vom Einsatzzweck ab. Der lighttpd ist, wie der Name erwarten lässt ein leichtgewichtiger Webserver, daher eignet sich dieser, da meist statische bzw. kleinere PHP Seiten ausgeliefert werden, meiner Meinung nach am Besten. Das Urgestein Apache funktioniert zwar auch, ist aber zwecks der Vielzahl an Funktionen ehr zu überladen für den RPi.
Vorbereitung
Euer RasPi sollte, um ihn als Webserver einsetzen zu können, folgende Voraussetzungen erfüllen:
- Installiertes und konfiguriertes Raspbian, Details gibt es in folgenden Guides
- RasPi beschaffen und vorbereiten
- RasPi einrichten
- SSH Zugang zum RasPi
- Eine statische IP-Adresse am Raspberry Pi
- Optional eine Portweiterleitung für z.b. für Port 80 (HTTP) / 443 (HTTPs) an eurem Router und dynamisches DNS falls der Webserver über das Internet erreichbar sein soll
Installation von lighttpd
Unser Webserver sollte aus Sicherheitsgründen natürlich nicht als root laufen, wir legen daher vorher eine Gruppe und einen Benutzer www-data an.
1 2 |
sudo addgroup --system www-data sudo adduser www-data www-data |
Dank APT ist die Installation von lighttpd wie immer sehr einfach und unkompliziert, an dieser stelle bietet es sich an vorher via update und upgrade die Paketdatenbank zu synchronisieren und alle installierten Pakete auf den neuesten Stand zu bringen. Zusätzlich sollten wir die Firmware aktualisieren.
1 2 3 4 5 6 |
sudo apt-get update sudo apt-get upgrade sudo rpi-update sudo apt-get install lighttpd |
Um zu überprüfen ob der Webserver richtig installiert wurde prüfen wir ob bzw. welche Prozesse unter dem User www-data laufen, hier sollte uns dann natürlich der lighttpd angezeigt werden
1 |
ps -u www-data u |
Nach Installation des Webservers können wir direkt alle notwendigen Abhängigkeiten, um später auf dem Webserver auch PHP-Code ausführen zu können, installieren. Wollt ihr nur statische HTML Seiten ausliefern ist dies nicht notwendig, wobei das ehr unüblich ist.
1 2 |
sudo apt-get install php5-common php5-cgi php5 |
Die Konfiguration ist fast so einfach wie die Installation selbst, um überhaupt PHP-Code ausführen zu können müssen wir das entsprechende Modul für den Webserver aktivieren
1 2 |
sudo lighty-enable-mod fastcgi-php sudo lighty-enable-mod fastcgi |
Es reicht ein Neustart des Webservers um die Änderung zu aktivieren
1 2 3 4 5 |
sudo service lighttpd restart #Alternativen zu Steuerung des Dienstes sudo /etc/init.d/lighttpd {start|stop|restart|reload|force-reload} |
Testen der Installation
Wenn der Webserver richtig installiert und konfiguriert wurde können wir durch Eingabe der IP-Adresse des Raspberry Pi direkt die Infoseite von lighttpd sehen. Gebt also zum Beispiel in eurem Browser ein, ihr müsst die IP-Adresse natürlich gegen die IP die eures RasPi austauschen.
Alternativ kann auch eine PHP-Info Datei erstellt werden die uns direkt Informationen zur verwendeten PHP-Version und den Modulen ausgibt
1 |
sudo nano /var/www/info.php |
Wir fügen folgenden Inhalt in die Datei ein.
1 2 3 |
phpinfo(); ?> |
- Mit [STRG]+O kann man die Datei speichern
- Mit [STRG]+X kann man den Editor schließen
Das Ergebnis können wir uns wieder im Browser ansehen http://192.168.178.100/info.php
Lighttpd Konfigurationsdatei
Die Konfigurationsdatei des Lighttpd liegt unter „/etc/lighttpd/lighttpd.conf“. Auf der Projektseite gibt es eine Beispielkonfiguration mit der man sich vertraut machen sollte. Über folgenden Befehl öffnen wir die Konfigurationsdatei mit dem Editor nano und können darin Anpassungen vornehmen.
1 |
sudo nano /etc/lighttpd/lighttpd.conf |
Port ändern
Im Standard kommunizieren Webserver über den HTTP Port 80, will man das ändern, so kann man die server.port Variable in der Konfigurationsdatei ändern. Wir stellen jetzt beispielsweise den Port auf 8080. Habt ihr bereits eine Weiterleitung und DynDns an eurem Router eingerichtet müsst ihr diese natürlich anpassen.
1 |
server.port = 8080 |
Um die Änderung zu aktivieren müssen wir den Webserver wieder neu starten. Das erledigen wir mit folgendem Befehl
1 |
sudo service lighttpd restart |
Jetzt können wir nur noch über den Port 8080 mit dem Webserver kommunizieren. Hierzu müssen mir im Browser nun immer die IP Adresse und den Port angeben (wenn Port nicht 80 ist), also zum Beispiel
Datenbank
Viele PHP Anwendungen sind Datenbank gestützt, der Standard für PHP Webanwendungen ist MySQL. Als kleine Alternative zu einem richtigen Datenbankserver auf dem RPi kann auch SQLite verwendet werden. Im nächsten Tutorial zeige ich euch die Einrichtung von SQLite für euren Webserver.
Weitere Infos
Insofern euer Webserver über das Internet erreichbar ist solltet ihr natürlich euren RasPi entsprechend abgesichert haben. Bitte vergesst nicht mindestens folgendes zu erledigen
- Haltet installierte Software immer up to date (update & upgrade)
- Firewall einrichten und nur unbedingt notwendige Ports erlauben
- Für den Webserver nicht den Standard Port 80 / 443 verwenden
- Das Passwort des Benutzers Pi ändern, verwendet ein komplexes sicheres Passwort
Weitere Tutorials und Projekte für Einsteiger:
- Raspberry Pi Einsteiger Guide – Anschaffung – Teil 1
- Raspberry Pi Einsteiger Guide – Vorbereitung – Teil 2
- Raspberry Pi Einsteiger Guide – Konfigurieren – Teil 3
- Raspberry Pi Einsteiger Guide – VNC einrichten – Teil 4
- Raspberry Pi Einsteiger Guide – DynDNS – Teil 5
- Raspberry Pi Einsteiger Guide – Port Forwarding – Teil 6
- Raspberry Pi als Webserver einrichten
- VNC Alternative für den Raspberry Pi – XRDP Remote Desktop Verbindung
- Raspberry Pi im Internet – Absichern eures Mini-Rechners