Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:middleware:installation

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:middleware:installation [2019/03/25 11:57]
jau --static-dir zu middleware.json
software:middleware:installation [2019/08/27 15:10] (aktuell)
jau [nginx] Zugriffpfad und Ablageort
Zeile 9: Zeile 9:
   * MySQL, MariaDB, PostgreSQL oder SQLite + PDO Treiber   * MySQL, MariaDB, PostgreSQL oder SQLite + PDO Treiber
   * APC (optional, aber empfohlen)   * APC (optional, aber empfohlen)
-  * Apache ​mod_rewrite ​(optional)+  * nginx, ​Apache (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 eigenen sich hier Debian oder Ubuntu, sowie für den Raspberry Pi: Raspbian oder Raspbian Light.("​Buster"​-Version,​ oder "​Stretch"​ mit PHP Update)\\
 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 ​php7.1-cli php7.1-mysql php-apcu mysql-server mysql-client ​php7.1-xml php-mbstring ca-certificates ​+<​code>​sudo apt-get install git-core ​php-cli php-mysql php-apcu mysql-server mysql-client ​php-xml php-mbstring ca-certificates ​
 </​code>​ </​code>​
 bzw. für PostgreSQL ​ bzw. für PostgreSQL ​
-<​code>​apt-get install git-core ​php7.1-cli php7.1-pgsql php-apcu postgresql-8.4</​code>​+<​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 25: Zeile 26:
  
  
-===== Install-Skript (empfohlene ​Installationsmethode) =====+===== Install-Skript (empfohlene ​Methode) =====
 <​code>​ <​code>​
 wget https://​raw.github.com/​volkszaehler/​volkszaehler.org/​master/​bin/​install.sh wget https://​raw.github.com/​volkszaehler/​volkszaehler.org/​master/​bin/​install.sh
Zeile 177: Zeile 178:
 Das Script fragt, was es wohin installieren soll. Das Script fragt, was es wohin installieren soll.
  
-==== Webserver ​per PPM (empfohlene Methode)==== +===== Webserver ​einrichten ===== 
-Der PPM-Webserver auf Basis von PHP läuft wesentlich Performanter als Apache2 und ist gerade auf schwacher Hardware wie RaspberryPi zu empfehlen.+Im Folgenden sind 3 mögliche Serverkonfigurationen beschrieben. Für Kompatibiltät mit alten Scripts und Konfigurationen empfehlen wir bei PPM zusätzlich einen Proxy einzurichten. 
 + 
 +==== PPM als Server ​(empfohlene Methode) ==== 
 +Der PPM-Webserver auf Basis von PHP läuft wesentlich Performanter als Apache2 und ist gerade auf schwacher Hardware wie RaspberryPi zu empfehlen. In Standardkonfiguration bedient er Anfragen auf Port 8080.
  
   - Systemd Service einrichten ''​sudo nano /​etc/​systemd/​system/​middleware.service''<​code>​   - Systemd Service einrichten ''​sudo nano /​etc/​systemd/​system/​middleware.service''<​code>​
Zeile 187: Zeile 191:
  
 [Service] [Service]
-ExecStart=/​usr/​bin/​php /​var/​www/​volkszaehler.org/​vendor/​bin/​ppm start -c /​var/​www/​volkszaehler.org/​etc/​middleware.json -cgi-path=/​usr/​bin/​php+ExecStart=/​usr/​bin/​php /​var/​www/​volkszaehler.org/​vendor/​bin/​ppm start -c /​var/​www/​volkszaehler.org/​etc/​middleware.json ​--cgi-path=/​usr/​bin/​php
 ExecReload=/​bin/​kill -HUP $MAINPID ExecReload=/​bin/​kill -HUP $MAINPID
 StandardOutput=journal StandardOutput=journal
Zeile 196: Zeile 200:
   - Server Konfiguration anpassen ​   - Server Konfiguration anpassen ​
     - ''​nano ~/​volkszaehler.org/​etc/​middleware.json''​     - ''​nano ~/​volkszaehler.org/​etc/​middleware.json''​
-    - ändern: ''"​port":​ 80,''​ 
     - ändern: ''"​static-directory":​ "/​var/​www/​volkszaehler.org/​htdocs",''​     - ändern: ''"​static-directory":​ "/​var/​www/​volkszaehler.org/​htdocs",''​
   - Middleware Weiterleitung ''​url''​ anpassen ''​nano ~/​volkszaehler.org/​htdocs/​js/​options.js''​ <​code>​   - Middleware Weiterleitung ''​url''​ anpassen ''​nano ~/​volkszaehler.org/​htdocs/​js/​options.js''​ <​code>​
Zeile 205: Zeile 208:
   - Systemd Service starten ''​sudo systemctl start middleware''​   - Systemd Service starten ''​sudo systemctl start middleware''​
  
-==== Alternative:​ Apache installieren ​(unter Debian "​Jessie"​ und "​Stretch"​) ==== +==== nginx als Proxy (empfohlene Methode) ==== 
-  * Pakete installieren ''​sudo apt-get install apache2 libapache2-mod-php7.1''​ +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
-  * 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/+sudo apt install nginx 
 +sudo rm /etc/nginx/sites-enabled/default 
 +sudo nano /etc/​nginx/​sites-available/​volkszaehler
 </​code>​ </​code>​
- +In diese wird eingefügt:
-  * Apache Config bearbeiten um Rewrite zu erlauben: ''​sudo nano /​etc/​apache2/​apache2.conf''​ +
-  * In der Datei den Abschnitt suchen:+
 <​code>​ <​code>​
-<​Directory /​var/​www/>​ +# Volkszaehler
-        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.+include /​etc/​nginx/​proxy_params;​
  
-Sollte es zu einem PHP Fehler beim Anlegen der Datenbank kommen versucht mal Doctrine per Hand zu Installieren.+server { 
 +  listen 80; 
 +  listen [::]:80; 
 +  server_name volkszaehler.org;
  
-===== Manuelle Installation =====+  location / { 
 +    proxy_pass http://​127.0.0.1:​8080;​ 
 +    include /​etc/​nginx/​proxy_params;​ 
 +  }
  
-=== Download der volkszaehler.org Skripte === +  location /middleware { 
-Download der Skripte aus dem git Repository: +    ​rewrite ^/middleware(.php)?​(/.*)? $2; 
-<​code>​ +    proxy_pass http://127.0.0.1:8080/; 
-git clone git://github.com/volkszaehler/volkszaehler.org.git ~/​volkszaehler.org +  } 
-sudo ln -sf ~/volkszaehler.org ​/var/www/​volkszaehler.org + 
-sudo chown -R www-data /var/www/volkszaehler.org +  location ​/api { 
-</code>+    rewrite ^/api(/.*)? $1; 
 +    ​proxy_pass http://127.0.0.1:8080/
 +  }
  
-=== Apache konfigurieren === +  location /frontend { 
-  mod_rewrite aktivieren+    ​rewrite ^/​frontend/​(.*) $1; 
-<​code>​ +    proxy_pass http://​127.0.0.1:​8080/;​ 
-sudo a2enmod rewrite+  } 
 + 
 +# 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.
  
-  * Default VirtualHost bearbeiten:+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 Datei verwiesen wird.</​note>​ 
 +Damit der nginx die Config lädt:
 <​code>​ <​code>​
-/etc/apache2/sites-enabled/000-default:​ +sudo ln -s /etc/nginx/sites-available/volkszaehler ​/etc/nginx/sites-enabled/volkszaehler
-    DocumentRoot ​/var/www/volkszaehler.org/​htdocs/+
 </​code>​ </​code>​
- +Dann nur noch Starten und in Bootprozess einbinden:
-  * unter <​Directory /​var/​www/>​:+
 <​code>​ <​code>​
-AllowOverride FileInfo Limit Options Indexes Authconfig+sudo systemctl start nginx 
 +sudo systemctl enable nginx
 </​code>​ </​code>​
  
-=== Alternativ: nginx konfigurieren ​===+==== 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.</​note>​
 <​code>​ <​code>​
 server { server {
Zeile 272: Zeile 292:
         location ~ \.php {         location ~ \.php {
                 include snippets/​fastcgi-php.conf;​                 include snippets/​fastcgi-php.conf;​
-        #       # With php5-cgi alone:+        #       # With php7-cgi alone:
         #       ​fastcgi_pass 127.0.0.1:​9000;​         #       ​fastcgi_pass 127.0.0.1:​9000;​
-                # With php5-fpm: +                # With php7-fpm: 
-                fastcgi_pass unix:/​var/​run/​php5-fpm.sock;+                fastcgi_pass unix:/​var/​run/​php7-fpm.sock;
         }         }
 } }
 </​code>​ </​code>​
  
-Wichtig ist dass in der config in der Zeile "​location ~ \.php {" kein $-Zeichen hinter dem PHP steht. Siehe [[http://​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"​) ====
 +<​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.</​note>​
 +  * Pakete installieren ''​sudo apt-get install apache2 libapache2-mod-php7.1''​
 +  * 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: Apache 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>​
 +Dann den Apache nur noch neu starten
 +<​code>​sudo systemctl restart apache2</​code>​
 +
 +
 +===== Manuelle Installation =====
 +
 +=== Download der volkszaehler.org Skripte ===
 +Download der Skripte aus dem git Repository:
 +<​code>​
 +git clone git://​github.com/​volkszaehler/​volkszaehler.org.git ~/​volkszaehler.org
 +sudo ln -sf ~/​volkszaehler.org /​var/​www/​volkszaehler.org
 +sudo chown -R www-data /​var/​www/​volkszaehler.org
 +</​code>​
  
 === Installation der benötigten Module === === Installation der benötigten Module ===
Zeile 304: Zeile 375:
 <​code>​ <​code>​
 cd /​var/​www/​volkszaehler.org/​etc/​ cd /​var/​www/​volkszaehler.org/​etc/​
-cp volkszaehler.conf.template.php volkszaehler.conf.php +cp config.dist.yaml config.yaml 
-edit volkszaehler.conf.php+</​code>​ 
-    ​$config['​db'​]['​host'​] ​              = '​localhost';​ +edit config.yaml
-    ​$config['​db'​]['​user'​] ​              = 'vz'; +<​code>​ 
-    ​$config['​db'​]['​password'​] ​          = '<​shhh!>';​ +db
-    ​$config['​db'​]['​dbname'​] ​            = 'volkszaehler';+  ​host: 127.0.0.1 
 +  port: 3306 
 +  ​uservz 
 +  password: demo 
 +  dbnamevolkszaehler
 </​code>​ </​code>​
  
Zeile 378: Zeile 453:
 mysqladmin reload -p mysqladmin reload -p
 </​code>​ </​code>​
 +
 +=== Webserver ===
 +Wie bereits [[/​software/​middleware/​installation#​webserver_einrichten|weiter oben]] beschrieben.
  
 ====== Aktualisierung der Middleware einschließlich des Frontends ====== ====== Aktualisierung der Middleware einschließlich des Frontends ======
Zeile 387: Zeile 465:
  
 ====== 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.1553511467.txt.gz · Zuletzt geändert: 2019/03/25 11:57 von jau