Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:middleware:installation

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:middleware:installation [2019/04/27 16:05] – nginx Proxy Konfig, systemd Folge unwichtig jausoftware:middleware:installation [2023/03/27 21:14] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
- 
 ====== Installation der Middleware ====== ====== Installation der Middleware ======
  
Zeile 5: Zeile 4:
  
 ===== Voraussetzungen ===== ===== Voraussetzungen =====
-  * PHP 7.(nicht verfügbar in Raspbian Stretch!)+  * PHP 7.(z.B. debian ab Buster (10))
   * Doctrine 2.5   * Doctrine 2.5
-  * MySQL, MariaDB, PostgreSQL oder SQLite + PDO Treiber+  * MySQL, MariaDB + PDO Treiber
   * APC (optional, aber empfohlen)   * APC (optional, aber empfohlen)
-  * nginx, Apache (optional)+  * Apache, nginx (optional)
  
-Es eigenen sich hier Debian oder Ubuntu, sowie für den Raspberry Pi: Raspbian oder Raspbian Light.("Buster"-Version, oder "Stretch" mit PHP Update)\\+Es eignen sich hier Debian oder Ubuntu, sowie für den Raspberry Pi: Raspbian oder Raspbian Light.("Bullseye"-Version mit PHP 7.4)\\
 Die Abhängigkeiten lassen sich schnell mit folgendem Befehl installieren: Die Abhängigkeiten lassen sich schnell mit folgendem Befehl installieren:
-<code>sudo apt-get install git-core php-cli php-mysql php-apcu mysql-server mysql-client php-xml php-mbstring ca-certificates +<code>sudo apt-get install git php-cli php-mysql php-apcu mariadb-server mariadb-client php-xml php-mbstring php7.4-opcache php-common ca-certificates zip unzip php-zip apt-transport-https php-curl apache2
 </code> </code>
-bzw. für PostgreSQL  
-<code>sudo apt-get install git-core php-cli php-pgsql php-apcu postgresql-8.4</code> 
  
 Für die manuelle Installation wird zudem "curl" benötigt. Für die manuelle Installation wird zudem "curl" benötigt.
-<note>Wie man unter Raspian/Debian auf einer neuere PHP-Version >=7.1 kommt ist unter [[/howto/building_raspberry_pi_image_for_vz]] beschrieben. Nur für erfahrene User!</note> 
  
 ==== Vollautomatisiert mit Ansible und DebOps ==== ==== Vollautomatisiert mit Ansible und DebOps ====
Zeile 35: Zeile 31:
  
 Das sollte dann ablaufen: Das sollte dann ablaufen:
 +[Bitte unbedingt ein Passwort für den vz-admin-User vergeben!]
  
 <code> <code>
Zeile 141: Zeile 138:
 create volkszaehler.org database and admin user? [y] create volkszaehler.org database and admin user? [y]
 creating database volkszaehler... creating database volkszaehler...
 +Enter password: {root password (raspberry)}
 creating db user vz-admin... creating db user vz-admin...
 +Enter password: {root password (raspberry)}
 creating database schema... creating database schema...
 ~/volkszaehler.org ~ ~/volkszaehler.org ~
Zeile 187: Zeile 186:
 [Unit] [Unit]
 Description=Volkszaehler.org Middleware Description=Volkszaehler.org Middleware
-After=syslog.target network.target+After=syslog.target network.target mysql.service
 Requires= Requires=
  
Zeile 208: Zeile 207:
   - Systemd Service starten ''sudo systemctl start middleware''   - Systemd Service starten ''sudo systemctl start middleware''
  
-==== nginx als Proxy (empfohlene Methode) ====+<note important>Wird kein Proxy installiert, wie in den nächsten Sektionen empfohlen, gibt es den Pfad http://localhost/middleware.php nicht, der in vielen Beispielkonfigurationen auf dieser Webseite verwendet wird! Stattdessen muss http://localhost/ verwendet werden.</note>  
 +==== Apache als Proxy (empfohlene Methode) ==== 
 +Dazu Apache auf die Weiterleitung zum PPM reduzieren. 
 +  - Module aktivieren<code> 
 +sudo a2enmod proxy 
 +sudo a2enmod proxy_http 
 +sudo a2enmod rewrite</code> 
 +  - Rewrite-Proxy aktivieren, ''nano ~/volkszaehler.org/htdocs/.htaccess''. Die Kommentarzeichen vor den Zeilen entfernen und Zeile 16 hinzufügen:<code> 
 +<IfModule mod_proxy.c> 
 + RewriteEngine On 
 + RewriteRule ^middleware(.php)?(/.*)? http://localhost:8080$2 [P] 
 + RewriteRule ^api(/.*)? http://localhost:8080$1 [P] 
 +        RewriteRule (.*) http://localhost:8080/$1 [P] 
 +</IfModule> 
 +</code> 
 +  - Default VirtualHost bearbeiten: ''sudo nano /etc/apache2/sites-enabled/000-default.conf''. Dort ''< DocumentRoot >'' suchen und ändern: <code> 
 +        DocumentRoot /var/www/volkszaehler.org/htdocs/ 
 +</code> 
 +  - Apache Config bearbeiten um Rewrite in .htaccess zu erlauben: ''sudo nano /etc/apache2/apache2.conf'' In der Datei den Abschnitt suchen: <code> 
 +<Directory /var/www/> 
 +        Options Indexes FollowSymLinks 
 +        AllowOverride None 
 +        Require all granted 
 +</Directory> 
 +</code>''AllowOverride None'' in ''AllowOverride All AuthConfig'' ändern.\\ 
 +  - Dann den Apache nur noch neu starten ''sudo systemctl restart apache2'' 
 + 
 +==== Alternativ: nginx als Proxy ====
 Nginx ist ein schlanker Webserver/Proxy dessen Konfiguration sehr zentral erfolgt, was der Performance zu gute kommt. Er ist als Proxy für den Betrieb eines Volkszählers nicht zwingend nötig (PPM kann das gut alleine), bietet aber Abwärtskompatibilität für bestehende Scripte und Anwendungen. Nginx ist ein schlanker Webserver/Proxy dessen Konfiguration sehr zentral erfolgt, was der Performance zu gute kommt. Er ist als Proxy für den Betrieb eines Volkszählers nicht zwingend nötig (PPM kann das gut alleine), bietet aber Abwärtskompatibilität für bestehende Scripte und Anwendungen.
  
Zeile 225: Zeile 251:
   listen 80;   listen 80;
   listen [::]:80;   listen [::]:80;
 +  server_name volkszaehler.org;
  
   location / {   location / {
Zeile 245: Zeile 272:
     proxy_pass http://127.0.0.1:8080/;     proxy_pass http://127.0.0.1:8080/;
   }   }
 +
 +# Konfigurationsbeispiel für eigene PHP-Scripte,
 +# von nginx unter http://127.0.0.1/addapp/ bereitgestellt, lokal unter /var/www/html/ abgelegt.
 +#
 +#  location /addapp/ {
 +#    alias /var/www/html/;
 +#    index index.nginx-debian.html;
 +#      
 +#    location ~ \.php {
 +#      include snippets/fastcgi-php.conf;
 +#      fastcgi_param SCRIPT_FILENAME $request_filename;
 +#      fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
 +#    }
 +#  }
 } }
 </code> </code>
 +<note>Möchte man eigene PHP-Scripte neben Volkszähler bereit stellen ist das das Paket php-fpm nötig.
 +
 +Installieren mit ''sudo apt-get install php-fpm'' und darauf achten das in der nginx-Konfiguration bei ''/var/run/php/php7.3-fpm.sock'' auf die korrekte, vorhandene Datei verwiesen wird.</note>
 Damit der nginx die Config lädt: Damit der nginx die Config lädt:
 <code> <code>
Zeile 256: Zeile 300:
 sudo systemctl enable nginx sudo systemctl enable nginx
 </code> </code>
 +
 +==== Alternativ: Apache als Server (unter Debian "Stretch") ====
 +<note>Möchte man von PPM auf Apache als Server umstellen sind auch die Änderungen an der Middleware-Konfiguration für PPM zurück zu nehmen: ''url: 'api' ''</note>
 +  * Pakete installieren ''sudo apt-get install apache2 libapache2-mod-php''
 +  * mod_rewrite aktivieren: ''sudo a2enmod rewrite''
 +  * Default VirtualHost bearbeiten: ''sudo nano /etc/apache2/sites-enabled/000-default.conf''
 +  ' In der Datei, neben ''< DocumentRoot >'' eintragen:
 +<code>
 + /var/www/volkszaehler.org/htdocs/
 +</code>
 +
 +  * Apache Config bearbeiten um Rewrite zu erlauben: ''sudo nano /etc/apache2/apache2.conf''
 +  * In der Datei den Abschnitt suchen:
 +<code>
 +<Directory /var/www/>
 +        Options Indexes FollowSymLinks
 +        AllowOverride None
 +        Require all granted
 +</Directory>
 +</code>
 +   * in ''AllowOverride All AuthConfig'' ändern.
 +
 +Nach dem editieren und abspeichern der Datei ''sudo systemctl restart apache2'' ausführen.
 +
 +Sollte es zu einem PHP Fehler beim Anlegen der Datenbank kommen versucht mal Doctrine per Hand zu Installieren.
  
 ==== Alternativ: nginx als Server ==== ==== Alternativ: nginx als Server ====
 +<note>Möchte man von PPM auf nginx als Server umstellen sind auch die Änderungen an der Middleware-Konfiguration für PPM zurück zu nehmen: ''url: 'api' ''.</note>
 <code> <code>
 server { server {
Zeile 276: Zeile 346:
         #       fastcgi_pass 127.0.0.1:9000;         #       fastcgi_pass 127.0.0.1:9000;
                 # With php7-fpm:                 # With php7-fpm:
-                fastcgi_pass unix:/var/run/php7-fpm.sock;+                fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
         }         }
 } }
 </code> </code>
 +<note>Darauf achten das in der nginx-Konfiguration bei ''/var/run/php/php7.3-fpm.sock'' auf die korrekte, vorhandene Datei verwiesen wird.</note>
  
 Wichtig ist dass in der config in der Zeile "location ~ \.php {" kein $-Zeichen hinter dem PHP steht. Siehe [[https://lists.volkszaehler.org/pipermail/volkszaehler-dev/2011-June/000925.html|Mail Archiv]] Wichtig ist dass in der config in der Zeile "location ~ \.php {" kein $-Zeichen hinter dem PHP steht. Siehe [[https://lists.volkszaehler.org/pipermail/volkszaehler-dev/2011-June/000925.html|Mail Archiv]]
  
-==== Alternativ: Apache als Server (unter Debian "Stretch"==== +==== Alternativ: Lighttpd als Server ==== 
-  * Pakete installieren ''sudo apt-get install apache2 libapache2-mod-php7.1'' +Notwendige Rewrite-Regeln:
-  * mod_rewrite aktivieren: ''sudo a2enmod rewrite'' +
-  * Default VirtualHost bearbeiten: ''sudo nano /etc/apache2/sites-enabled/000-default.conf'' +
-  ' In der Datei, neben ''< DocumentRoot >'' eintragen:+
 <code> <code>
- /var/www/volkszaehler.org/htdocs/ +    url.rewrite-if-not-file = ( 
-</code> +        "^/(?:middleware|api)(/.*)?" => "/middleware.php$1", 
- + "^/frontend/(.*)" => "$1" 
-  * Apache Config bearbeiten um Rewrite zu erlauben: ''sudo nano /etc/apache2/apache2.conf'' +    )
-  * In der Datei den Abschnitt suchen: +
-<code> +
-<Directory /var/www/> +
-        Options Indexes FollowSymLinks +
-        AllowOverride None +
-        Require all granted +
-</Directory> +
-</code> +
-   * in ''AllowOverride All AuthConfig'' ändern. +
- +
-Nach dem editieren und abspeichern der Datei ''sudo systemctl restart apache2'' ausführen. +
- +
-Sollte es zu einem PHP Fehler beim Anlegen der Datenbank kommen versucht mal Doctrine per Hand zu Installieren. +
- +
-==== AlternativApache als Proxy ==== +
-Auch Apache kann auf die Weiterleitung zum PPM reduziert werden. +
-<code>sudo a2enmod proxy +
-sudo a2enmod proxy_http +
-nano ~/volkszaehler.org/htdocs/.htaccess</code> +
-Die Kommentarzeichen vor den Zeilen entfernen: +
-<code> +
-<IfModule mod_proxy.c> +
-        RewriteEngine On +
-        RewriteRule ^middleware(.php)?(/.*)? http://localhost:8080/$2 [P] +
-        RewriteRule ^api(/.*)$ http://localhost:8080/$1 [P] +
-</IfModule>+
 </code> </code>
-Dann den Apache nur noch neu starten 
-<code>sudo systemctl restart apache2</code> 
  
  
Zeile 370: Zeile 410:
  
 === Datenbank konfigurieren === === Datenbank konfigurieren ===
-  * Datenbank-User anlegen:+  * Datenbank anlegen: 
 +<code> 
 +mysql: 
 +    CREATE DATABASE `volkszaehler`; 
 +     
 +oder phpmyadmin: 
 +    Home -> "Datenbank anlegen", Name"volkszaehler" -> "Anlegen"  ​ 
 +</code>
  
 +  * Datenbank-User anlegen:
 <code> <code>
-phpmyadmin:+mysql: 
 +    GRANT ALL ON volkszaehler.* to 'vz_admin'@'localhost' IDENTIFIED BY '<shhhh!>' WITH GRANT OPTION; 
 +    CREATE USER 'vz'@'localhost' IDENTIFIED BY '<shhhh!>'; 
 +    GRANT USAGE ON volkszaehler.* TO 'vz'@'localhost'; 
 +    GRANT SELECT, UPDATE, INSERT ON volkszaehler.* TO 'vz'@'localhost'; 
 +         
 +oder phpmyadmin: 
 +    Home -> "Rechte" -> "Neuen Benutzer hinzufügen" 
 +        Benutzername: vz_admin 
 +        Host: localhost 
 +        Passwort: <shhh!> 
 +        Vollzugriff (Grant All) auf DB volkszaehler erlauben. 
 +        -> ok
     Home -> "Rechte" -> "Neuen Benutzer hinzufügen"     Home -> "Rechte" -> "Neuen Benutzer hinzufügen"
         Benutzername: vz         Benutzername: vz
Zeile 380: Zeile 440:
         keine globalen Rechte vergeben!         keine globalen Rechte vergeben!
         -> ok         -> ok
-oder: 
-    CREATE USER 'vz'@'localhost' IDENTIFIED BY '<shhhh!>'; 
-</code> 
- 
-  * Datenbank anlegen: 
-<code> 
-phpmyadmin 
-    Home -> "Datenbank anlegen", Name: "volkszaehler" -> "Anlegen" 
-oder: 
-    CREATE DATABASE `volkszaehler`; 
 </code> </code>
  
-  * Tabellen anlegen:+ * Tabellen anlegen:
 <code> <code>
 # cd /var/www/volkszaehler.org/ # cd /var/www/volkszaehler.org/
Zeile 439: Zeile 489:
 ====== Aktualisierung der Middleware einschließlich des Frontends ====== ====== Aktualisierung der Middleware einschließlich des Frontends ======
  
-Nachdem Volkszähler im Zuge der Installation eine Kopie des git Repositories erstellt, kann die Installation auch aus diesem Repository aktualisiert werden.+Wenn nur die ''./etc/config.yaml'' angepasst kann wieder das [[software:middleware:installation#install-skript_empfohlene_methode|Installationsskript]] von oben verwendet werden. Da die Datenbank vermutlich nicht angetastet werden soll, die entsprechenden Fragen einfach verneinen.
  
-Eine Beschreibung findet sich im Kapitel zu [[/howto/git]].+Nachdem Volkszähler im Zuge der Installation eine Kopie des git Repositories erstellt, kann die Installation aber auch aus diesem Repository aktualisiert werden. Eine Beschreibung findet sich im Kapitel zu [[/howto/git]]. Beim Image ist dies der notwendige Weg weil da auch andere Dateien editiert wurden.
  
  
 ====== phpMyAdmin installieren ====== ====== phpMyAdmin installieren ======
 +<note>Statt phpMyAdmin empfehlen wir derzeit einen lokalen Client wie z.B. [[https://www.heidisql.com|HeidiSQL]]</note>
 <note important>Für Vollzugriff auf die Volkszählerdatenbank über phpMyAdmin haben wir den User ''vz-admin''. Standardpasswort: ''secure''</note> <note important>Für Vollzugriff auf die Volkszählerdatenbank über phpMyAdmin haben wir den User ''vz-admin''. Standardpasswort: ''secure''</note>
 MySQL-Superuser ist: ''root'' und das Standardpasswort: ''raspberry''\\ MySQL-Superuser ist: ''root'' und das Standardpasswort: ''raspberry''\\
software/middleware/installation.1556373945.txt.gz · Zuletzt geändert: 2019/04/27 16:05 von jau