Ein Webserver mit Apache, MySQl und PHP5 stellt eine echte Herausforderung für den Raspberry Pi dar. Alternativ kann man weniger schwergewichtige Produkte einsetzen:
- Webserver Lighttpd
- PHP5
- FTP-Server VSFTPD
- Datenbank SQLite3
- Datenbankverwaltung PHPLiteAdmin
Diese Kombination läuft auf dem Raspberry Pi wesentlich performanter.
Zielsetzung
Für mein Home-Automation-Projekt benötige ich einen Webserver, der 7 mal 24 Stunden in Betrieb ist und wenig Strom verbraucht. Hier ist der Raspberry Pi erste Wahl.
In diesem Artikel wird die Einrichtung der Programme gezeigt.
Konfiguration des Raspberry Pi
Die Konfiguration des Raspberry Pi ist nach diesen Anleitungen vorzunehmen (Reihenfolge beachten!):
- Benötigte Hardware
- Kühlkörper für den Raspberry Pi
- Image auf SD-Karte schreiben
- Erste Inbetriebnahme und Konfiguration
- USB-Festplatte am Raspberry Pi betreiben
![]() |
Da der Webserver für die Home Automation pausenlose Schreibzugriffe für das Speichern der Messdaten erzeugt, sollte der Raspberry Pi mit einer USB-Festplatte statt der SD-Karte betrieben werden. |
Anschließend bringt man Betriebssystem und Anwendungen auf den neuesten Stand:
sudo apt-get update
sudo apt-get upgrade
Jetzt ist alles für die Installation des Webservers vorbereitet. Für die Konfiguration gelten folgende Voraussetzungen:
- Statische IP-Adresse 10.0.0.59
- Benutzer "pi" wird verwendet
Diese Werte sind auf eure Umgebung anzupassen.
Webserver Lighttpd und PHP5 mit SQLite3-Erweiterung installieren
Die Pakete können mit nur einem Befehl auf einmal installiert werden (Reihenfolge beachten!):
sudo apt-get install lighttpd php5 php5-curl php5-cgi php5-common php-pear php5-sqlite php5-dev
Das Paket "php5-sqlite" beinhaltet bereits alle Funktionen für SQLite3-Datenbanken. Es muss also nicht das Paket "sqlite3" installiert werden. Lediglich, wenn die Datenbank auch im Konsolenmodus bearbeitet werden soll, sollte man das Standalone-Paket zusätzlich installieren:
sudo apt-get install sqlite3
Die Konfiguration des Webservers "Lighttpd" muß nun dahingehend geändert werden, dass PHP5-Skripte abgearbeitet werden können:
sudo nano /etc/lighttpd/lighttpd.conf
Im Konfigurationsfile muss diese Struktur gesucht und wie gezeigt angepasst werden:
server.modules = ( #... "mod_fastcgi", #... ) # At the end of the file fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php5-cgi", "socket" =>"/tmp/php.socket" ))
Die Konfigurationsdatei von PHP5 wird ebenfalls angepasst:
sudo nano /etc/php5/cgi/php.ini
Im Editor "Nano" kann mit ^W nach den folgenden Parametern gesucht werden. Anschließend werden die Werte angepasst:
cgi.fix_pathinfo = 1 date.timezone = Europe/Berlin # http://de2.php.net/manual/de/timezones.php
Mit ^X werden die Änderungen gespeichert. Der Webserver wird neu gestartet, damit die Änderungen übernommen werden:
sudo /etc/init.d/lighttpd restart
An einem PC im Netzwerk wird jetzt ein Browser-Fenster (IE, Chrome, Firefox) geöffnet und die URL des Raspberry Pi eingegeben. Die IP-Adresse muss an Eure Erfordernisse angepasst werden:
http://10.0.0.59/
Nach etwa 10 Sekunden erscheint die Placeholder-Page von "Lighttpd":
Bei nachfolgenden Starts geht das schneller. Wenn die HTML-Seite zu sehen ist, können statische HTML-Seiten bereits richtig dargestellt werden. Nun ist noch zu testen, ob auch PHP-Seiten dargestellt werden können. Hierzu wird eine ganz einfache PHP-Datei angelegt. Der Webserver verwendet /var/www als Basisverzeichnis. Darin können HTML-, PHP5- und SQLite3-Dateien in einer beliebigen Struktur angelegt werden.
cd /var/www
sudo nano info.php
Mit ^X speichern und beenden. Im Browser des PC wird jetzt die neue PHP-Datei aufgerufen (IP-Adresse an Euren Raspberry anpassen!):
http://10.0.0.59/info.php
Wenn PHP-Seiten korrekt erzeugt werden, ist die PHP5-Konfiguration im Browser zu sehen:
Damit der Benutzer "andreas" auf die Website zugreifen kann, sind die Eigentumsrechte des Verzeichnisses rekursiv zu ändern:
sudo chown -R www-data:www-data /var/www
Der Benutzer "pi" des Raspberry Pi ist in die "www-data" Gruppe aufnehmen:
sudo addgroup pi www-data
Nun steht noch der Test der Datenbank SQLite aus. Die Datenbankdatei soll in einem eigenen Unterverzeichnis stehen:
cd /var/www
sudo mkdir sqltest
Mit dem Editor legt man jetzt eine PHP-Datei zum Datenbanktest an (Ihr könnt die Befehle von dieser Website mit Cut&Paste nach Putty übertragen):
sudo nano sqltest/info.php
Vom Browser des PC wird die URL des Test-Skripts eingeben:
http://10.0.0.59/sqltest/info.php
Als Antwort sollte
Id: 1 Message: Test 3 Created at: 24.05.2015 18:42:29 Id: 2 Message: Data:
5561ff75f2894 Created at: 24.05.2015 18:42:30 Id: 3 Message: Date:
24.05.2015 18:42:29 Created at: 24.05.2015 18:42:30
erscheinen. Dann ist die Datenbank richtig konfiguriert.
Die Originalanleitung ist hier zu finden (Danke für die tolle Vorarbeit!):
http://www.scandio.de/2012/11/setting-up-a-lightweight-webserver-with-lighttpd-php5-and-sqlite3/
FTP-Server VSFTPD installieren
"VSFTPD" ist ein FTP-Server, der es ermöglicht, Dateien vom PC auf den Raspberry Pi zu übertragen. Das wird für die Entwicklung der Webseiten benötigt, damit man nicht am Terminal arbeiten muß.
Die Installation erfolgt mit:
sudo apt-get install vsftpd
Der FTP-Server wird hier für lokale Benutzer konfiguriert. Das bedeutet, dass man mit den Rasberry-Benutzerkonten vom PC aus zugreifen kann. Anonymer Zugriff ist nicht erlaubt. Die Konfigurationsdatei ist anzupassen über:
sudo nano /etc/vsftpd.conf
Diese Werte sind einzugeben, bzw. das Kommentarzeichen "#" vor dem Eintrag zu entfernen:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=0013
Nach den Änderungen wird der FTP-Server neu gestartet:
sudo service vsftpd restart
Am Windows-PC ist "Filezilla" oder ein anderer FTP-Client zu installieren. Nach dem Aufruf von Filezilla stellt man die Verbindung zum Raspberry Pi her. Der hier gezeigte Raspberry-Benutzer "andreas" wird für die Anmeldung verwendet. Wenn der FTP-Server richtig läuft, wird in der rechten Fensterhälfte das Dateisystem des Raspberry gezeigt:
Zum Test sollte man einige Verzeichnisse und Dateien anlegen und wieder löschen.
Originalanleitung: http://www.gtkdb.de/index_36_2001.html
PHPLiteAdmin installieren
PHPLiteAdmin ist ein PHP-basiertes Verwaltungstool für SQLite-Datenbanken. Es orientiert sich von der Bedienung am´n PHPMyAdmin für MySQL. Es ist einfach zu installieren und zu benutzen.Das DB-Verwaltungsprogramm für SQLite soll in einem eigenen Unterverzeichnis des Webspace stehen:
sudo mkdir /var/www/admin
Am PC ist das Programm von https://code.google.com/p/phpliteadmin/ das ZIP-File herunterzuladen und am PC zu entpacken. Es besteht aus zwei PHP-Dateien phpliteadmin.config.sample.php und phpliteadmin.php
Per FTP-Client werden die Dateien ins Verzeichnis /var/www/admin hochzuladen. In Putty sind folgende Kommandos einzugeben:
cd /var/www/admin
umkopieren der Vorlage-Konfigurationsdatei in die nutzbare Version
sudo cp phpliteadmin.config.sample.php phpliteadmin.config.php
sudo nano phpliteadmin.config.php
Folgende Einstellungen sind vorzunehmen:
//password to gain access to the GUI: $password = 'YourPasswordHere'; # Startpoint of search for SQLite databeses: $directory = '../'; # Search databases in subdirectories too: $subdirectories = true;
Die Zugriffsrechte für das Verzeichnis und die PHP-Dateien sind anzupassen:
sudo chmod 755 admin
sudo chmod 755 php*
Im Browser des PC wird das Tool aufgerufen:
http://10.0.0.59/admin/phpliteadmin.php
Die Webpage erscheint im Browser:
Damit können SQLite3-Datenbanken komfortabel verwaltet und SQL-.Befehle erprobt werden. Unser leichtgewichtiger Webserver ist jetzt einsatzbereit!
Links
- http://www.scandio.de/2012/11/setting-up-a-lightweight-webserver-with-lighttpd-php5-and-sqlite3/
- http://www.lighttpd.net/
- http://www.php.net/
- https://security.appspot.com/vsftpd.html
- https://sqlite.org/
- https://filezilla-project.org/
- http://www.php.net/manual/en/reserved.variables.server.php