Benutzer-Werkzeuge

Webseiten-Werkzeuge


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-Zugang und somit ist die Einrichtung des Volkszählers nicht über den Standardweg zu erledigen. Dafür bekommt man hübsche Webfrontends und fertige Tools über die man die Einrichtung vornehmen kann.

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

Im folgendem wird die Einrichtung bei https://www.netcup.de/ beschrieben. Stand 2020 nutzen sie zur Administrierung der kleinen Pakete das recht verbreitet „Plesk“ in der Version „Onyx“. Teilweise findet das auch bei anderen Hoster Anwendung, vielleicht sogar unter anderem Label. Aber je nach Softwarestand unterscheiden sich die verfügbaren Funktionen erheblich.

Passen die hier erwähnten Schritte nicht haben wir noch eine andere Anleitung für Hosts die mit weniger PHP-Memory und ohne SSH daher kommen: Volkszaehler bei einem Webhoster ohne SSH installieren

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 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)
  • PHP Skript Memory Limit min. 512M (sonst gibt es bei composer Probleme)
  • SSH oder Composer über Plesk

Subdomain

In der Regel wird man auf dem Host noch ein bisschen mehr liegen haben wie nur den Volkszaehler. Daher legen wir uns erstmal eine Subdomain an.

  • Den Dokumentenstamm lassen wir erstmal wie vorgeschlagen.
  • SSL aktivieren, etliche Browser zeigen unverschlüsselte Seiten nicht mehr direkt an. Dazu brauchen wir aber auch ein gültiges Zertifikat. Let's Encrypt stellt welche kostenfrei zur Verfügung.
  • Unterstützung für Git aktivieren, die URL zum VZ-Repositiry https://github.com/volkszaehler/volkszaehler.org eintragen und Zielverzeichnis angeben (wird direkt angelegt).

Das Git wird geclont, die Subdomain angelegt.

Von hier ab navigieren wir zu den meisten Einstellungen.

PHP

Richten wir direkt PHP passend ein.

  • PHP aktivieren
  • Version ruhig so hoch wie möglich wählen, aber nur FPM. Bei FastCGI gab es schon Probleme beim Redirekt durch des Webservers.
  • open_basedir bietet zwei mögliche Voreinstellungen. Bei netcup die Alternative wählen, gleicher Grund wie für FPM.

Composer

Wir müssen Composer (Paketmanager für PHP) installieren und ausführen. Dafür gibt es zwei Wege (je nach Hoster und Plesk-Version)

SSH Zugang

Wir richten uns einen Nutzer für SecureShell ein.

  • Name uns sicheres Passwort wählen
  • Am Ende der Seite (auf dem Bild abgeschnitten) stehen die URL über man z.B. per Putty Zugang bekommt.

  • Die Zugangsdaten entsprechend eintragen, in dem Fall WinSCP.
  • Einloggen
  • Composer installieren und ausführen:
cd /tmp
curl -sS https://getcomposer.org/installer | php
mkdir /composer
sudo mv composer.phar /composer
sudo chmod +x /composer/composer.phar
cd /volkszaehler
php /composer/composer.phar install

Plesk

Wie schon erwähnt gib es teilweise schon die Möglichkeit Composer per Klick einzubinden.

Ist ziemlich selbsterklärend, einfach den Anweisungen folgen.

Datenbank

Richten wir nun die Datenbank ein.

  • Name wählen, der vordere Teil ist vom Hoster fest definiert.
  • IP notieren, die brauchen wir gleich noch (bei Netcup kann auf die dargestellte IP nur innerhalb der Serverfarm zugegriffen werden, für Zugang von außen die Doku sichten).
  • Als zugehörige Website die Subdomain wählen
  • Username wählen, auch hier ist ein Teil vom Hoster definiert
  • sicheres Passwort wählen
  • Zugriffsteuerung belassen. Schränkt man auf lokale Verbindungen ein ist bei Netcup gar kein Datenbankzugriff mehr möglich.

Der automatisch erstellte User hat vollen Schreib- und Lesezugriff auf die neue, ihm zugewiesene Datenbank.

Falls ein Abzug einer vorherigen Datenbank verfügbar ist kann man den an der Stelle direkt hochladen und importieren.

Config

Ist die Datenbank eingerichtet passen wir die VZ-Konfiguration darauf an. Über den Dateimanager /volkszaehler/etc/config.dist.yaml öffnen.

  • IP-Adresse des Datenabnkserves eintragen
  • vollständigen Usernamen eintragen
  • Passwort im Klartext eintragen
  • vollständigen Datenbanknamen eintragen
  • selben User mit Passwort nochmal eintragen für administrative Schreib- und Löschzugriffe
  • Datei speichern als config.yaml

Datenbank erstellen

Ist keine Datensicherung einer vorhergegangen Datenbank vorhanden müssen wir die Struktur noch erstellen.
Dazu nochmal per SSH einloggen und doctrine ausführen.

cd /volkszaehler
php bin/doctrine orm:schema-tool:create

Schlägt der Schritt fehl liegt ein Fehler in der zuvor erstellten Konfigurationsdatei vor.

An der Stelle können wir auch direkt die Tabllen für die Aggregation anlegen lassen

php /volkszaehler/bin/aggregate run -m full -l day -l hour -l minute

Stammverzeichnis

Zum Abschluss passen wir das Stammverzeichnis der Subdomain an unsere Verzeichnisstruktur an.

Das Frontend sollte nun zur Verfügung stehen und neue Kanäle anlegbar sein, bzw. alte Kanäle sollten abonniert werden können.

vzlogger

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://volkszaehler.domain.tld/middleware.php anpassen, den Prozess per systemd stoppen und neu starten.

Aggregation

Auch wenn beim Hoster die erforderliche Leistung bei Anfragen über große Zeiträume kein Problem darstellt ist es dennoch nciht verkehrt die Aggregation der Middleware einzurichten.

Die Anzahl der „cronjobs“ ist bei Webhostern oft eingeschränkt. Man kann aber Problemlos alle 3 Aggregationsstufen in einen Aufruf packen.
Benachrichtung (Email) bei Fehler ist ratsam, sonst versickern Störungen unbemerkt im Logfile.

Fehlersuche

Wenn es nun doch nicht wie gewünscht funktioniert:

  1. An die URL das Unterverzeichnis /frontend/ anhängen. z.B. http://demo.volkszaehler.org/frontend/ Wird diese URL nicht aufgelöst liegt ein Problem beim Redirect vor.
  2. Die Middleware ohne Einfluss des Frontends kann man über direkten Aufruf eines Kanal prüfen: z.B. http://demo.volkszahler.org/api/data/7d3aa8c0-9e87-11e6-878f-b724ca3bd16b.json
  3. Ob die Middleware auf die Datenbank zugreifen kann prüft man mit einem Aufruf wie z.B. http://demo.volkszaehler.org/middleware.php/capabilities/database.json?. Sehr wahrscheinlich ist die Konfiguration der Middleware falsch.
  4. Zielführendere Diagnose erhält man wenn man die PHP-Fehlerausgabe über den http aktiviert und die Datenbank mit einem kurzen Skript direkt anspricht:
<?php
$servername = "localhost";
$username = "vz";
$password = "demo";
$database = "volkszaehler";
 
$conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
 
$sql = ("SELECT * FROM entities");
foreach ($conn->query($sql) as $row) {
   echo $row['uuid']."<br />";
}
?>

Update

Die Aktualisierung aus dem Git über einen der Knöpfe im Webhostingportal anstoßen.

Danach über SSH einloggen und den composer aktualisieren.

cd /volkszaehler
php /composer/composer.phar update
howto/installation_auf_webhoster.txt · Zuletzt geändert: 2020/03/10 11:22 von jau