====== Volkszaehler bei einem Webhoster ohne SSH installieren ====== Falls der gewählte Webhoster Plesk und SSH anbietet ist diese Anleitung passender: [[/howto/installation_auf_webhoster|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: * PHP (auf die passende [[software/middleware/installation#voraussetzungen|Version]] und FPM (FastCGI Process Manager) achten!, die PHP Version kann zum Glück bei einigen Webhoster frei ausgewählt werden) * MySQL (mindestens eine Datenbank muss erlaubt sein) * phpmyadmin (Vereinfacht das eventuelle Eingreifen in die DB) * PHP Skript Memory Limit min. 32M (sonst gibt es bei Monats- oder Jahresüberblicken eine PHP Fehlermeldung) 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 [[software:middleware/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: * Datenbank auswählen * Reiter "Exportieren" * Tabellen "aggregate" und "data" auswählen * Haken bei Struktur setzen (bzw. lassen) * Haken bei Daten **wegnehmen** (dazu gleich mehr) * Am besten eine Kompression auswählen * Und OK 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: '; system('tar xvzf vz.tgz', $retval); echo ''; echo '
'; echo '
'; echo '
';
echo 'Absoluter Pfad:';
echo '
'; system('pwd', $retval); echo '
'; ?>
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 [[/software/middleware/installation#alternativapache_als_server_unter_debian_stretch|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: # RewriteEngine On # RewriteRule ^middleware(.php)?(/.*)? http://localhost:8080$2 [P] # RewriteRule ^api(/.*)? http://localhost:8080$1 [P] == ''/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 [[/howto/installation_auf_webhoster#fehlersuche|installation_auf_webhoster#fehlersuche]]