An dieser Stelle möchte ich einmal darstellen, wie man auf dem Raspberry Pi den Webserver Nginx installieren kann. Ich möchte hier noch einmal darauf Hinweisen, dass die Nutzung von Apache2 als Webserver auf dem Pi sehr starke Auslastung hervorruft. Nginx hat sich bisher als weniger ressourcenhungrig dargestellt. Man kann auch hier keine Wunder erwarten, aber für kleinere Projekte auf dem Pi zu nutzen reicht es allemal ;). Diese Tutorial ist wie folgt strukturiert: WebServer installieren -> Notwendige Gruppen und Benutzer anlegen/ prüfen -> Nginx Einrichten -> Verzeichnisse vorbereiten -> PHP installieren -> MySQL installieren -> phpMyAdmin installieren -> Kosmetisches
-
Installation
Über apt-get installieren wir das Paket nginx. Es liefert die nötigen Webserver – Funktionalitäten-
pi@raspberrypi~ $ sudo apt-get install nginx -
Prüfen eines Benutzers und der Gruppe
Der Webserver arbeitet in einem Verzeichnis, das i. d. R. einem bestimmten Benutzer zugeordnet ist. In der Regel handelt es sich dabei um die Gruppe mit dem Namen "www-data". Es kann wie folgt geprüft werden, ob diese Gruppe schon existiert.
pi@raspberrypi~ $ groups
pi adm dialout cdrom sudo audio www-data video plugdev games users netdev lpadmin inputIn diesem Falle hat mein Pi diese Gruppe schon. Sollte sie dort nicht auftauchen, kann sie mit dem Befehl
pi@raspberrypi~ $ sudo groupadd www-datahinzugefügt werden. Anschließend sollte der Befehl
pi@raspberrypi~ $ awk -F‘:‘ ‚{ print $1}‘ /etc/passwdabgesetzt werden, da wir einen gleichnamigen Benutzer noch benötigen. Taucht dort kein "www-data" Benutzer auf, so muss dieser noch zur "www-data" – Gruppe hinzugefügt werden. Dies können wir mittels
pi@raspberrypi~ $ sudo useradd www-datasowie
pi@raspberrypi~ $ sudo usermod -g www-data www-datagetan werden. 3. Einrichten von Nginx
Zuerst testen wir einmal, ob wir den Server starten können, dies können wir mit Hilfe des "service" – Skripts tun
pi@raspberrypi~ $ sudo service nginx startRufen wir die IP des Pi nun im Browser der Wahl auf, so sollte > Welcome to nginx!
uns präsentiert werden. Als nächstes Betrachten wir die Konfiguration von Nginx. Dies geht am besten mithilfe von Nano als Superuser
pi@raspberrypi~ $ sudo nano /etc/nginx/nginx.confDie Konfiguration sieht zu Beginn wie folgt aus: > user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; }
An dieser Stelle ist jedoch ein bissjen Korrektur nötig – wir wollen den Pi ja etwas schonen. Hierfür modifizieren wir die Anzahl der Prozesse auf 2 und reduzieren die Verbindungen um die Hälfte auf 300. Das sollte erst einmal genügen. Wichtig: Nach Änderungen an der Konfiguration muss der Server neu gestartet werden. Das geht auch einfach mittels des "service" – Skripts
pi@raspberrypi ~ $ sudo service nginx restart -
Einrichten des Verzeichnisses
Als nächstes wollen wir unser notwendiges Verzeichnis anlegen. Dieses lege ich unter /var/www/ an. Natürlich kann auch ein anderes Verzeichnis gewählt werden. Mittels
pi@raspberrypi ~ $ sudo mkdir /var/wwwwird das Verzeichnis angelegt, mittels
pi@raspberrypi ~ $ sudo chown www-data:www-data /var/www/setzen wir die Eigentumsverhältnisse auf unseren vorhin angelegten Benutzer. Als nächstes müssen wir Nginx erklären, wo sein Verzeichnis liegt. Nginx hat hierfür eine Steuerdatei, die im Unterverzeichnis "sites-enabled" liegt. Diese öffnen wir mittels
pi@raspberrypi /var $ sudo nano /etc/nginx/sites-enabled/defaultDiese Datei sollte zu Beginn wie folgt aussiehen (Ausschnitt) > server { #listen 80; ## listen for ipv4; this line is default and implied #listen :80 default_server ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules }
Hierbei entfernen wir das "#" – Zeichen vor "listen 80;". Außerdem ersetzen wir root /usr/share/nginx/www/ durch /var/www/. Anschließend wird der Server neu gestartet mittels des "service" Skripts. Außerdem sollte man hinter "index.htm" noch "index.php" anfügen, da wir später noch PHP zum Einsatz bringen werden. Falls gewünscht, kann man unterhalb von "server_name" noch ein "autoindex on" einfügen, welches es ermöglicht, dass man den Inhalt eines Verzeichnisses anzeigt, wenn kein "index." – Dokument vorhanden ist. 5. PHP
Viele Programme/ Serveranwendungen benötigen PHP. Dieses möchten wir natürlich auch benutzen. PHP installieren wir mittels einiger Pakete über die Paketverwaltung
pi@raspberrypi/var $ sudo apt-get install php5-fpm php5-cgi php5-cli php5-commonAnschließend muss in der Nginx – Konfiguration noch eine Richtlinie für die Verarbeitung von *.php – Dateien integriert werden. An einer freien Stelle kann > location ~ .php$ { include fastcgi_params; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; }
eingefügt werden. Anschließend muss der Server neu gestartet werden. Jetzt starten schon einmal PHP – Skripte. Jedoch die, die auf MySQL setzen, verusachen noch einen Fehler 500. Den möchten wir jetzt beheben. 6. MySQL
Mittels
pi@raspberrypi /var $ sudo apt-get install mysql-server mysql-client php5-mysqlinstallieren wir die nötigen MySQL – Pakete. Bei der Installation wird nach einem MySQL – Root Passwort gewählt. Ansonsten läuft die Installation automatisch. 7. PHPMyAdmin
PHPMyAdmin wird über die Paketverwaltung wie gewohnt installiert:
pi@raspberrypi /var $ sudo apt-get install phpmyadminNach kurzer Zeit ist die Installation auch abgeschlossen. Sollte die Adresse /phpmyadmin/index.php nicht erreichbar sein, sollte folgender Inhalt angefügt werden: http://www.howtoforge.com/running-phpmyadmin-on-nginx-lemp-on-debian-squeeze-ubuntu-11.04 (Abschnitt "… and add the following part to the server {} container:". Lediglich die Stelle mit =404 würde ich entfernen, da sonst eine nicht existente Datei gesucht wird, wenn sie nicht in /usr/share/ liegt. 8. Kosmetik
Wird eine Datei nicht gefunden, so wirft der Server eine ziemlich unschöne "Fehler 500" – Nachricht. Man kann dies ändern. Hierfür muss die Serverkonfiguration um > error_page 404 = 404.html;
erweitert (nach "root") und die Zeile mit "=404" erweitert werden > try_files $uri $uri/ /index.html =404;
Sind weitere "error_page" – Anbgaben vorhanden, so werden diese auch verwendet. 10. Test
Um zu testen, ob das ganze auch erfolgreich ist, kann man mittels
pi@localhost/var/www $ sudo nano ./index.phpEine index.php mit folgendem Inhalt erzeugen
erzeugt werden. Natürlich muss diese aufgrund der Rechteverhältnisse dem Bennutzer "www-data" übergeben werden. Dies geht mit
pi@localhost/var/www $ sudo chown www-data ./index.phpAnschließend sollte eine sehr lange Seite mit technischen Informationen sichtbar werden: Das wars ;). Jetzt könnt Ihr den Pi als Webserver nutzen. Ich freue mich über Kommentare und Anregungen zu diesem Tutorial. Wichtiger Hinweis (Vielen Dank an Rolfi für den Hinweis): Die Beispielseite mit "phpinfo();" ist lediglich zum testen gedacht und dient zum einfachen Test, ob PHP auch funktioniert. Generell sollte man davon Abstand nehmen, den Raspberry Pi in einer produktiven Umgebung (ich meine damit Sachen wie eigene Internetauftritte, die von außen erreichbar sind) einzusetzen. Hierfür ist der Raspberry Pi doch zu schwach. Jedoch um darauf PHP – Programme, Skripte etc. testen und z. B. für eine Hausautomatisierung etc. zu nutzen, ist der Pi ideal. Haftungsausschluss: Ich übernehme keinerlei Haftung für Schäden, die durch Befolgung der Schritte dieses Beitrages auftreten können. Es können auch hier Fehler und Unstimmigkeiten auftreten, die Fehler veursachen können. Ich habe die Tutorials in der Regel so erstellt, wie ich es bei meinem System auch durchgeführt hatte. Eventuelle Probleme sind dabei je nach Konfiguration möglich. Fehler gefunden? Ich bin für einen Kommentar dankbar ;).