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

  1. Benötigte Cubietruck-Hardware
  2. Cubian Betriebssystem
  3. Cubian auf SD-Card installieren
  4. Cubian auf NAND-Flash übertragen
  5. Cubian auf NAND-Flash übertragen
Achtung! 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":

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

PHP-Info

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:

SQL-Test erfolgreich

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:

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

PHPLiteAdmin Webpage

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

Links