Inhaltsverzeichnis

Volkszaehler bei einem Webhoster ohne SSH installieren

Falls der gewählte Webhoster Plesk und SSH anbietet ist diese Anleitung passender: Volkszaehler bei einem Webhoster mit Plesk installieren

Motivation

Nicht jeder hat vielleicht einen eigenen 24/7 Server für den Volkszähler zu Verfügung oder es nervt die Performance eines low-cost LAMP Ansatzes (z.B. auf RaspberryPi). Wer bei einer Monatsanzeige schon mal gefühlte Stunden gewartet hat, sehnt sich nach mehr Leistung. Ein Lösungsansatz kann eine Webhoster Implementierung sein. Für einen erträglichen Monatsbetrag (geht so ab 1,99€/Monat los) bekommt man eine eigene Domain und ein paar GigaByte Webspace. Diese preiswerten Angebote bieten allerdings keinen root- oder SSH-Zugang und somit ist die Einrichtung des Volkszählers nicht über den Standardweg zu erledigen. Mit ein paar Handmodifikationen lässt sich das aber in Griff kriegen.

Das ganze hat aber auch Nachteile: Es gibt eine Menge verschiedener Hoster mit diversen Konfigurationen. Sollte es Probleme geben setzt das einiges an Erfahrung voraus und unsere Möglichkeiten zu unterstützen sind da sehr eingeschränkt. Der Support des Hosters ist in der Preisklasse auch keine große Hilfe weil die sich nur um die Bereitstellung kümmern, wenn es an der Anwendung klemmt ist der Kunde Zuständig.

Voraussetzungen

Für unsere Installation auf dem Webhoster gelten die gleichen Bedingungen für den VZ wie für jeden anderen Server. Auf die folgenden Punkte sollte man bei der Auswahl des Hosters achten:

Das folgende Beispiel bezieht sich auf Hosteurope. Die folgenden Schritte beschreiben die Installation dort, ist aber sicher auch für andere Webhoster gültig.

Vorbereitungen

Falls man nicht schon ein lauffähiges System am Start hat, sollte man z.B. über eine virtuelle Maschine den VZ gemäss der Anleitung installation aufsetzen. Schließlich haben wir auf dem Webhoster keinen root Zugang.

Besonders wichtig dabei ist, dass die von VZ verwendeten Bibliotheken einmalig lokal mittels

composer install

eingerichtet werden (dieser Schritt ist im Installationskript enthalten).

Läuft alles wie erwartet kann der Umzug losgehen.

Umzug der Daten

Vorab: Sollte das System noch nicht laufen, kann man den Export mit Standardeinstellungen machen. Sollten aber schon Daten in die lokale DB geloggt werden empfiehlt sich folgendes:

Zunächst einmal legt man sich eine Datenbank über das Backend des Webhosters an, ggf. nutzt man die einzig vorhandene. Mit den zugehörigen Daten loggt man sich in das phpMyAdmin des Hosters (oder das selbst auf dem Webspace installierte) ein, um die Schemata einzuspielen. Am einfachsten geht dies, indem man mit dem phpMyAdmim folgende Schritte durchführt:

Das ganze dann noch einmal für die restlichen Tabellen, hier allerdings den Haken bei „Daten“ setzen!

Im phpMyAdmin des Hosters werden diese beiden Dateien dann importiert.

Umzug der Skripte

Vorbedingung ist hier ein entsprechendes angelegtes Verzeichnis: /was/auch/immer/vz.domain.tld

und die darauf zeigende Subdomain http://vz.domain.tld/ → /was/auch/immer/vz.domain.tld

(Anmerkung: /was/auch/immer/ ist nicht notwendigerweise ein absoluter Pfad, sondern in der Regel relativ zum Root-Pfad des Webspace)

Hier machen wir es uns ganz einfach:

Variante eins

Wir kopieren per ftp-Befehl den gesamten Inhalt von /var/www/volkszaehler.org/ in ein Verzeichnis unserer Wahl beim Hoster (z.B. /was/auch/immer/vz.domain.tld/)

Variante zwei

Wir packen das Zeug per tar czf vz.tgz /var/www/volkszaehler.org/*, laden diese Datei hoch und basteln uns eine zweite (PHP-)Datei (uncompress.php), die per System Call das ganze wieder auspackt:

<?php
echo '<pre>';
system('tar xvzf vz.tgz', $retval);
echo '</pre>';
echo '<br/>';
echo '<br/>';
echo '<pre>';
echo 'Absoluter Pfad:';
echo '<br/>';
system('pwd', $retval);
echo '</pre>';
?>

Die können wir dann mit einem einfachen Browseraufruf http://vz.domain.tld/uncompress.php aufrufen.

Anpassungen

''/vz.domain.tld/htdocs/js/options.js''

Die lokale Installation im Image nutzt den PPM als Webserver. Beim Hoster wird das nicht gehen und stattdessen Apache nutzen. Das heißt man muss die spezifischen Anpassungen rückgängig machen. Auch auf den Live-Server wird man eher keinen Zugriff haben (wollen).

title: 'Local (default)',
url: 'api'
//live: 8082
''/vz.domain.tld/htdocs/.htaccess''

Proxy auskommentieren:

<IfModule mod_proxy.c>
    # RewriteEngine On
    # RewriteRule ^middleware(.php)?(/.*)? http://localhost:8080$2 [P]
    # RewriteRule ^api(/.*)? http://localhost:8080$1 [P]
</IfModule>
''/vz.domain.tld/etc/config.yaml''
...
db:
// Benutzername der Datenbank (wird vom Webhoster vergeben)
  user: webxxx;
...
// zugehöriges Password
  password: password;
...
// Name der Datenbank (auch vom Webhoster beim Anlegen vergeben)
  dbname: usr_webxxx_1; 
...
// das gleiche noch mal für Admin
  admin:
    user: webxxx
    password: password
...

Ergebnis

Das Ergebnis ist dann über

http://vz.domain.tld/

erreichbar.

vzlogger

Fertig sind wir aber noch nicht. Jetzt folgt die Anpassung (bzw. Erstellung) der 'vzlogger.conf' auf dem System, das die Daten senden soll.

Falls der vzlogger schon brav seinen Dienst verrichtet, braucht man lediglich in der Konfigdatei

"middleware": "http://localhost/middleware.php",

den Middlewarepfad auf http://vz.domain.tld/middleware.php anpassen, den Prozess per systemd stoppen und neu starten.

Ansonsten muss die ganz normale Einrichtung gemacht werden: Kanäle in der Middleware anlegen, UUIDs kopieren, in die Konfig eintragen, etc…

Was ist aber nun mit den alten Daten vom alten System? Nun: Hier bringt phpMyAdmin eine Nettigkeit mit: Klickt im phpMyAdmin auf den Home-Button, dann auf den Reiter Gleiche ab, wählt als Zieldatenbank Aktueller Server und gebt bei Quell-Datenbank die Daten der alten Datenbank an: Voraussetzung ist natürlich ein (temporäres) Port-Forwarding von Port 3306 auf den alten Server, sofern der im Heimnetz steht…

Fehlersuche

Siehe installation_auf_webhoster#fehlersuche