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!):

Achtung! 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":

Placeholder Page 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:

PHP-Info

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:

Filezilla mit Verbindung zum Raspberry Pi

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:

PHPLiteAdmin Webpage

Damit können SQLite3-Datenbanken komfortabel verwaltet und SQL-.Befehle erprobt werden. Unser leichtgewichtiger Webserver ist jetzt einsatzbereit!

Links