Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:installation_auf_webhoster

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
howto:installation_auf_webhoster [2020/03/09 17:29] – angelegt jauhowto:installation_auf_webhoster [2022/03/14 16:06] (aktuell) – Rewrite statt Redirect jau
Zeile 4: Zeile 4:
 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.  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. 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.
 +
 +<note important>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.</note>
  
 ===== Voraussetzungen ===== ===== 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.+Im folgendem wird die Einrichtung bei [[https://www.netcup.de/]] beschrieben. Stand 2022 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: [[/howto/installation_auf_webhoster_2|Volkszaehler bei einem Webhoster ohne SSH installieren]] 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: [[/howto/installation_auf_webhoster_2|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: 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]] achten!, die PHP Version kann zum Glück bei einigen Webhoster frei ausgewählt werden)+  * PHP (auf die passende [[software/middleware/installation#voraussetzungen|Version]] achten!, die PHP Version kann zum Glück bei einigen Hostern frei ausgewählt werden)
   * MySQL (mindestens eine Datenbank muss erlaubt sein)   * MySQL (mindestens eine Datenbank muss erlaubt sein)
   * PHP Skript Memory Limit min. 512M (sonst gibt es bei composer Probleme)   * PHP Skript Memory Limit min. 512M (sonst gibt es bei composer Probleme)
Zeile 30: Zeile 32:
 {{:howto:webhoster1_3_php.jpg?direct|}} {{:howto:webhoster1_3_php.jpg?direct|}}
   * PHP aktivieren   * 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+  * Version ruhig so hoch wie möglich wählen. Leider ist bei aktuellen Version kein FPM mehr möglichbei FastCGI gab es schon Probleme beim Redirekt durch den Webserver
-  * ''open_basedir'' bietet zwei mögliche Voreinstellungen. Bei netcup die Alternative wählen, gleicher Grund wie für FPM.+  * ''open_basedir'' bietet zwei mögliche Voreinstellungen. Bei Netcup die Alternative wählen.
  
 ===== Composer ===== ===== 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) Wir müssen Composer (Paketmanager für PHP) installieren und ausführen. Dafür gibt es zwei Wege (je nach Hoster und Plesk-Version)
 +
 +==== Plesk ====
 +Wie schon erwähnt gib es teilweise schon die Möglichkeit Composer per Klick einzubinden.\\
 +<note>Ist die Website über "hosting-Einstellungen" deaktiviert wird diese Option nicht angeboten.</note>
 +{{:howto:webhoster1_b_composer.jpg?direct|}}\\
 +Ist ziemlich selbsterklärend, einfach den Anweisungen folgen.\\
 +{{:howto:webhoster1_c_composer.jpg?direct|}}
 +<note important>Falls die Scripte nicht korrekt ausgeführt werden den Composer von "Produktionsumgebung" auf "Entwicklungsumgebung" umstellen.</note>
  
 ==== SSH Zugang ==== ==== SSH Zugang ====
Zeile 49: Zeile 59:
 curl -sS https://getcomposer.org/installer | php curl -sS https://getcomposer.org/installer | php
 mkdir /composer mkdir /composer
-sudo mv composer.phar /composer +mv composer.phar /composer 
-sudo chmod +x /composer/composer.phar+chmod +x /composer/composer.phar
 cd /volkszaehler cd /volkszaehler
 php /composer/composer.phar install php /composer/composer.phar install
 </code> </code>
- 
-==== Plesk ==== 
-Wie schon erwähnt gib es teilweise schon die Möglichkeit Composer per Klick einzubinden.\\ 
-{{:howto:webhoster1_b_composer.jpg?direct|}}\\ 
-Ist ziemlich selbsterklärend, einfach den Anweisungen folgen.\\ 
-{{:howto:webhoster1_c_composer.jpg?direct|}} 
  
 ===== Datenbank ===== ===== Datenbank =====
Zeile 77: Zeile 81:
 Ist die Datenbank eingerichtet passen wir die VZ-Konfiguration darauf an. Über den Dateimanager ''/volkszaehler/etc/config.dist.yaml'' öffnen.\\ Ist die Datenbank eingerichtet passen wir die VZ-Konfiguration darauf an. Über den Dateimanager ''/volkszaehler/etc/config.dist.yaml'' öffnen.\\
 {{:howto:webhoster1_7_config.jpg?direct|}} {{:howto:webhoster1_7_config.jpg?direct|}}
-  * IP-Adresse des Datenabnkserves eintragen+  * IP-Adresse des Datenbankserves eintragen
   * vollständigen Usernamen eintragen   * vollständigen Usernamen eintragen
   * Passwort im Klartext eintragen   * Passwort im Klartext eintragen
Zeile 93: Zeile 97:
 </code> </code>
 Schlägt der Schritt fehl liegt ein Fehler in der zuvor erstellten Konfigurationsdatei vor. Schlägt der Schritt fehl liegt ein Fehler in der zuvor erstellten Konfigurationsdatei vor.
 +
 +An der Stelle können wir auch direkt die Tabellen für die Aggregation anlegen lassen
 +<code bash>
 +php /volkszaehler/bin/aggregate run -m full -l day -l hour -l minute
 +</code>
 +<note>Falls hier ein Fehlermeldung wegen falscher PHP-Version kommt direkt auf [[howto:installation_auf_webhoster#aggregation|"Geplante Aufgaben"]] ausweichen. Dort kann man die PHP-Version auswählen, für PHP-CLI ist das nicht möglich.</note>
  
 ===== Stammverzeichnis ===== ===== Stammverzeichnis =====
 Zum Abschluss passen wir das Stammverzeichnis der Subdomain an unsere Verzeichnisstruktur an.\\ Zum Abschluss passen wir das Stammverzeichnis der Subdomain an unsere Verzeichnisstruktur an.\\
 {{:howto:webhoster1_a_stamm.jpg?direct|}}\\ {{:howto:webhoster1_a_stamm.jpg?direct|}}\\
-Das Frontend sollte nun zur Verfügung stehen und neue Kanäle anlegbar sein, bzw. alte Kanäle sollten abonniert werden können.+Das Frontend sollte nun zur Verfügung stehen und neue Kanäle anlegbar sein, bzw. alte Kanäle sollten abonniert werden können.\\ 
 +Erscheint stattdessen eine Fehlermeldung wie\\ 
 +{{:howto:webhoster1_fehlermeldung.jpg?400|}}\\ 
 +ist [[howto:installation_auf_webhoster#fehlersuche|Fehlersuche]] notwendig. 
 + 
 +===== Rewrite? ===== 
 +Etwas Schwierigkeiten macht bei Hostern gerne der Rewrite, aus Sicherheitsgründen sind unsere Möglichkeiten da recht eingeschränkt. Ein Ansatz das in Griff zu bekommen war bei PHP den FPM statt FastCGI zu nutzen. Der ist allerdings aus der Mode gekommen und wird teils nicht mehr angeboten.\\ 
 +Funktioniert der Rewrite also nicht wie gewünscht besteht die Möglichkeit die Middleware umzukonfiguriern das sie weitestgehend ohne auskommt. Dazu in ''/volkszaehler/htdocs/js/options.js'' die Zeile 42 von 
 +<code js | /volkszaehler/htdocs/js/options.js> 
 +url: 'api' 
 +</code> 
 +ändern zu: 
 +<code js> 
 +url: 'middleware.php' 
 +</code> 
 + 
 +===== 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 
 +<code>"middleware": "http://localhost/middleware.php",</code> 
 +den Middlewarepfad auf ''<nowiki>http://volkszaehler.domain.tld/middleware.php</nowiki>'' 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 nicht verkehrt die Aggregation der Middleware einzurichten.\\ 
 +{{:howto:webhoster1_d_geplanteaufgaben.jpg?direct|}}\\ 
 +Die Anzahl der "cronjobs" ist bei Webhostern oft eingeschränkt. Man kann aber Problemlos alle 3 Aggregationsstufen in einen Aufruf packen. 
 +{{:howto:webhoster1_e_aggregation.jpg?direct|}}\\ 
 +Benachrichtigung (Email) bei Fehler ist ratsam, sonst versickern Störungen unbemerkt im Logfile.
  
 ===== Fehlersuche ===== ===== Fehlersuche =====
 Wenn es nun doch nicht wie gewünscht funktioniert: Wenn es nun doch nicht wie gewünscht funktioniert:
-  - 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. +  - 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 Rewrite vor. 
-  - 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]] +  - Die Middleware ohne Einfluss von Frontend kann man über direkten Aufruf eines Kanal prüfen: z.B. [[http://demo.volkszahler.org/middleware.php/data/7d3aa8c0-9e87-11e6-878f-b724ca3bd16b.json]] 
-  - 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.\\ Genauere Diagnose erhält man indem man die PHP-Fehlerausgabe über den http aktiviert und die Datenbank mit einem kurzen Skript direkt anspricht:+  - 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. 
 +    - Eine Antwort wie ''{"version":"0.3","capabilities":{"database":{"data":{"rows":0,"size":49152},"aggregation":{"rows":0,"size":49152,"ratio":0}}}}'' ist IO 
 +    - Sowas ''{"version":"0.3","exception":{"message":"Class \"Doctrine\\Common\\Annotations\\AnnotationRegistry\" not found","type":"Error","code":0}}'' deutet auf Probleme mit Composer hin (Entwicklungsumgebung?). 
 +    - Bei ''{"version":"0.3","exception":{"message":"An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused","type":"ConnectionException","code":0}}'' sind die Serverdaten (IP, Port) falsch. 
 +    - Mit falschen Zugangsdaten bekommt man ''{"version":"0.3","exception":{"message":"An exception occurred in driver: SQLSTATE[HY000] [1045] Access denied for user 'xxxx'@'xxxx' (using password: YES)","type":"ConnectionException","code":0}}'' 
 +  - Zielführendere Diagnose bei DB-Zugriffsfehler erhält man auch wenn man die PHP-Fehlerausgabe über den http aktiviert und die Datenbank mit einem kurzen Skript direkt anspricht:
 <code php> <code php>
 <?php <?php
Zeile 123: Zeile 166:
 Die Aktualisierung aus dem Git über einen der Knöpfe im Webhostingportal anstoßen.\\ Die Aktualisierung aus dem Git über einen der Knöpfe im Webhostingportal anstoßen.\\
 {{:howto:webhoster1_x_gitupdate.jpg?direct|}}\\ {{:howto:webhoster1_x_gitupdate.jpg?direct|}}\\
-Danach über SSH einloggen und den composer aktualisieren.+Danach den Composer aktualisieren. Dabei immer bei dem Weg bleiben den man bei der Installation gewählt hatte. Also entweder per Knopfdruck in Plesk oder SSH:
 <code bash> <code bash>
 cd /volkszaehler cd /volkszaehler
howto/installation_auf_webhoster.1583771353.txt.gz · Zuletzt geändert: 2020/03/09 17:29 von jau