Ein Webserver mit Apache, MySQl und PHP5 ist ein Defacto-Standard. Alternativ kann man weniger schwergewichtige Produkte einsetzen, um sie auf dem Cubietruck laufen zu lassen:
- Webserver Lighttpd
- Scriptsprache PHP5
- Datenbank SQLite3
- Datenbankverwaltung PHPLiteAdmin
- FTP-Server VSFTPD
Diese Kombination läuft auf dem Cubietruck wesentlich performanter. Meine HomeAutomation ist auf diese Produkte abgestimmt.
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 Cubietruck erste Wahl, wenn man eine umfangreiche Anlage hat.
In diesem Artikel wird die Einrichtung der Programme basierend auf dem Betriebssystem 'Cubian' gezeigt.
Konfiguration des Cubietruck
Die Konfiguration des Cubietruck ist nach diesen Anleitungen vorzunehmen (Reihenfolge beachten!):
- Benötigte Cubietruck-Hardware
- Cubian Betriebssystem
- Cubian auf SD-Card installieren
- Cubian auf NAND-Flash übertragen
- Cubian auf NAND-Flash übertragen
![]() |
Da der Webserver für die HomeAutomation pausenlos Schreibzugriffe für das Speichern der Messdaten erzeugt, sollte der Cubietruck mit einer USB-Festplatte statt von der SD-Karte betrieben werden. Bei mir waren die SD-Karten nach drei Monaten defekt, weil so viele Messwerte gespeichert wurden. |
Zuerst bringt man Betriebssystem und Anwendungen auf den neuesten Stand:
sudo bash
sudo apt-get update
sudo apt-get dist-upgrade
Jetzt ist alles für die Installation des Webservers vorbereitet. Für die Beschreibung der Konfiguration gelten folgende Voraussetzungen:
- Cubietruck mit statischer IP-Adresse 10.0.0.124
- Benutzer "cubie" mit Passwort "cubie" wird verwendet
- SSH-Port 36000
Diese Werte sind auf eure Umgebung anzupassen.
Webserver Lighttpd und PHP5 mit SQLite3-Erweiterung installieren
Bitte zuerst als Benutzer 'cubie' anmelden. Die Pakete können mit nur einem Befehl auf einmal installiert werden (Reihenfolge beachten!):
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:
apt-get install sqlite3
Die Konfiguration des Webservers "Lighttpd" muß nun dahingehend geändert werden, dass PHP5-Skripte abgearbeitet werden können:
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:
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:
/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://cubian/
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
nano info.php
Mit ^X speichern und beenden. Im Browser des PC wird jetzt die neue PHP-Datei aufgerufen (IP-Adresse an Euren Cubietruck anpassen!):
http://cubian/info.php
Wenn PHP-Seiten korrekt erzeugt werden, ist die PHP5-Konfiguration im Browser zu sehen:
Damit der Benutzer "cubie" auf die Website zugreifen kann, sind die Eigentumsrechte des Verzeichnisses zu ändern:
chown -R www-data:www-data /var/www
Das Verzeichnis für die Webseiten sollte die richtigen Zugriffsrechte erhalten:
chmod 755 /var/www
Der Benutzer "cubie" des Cubietruck ist in die "www-data" Gruppe aufnehmen:
addgroup cubie www-data
Für FTP muß der Benutzer "www-data" ein Passwort erhalten:
passwd www-data
dann das neue Passwort zweimal eingeben. Im Beispiel habe ich das Passwort "cubie" vergeben.
Jetzt sollte man die Bash-Shell mit 'Exit' verlassen, damit man wieder der Benutzer 'cubie' ist. Nun steht noch der Test der Datenbank SQLite3 aus. Die Datenbankdatei soll in einem eigenen Unterverzeichnis stehen:
exit
logout
Jetzt meldet man sich über SSH als Benutzer 'www-data' (Passwort 'cubie') an
cd /var/www
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):
nano sqltest/sqltest.php
<?php
try {
// Create file "scandio_test.db" as database
$db = new PDO('sqlite:scandio_test.db');
// Throw exceptions on error
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = <<<SQL
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY,
message TEXT,
created_at INTEGER
)
SQL;
$db->exec($sql);
$data = array(
'Test '.rand(0, 10),
'Data: '.uniqid(),
'Date: '.date('d.m.Y H:i:s')
);
$sql = <<<SQL
INSERT INTO posts (message, created_at)
VALUES (:message, :created_at)
SQL;
$stmt = $db->prepare($sql);
foreach ($data as $message) {
$stmt->bindParam(':message', $message, SQLITE3_TEXT);
$stmt->bindParam(':created_at', time());
$stmt->execute();
}
$result = $db->query('SELECT * FROM posts');
foreach($result as $row) {
list($id, $message, $createdAt) = $row;
$output = "Id: $id\n";
$output .= "Message: $message\n";
$output .= "Created at: ".date('d.m.Y H:i:s', $createdAt)."\n";
echo $output;
}
$db->exec("DROP TABLE posts");
} catch(PDOException $e) {
echo $e->getMessage();
echo $e->getTraceAsString();
}
?>
Im Browser ruft man jetzt diese URL auf um die Datenbank zu testen:
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 Cubietruck zu übertragen. Das wird für die Entwicklung der Webseiten benötigt, damit man nicht am Terminal arbeiten muß. Wir melden uns wieder als Benutzer 'cubie' an:
sudo bash
Die Installation des FTP-Servers erfolgt mit:
apt-get install vsftpd
Der FTP-Server wird hier für lokale Benutzer konfiguriert. Das bedeutet, dass man mit den Cubietruck-Benutzerkonten vom PC aus zugreifen kann. Anonymer Zugriff ist nicht erlaubt. Die Konfigurationsdatei ist anzupassen über:
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:
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 Cubietruck her. Der hier gezeigte Benutzer "cubie" wird für die Anmeldung verwendet. Wenn der FTP-Server richtig läuft, wird in der rechten Fensterhälfte das Dateisystem des Cubietruck 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 bei der Bedienung an 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. Als 'cubie' anmelden:
sudo bash
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
cp phpliteadmin.config.sample.php phpliteadmin.config.php
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:
chmod 755 admin
chmod 755 php*
Im Browser des PC wird das Tool aufgerufen:
http://cubian/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