Raspberry als Webserver
All die Daten, die so ein Raspberry erfassen kann, möchte man natürlich auch von anderer Stelle aus abrufen. Dazu eignet sich HTTP natürölich ideal und mit dem Linux-unterbau ist es auch schnell geschafft, einen WebServer zu installieren
WebServer installieren
Leider ist aber genau die offene Plattform wieder das Problem der Auswahl. Neben Apache gibt es noch einige andere HTTP-Server, die vielleicht sogar besser auf so ein Leichtgewicht wie den RasPi passen.
- Apache
Bekannt, groß aber vielleicht auch etwas zu umfangreich für eine kleine statische Webseite - LightHTTP
Kleiner aber durchaus leistungsfähiger Webserver, der wohl auch von Wikipedia und YouTube genutzt wird - nginx
Noch kein kleiner Webserver - Bottle.Py
Das Bottle-Framework erlaubt in Python einfache Webdienste anzubieten, ohne gleich einen kompletten Webserver zu installieren
http://bottlepy.org/docs/dev/
Das Ziel eines Webservers auf einer solch kleinen Plattform ist natürlich ein möglichst geringer und stabiler Speicherverbraucht. Wir haben keine Gigabyte RAM und keine echte Festplatte als Swap-Bereich. Auf der anderen Seite erwarten wird auf dem RaspberryPi natürlich auch keine unmenge an Requests. Auch sind Authentifizierung per LDAP/Kerberos weniger gefragt und selbst SSL kann man sich sparen, wenn die Daten einfach anonym abgefragt werden und unkritisch sind.
- Verschiedene
Gegenüberstellungen
http://www.wikivs.com/wiki/Apache_vs_nginx
http://www.wikivs.com/wiki/Apache_vs_Lighttpd
NGenix
Das "Apache" vielleicht zu groß und damit anfälliger und komplexer ist, habe ich zwischen LightHTTP und ngenx die Wahl gehabt. NGenX gibt es auch für Windows und insbesondere die ReverseProxy-Konfiguration kann mit da mal weiter helfen. Also habe ich mit für NGenX für RasPi entschieden, zumal hier auch viele Quellen vorhanden sind.
- Beginners Guide
http://nginx.org/en/docs/beginners_guide.html
Die Installation ist wieder über APT-GET möglich:
sudo apt-get install nginx
APT-GET installiert die Pakete nginx, nginx-common und nginx-full, die in der Summer gerade mal 1Mbyte benötigen. Der Webserver ,muss dann nur noch gestartet werden
sudo /etc/init.d/nginx start
Per Browser sollte er die Seite anzeigen, die sich im Verzeichnis "/home/rpi/html" befindet. Die Konfiguration von NGNIX verteilt sich auf mehrere Dateien.
- "/etc/nginx/nginx.conf"
Diese globale Datei gibt allgemeine Werte vor, z.B. Logging und vor allem die Verweise auf andere CONF-Dateien
include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;
- /etc/nginx/sites-available/default
Diese Datei enthält z.B. die Konfiguration der "Default"-Webseite. Hier ist z.B. das Basisverzeichnis definiert
server { root /usr/share/nginx/www; index index.html index.htm; server_name localhost; location / { try_files $uri $uri/ /index.html; } }
Änderungen an der Konfiguration werden erst nach einem Restart des Webservers aktiv.
sudo /etc/init.d/nginx restart
Alternativ kann man ein "Reload-Signal" an den Webserver senden:
nginx -s reload
Als erstes bietet es sich an die Default Seite zu ändern
sudo nano /usr/share/nginx/www/index.html
PHP ?
Möchte man den Webserver nicht nur statische Inhalte ausliefern lassen, sondern z.B. auch PHP-Code ausführen, dann muss man zuerst PHP und einen "PHP-Server" (PHP-FPM) installieren.
sudo apt-get install php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd
Und dann muss in der Konfiguration natürlich noch PHP aktiviert werden, d.h. damit ngenx weiß, wie er mit ".php"-Dateien umgehen soll:
location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass Unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # Zugriff auf .htaccess dateien verhindern location ~ /\.ht { deny all; }
Aktuell habe ich noch keine PHP-Seiten angelegt. Aber das kann ja noch kommen, z.B.: um die Daten der verschiedenen Sensoren auszulesen und als HTML, XML oder CSV-Datei auszuliefern.
Weitere Links
-
Verschiedene
Gegenüberstellungen
http://www.wikivs.com/wiki/Apache_vs_nginx
http://www.wikivs.com/wiki/Apache_vs_Lighttpd -
Beginners Guide
http://nginx.org/en/docs/beginners_guide.html -
Raspberry Pi: Webserver Nginx installieren
http://jankarres.de/2012/08/raspberry-pi-webserver-nginx-installieren/ -
Raspberry Pi Webserver (LightHTTP)
http://kampis-elektroecke.de/?page_id=1626 -
Running a lightweight webserver
on the Raspberry Pi (lighttpd)
http://www.penguintutor.com/linux/light-webserver -
How to Make a Raspberry Pi Web
Server
http://www.wikihow.com/Make-a-Raspberry-Pi-Web-Server -
Running A Microserver at Home
with Raspberry Pi
http://people.virginia.edu/~ll2bf/docs/nix/rpi_server.html - LightHTTP