X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/bfcdd44a46b2347c59bed1765768ca318a0c324e..HEAD:/doc/html/ch02s06.html diff --git a/doc/html/ch02s06.html b/doc/html/ch02s06.html index bf355e738..80c32dd7e 100644 --- a/doc/html/ch02s06.html +++ b/doc/html/ch02s06.html @@ -1,119 +1,73 @@
-![]() | Anmerkung |
|---|---|
Für einen deutlichen Performanceschub sorgt die Ausführung - mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt - Konfiguration für FastCGI/FCGI beschrieben. |
Der Zugriff auf das Programmverzeichnis muss in der Apache
- Webserverkonfigurationsdatei httpd.conf eingestellt
- werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
- anderen Datei hinzu, die beim Starten des Webservers eingelesen
- wird:
AliasMatch ^/kivitendo-erp/[^/]+\.pl /var/www/kivitendo-erp/dispatcher.pl -Alias /kivitendo-erp/ /var/www/kivitendo-erp/ +2.6. Anpassung der PostgreSQL-Konfiguration \ No newline at end of file +Eingabe Passwort +\qPostgreSQL muss auf verschiedene Weisen angepasst werden.
Dies variert je nach eingesetzter Distribution, da distributionsabhängig unterschiedliche Strategien beim Upgrade der Postgres Version eingesetzt werden. + Als Hinweis einige Links zu den drei Distribution (Stand Dezember 2018):
kivitendo setzt zwingend voraus, dass die Datenbank + Unicode/UTF-8 als Encoding einsetzt. Bei aktuellen + Serverinstallationen braucht man hier meist nicht einzugreifen.
Das Encoding des Datenbankservers kann überprüft werden. Ist das + Encoding der Datenbank "template1" "Unicode" bzw. "UTF-8", so braucht + man nichts weiteres diesbezüglich unternehmen. Zum Testen:
su postgres +echo '\l' | psql +exitAndernfalls ist es notwendig, einen neuen Datenbankcluster mit + Unicode-Encoding anzulegen und diesen zu verwenden. Unter Debian und + Ubuntu kann dies z.B. für PostgreSQL 9.3 mit dem folgenden Befehl + getan werden:
pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 9.3 clusternameDie Datenbankversionsnummer muss an die tatsächlich verwendete + Versionsnummer angepasst werden.
Unter anderen Distributionen gibt es ähnliche Methoden.
Das Encoding einer Datenbank kann in psql mit +
\lgeprüft werden.In der Datei
postgresql.conf, die je nach + Distribution in verschiedenen Verzeichnissen liegen kann (z.B. +/var/lib/pgsql/data/oder +/etc/postgresql/), muss sichergestellt werden, + dass TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den + Parameterlisten_addressgesteuert. Laufen + PostgreSQL und kivitendo auf demselben Rechner, so kann dort der Wert +localhostverwendet werden. Andernfalls müssen + Datenbankverbindungen auch von anderen Rechnern aus zugelassen werden, + was mit dem Wert*geschieht.In der Datei
pg_hba.conf, die im gleichen + Verzeichnis wie diepostgresql.confzu finden + sein sollte, müssen die Berechtigungen für den Zugriff geändert + werden. Hier gibt es mehrere Möglichkeiten. Sinnvoll ist es nur die + nötigen Verbindungen immer zuzulassen, für eine lokal laufende + Datenbank zum Beispiel:local all kivitendo password +host all kivitendo 127.0.0.1 255.255.255.255 scram-sha-256In der Datenbank
template1muss die + Unterstützung für servergespeicherte Prozeduren eingerichet werden. + Melden Sie sich dafür als Benutzer âpostgresâ an der Datenbank an: +su - postgres +psql template1führen Sie die folgenden Kommandos aus:
CREATE EXTENSION IF NOT EXISTS plpgsql; +\q
Anmerkung +
CREATE EXTENSIONist seit Version 9.1 die + bevorzugte Syntax um die Spracheplpgsql+ anzulegen. In diesen Versionen ist die Extension meist auch schon + vorhanden. Sollten Sie eine ältere Version von Postgres haben, + benutzen Sie stattdessen den folgenden Befehl.CREATE LANGUAGE 'plpgsql'; +\qAb Version 3.5.1 wird die Trigram-Index-Erweiterung benötigt. + Diese wird mit dem SQL-Updatescript + sql/Pg-upgrade2/trigram_extension.sql und Datenbank-Super-Benutzer + Rechten automatisch installiert. Dazu braucht der + DatenbankSuperbenutzer "postgres" ein Passwort.
su - postgres +psql +\password postgres -<Directory /var/www/kivitendo-erp> - AddHandler cgi-script .pl - Options ExecCGI Includes FollowSymlinks -</Directory> - -<Directory /var/www/kivitendo-erp/users> - Require all granted -</Directory>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher - das kivitendo-Archiv entpacket haben.
Anmerkung Vor den einzelnen Optionen muss bei einigen Distributionen ein - Plus â
+â gesetzt werden.Bei einigen Distribution (Ubuntu ab 14.04, Debian ab 8.2) muss - noch explizit das cgi-Modul mittels
a2enmod cgi- aktiviert werden.
Auf einigen Webservern werden manchmal die Grafiken und - Style-Sheets nicht ausgeliefert. In solchen Fällen hat es oft - geholfen, die folgende Option in die Konfiguration aufzunehmen:
EnableSendfile OffDirekt aus Wikipedia - kopiert:
- [ FastCGI ist ein Standard für die Einbindung - externer Software zur Generierung dynamischer Webseiten in einem - Webserver. FastCGI ist vergleichbar zum Common Gateway Interface - (CGI), wurde jedoch entwickelt, um dessen Performance-Probleme zu - umgehen. ] -
Perl Programme (wie kivitendo eines ist) werden nicht statisch - kompiliert. Stattdessen werden die Quelldateien bei jedem Start - übersetzt, was bei kurzen Laufzeiten einen GroÃteil der Laufzeit - ausmacht. Während SQL Ledger einen GroÃteil der Funktionalität in - einzelne Module kapselt, um immer nur einen kleinen Teil laden zu - müssen, ist die Funktionalität von kivitendo soweit gewachsen, dass - immer mehr Module auf den Rest des Programms zugreifen. Zusätzlich - benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber - entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies - führt dazu dass ein kivitendo Aufruf der Kernmasken mittlerweile - deutlich länger dauert als früher, und dass davon 90% für das Laden - der Module verwendet wird.
Mit FastCGI werden nun die Module einmal geladen, und danach - wird nur die eigentliche Programmlogik ausgeführt.
Folgende Kombinationen sind getestet:
Apache 2.4.7 (Ubuntu 14.04.2 LTS) und mod_fcgid.
Apache 2.4.18 (Ubuntu 16.04 LTS) und mod_fcgid
Apache 2.4.29 (Ubuntu 18.04 LTS) und mod_fcgid
Als Perl Backend wird das Modul
FCGI.pm- verwendet.
Warnung FCGI-Versionen ab 0.69 und bis zu 0.71 inklusive sind extrem - strict in der Behandlung von Unicode, und verweigern bestimmte - Eingaben von kivitendo. Falls es Probleme mit Umlauten in Ihrer - Installation gibt, muss zwingend Version 0.68 oder aber Version - 0.72 und neuer eingesetzt werden.
Mit CPAN lässt sie - sich die Vorgängerversion wie folgt installieren:
force install M/MS/MSTROUT/FCGI-0.68.tar.gzBevor Sie versuchen, eine kivitendo Installation unter FCGI - laufen zu lassen, empfiehlt es sich die Installation ersteinmal - unter CGI aufzusetzen. FCGI macht es nicht einfach Fehler zu - debuggen die beim ersten aufsetzen auftreten können. Sollte die - Installation schon funktionieren, lesen Sie weiter.
Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann - unter Debian/Ubuntu z.B. mit folgendem Befehl geschehen:
a2enmod fcgidDie Konfiguration für die Verwendung von kivitendo mit FastCGI - erfolgt durch Anpassung der vorhandenen
Alias- - undDirectory-Direktiven. Dabei wird zwischen - dem Installationspfad von kivitendo im Dateisystem - ("/path/to/kivitendo-erp") und der URL - unterschieden, unter der kivitendo im Webbrowser erreichbar ist - ("/url/for/kivitendo-erp").Folgender Konfigurationsschnipsel funktioniert mit - mod_fastcgi:
AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi -Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/ - -<Directory /path/to/kivitendo-erp> - AllowOverride All - Options ExecCGI Includes FollowSymlinks - Require all granted -</Directory> - -<DirectoryMatch /path/to/kivitendo-erp/users> -Require all denied -</DirectoryMatch>
Warnung Wer einen älteren Apache als Version 2.4 im Einsatz hat, - muss entsprechend die Syntax der Directorydirektiven verändert. - Statt
Require all grantedmuà man Folgendes einstellen:
- Order Allow,Deny - Allow from Allund statt
Require all deniedmuss stehen:
- Order Deny,Allow - Deny from AllSeit mod_fcgid-Version 2.3.6 gelten sehr kleine Grenzen für - die maximale GröÃe eines Requests. Diese sollte wie folgt - hochgesetzt werden:
FcgidMaxRequestLen 10485760Das Ganze sollte dann so aussehen:
AddHandler fcgid-script .fpl -AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl -Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/ -FcgidMaxRequestLen 10485760 - -<Directory /path/to/kivitendo-erp> - AllowOverride All - Options ExecCGI Includes FollowSymlinks - Require all granted -</Directory> - -<DirectoryMatch /path/to/kivitendo-erp/users> -Require all denied -</DirectoryMatch>Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle - Zugriffe auf die einzelnen Scripte werden auf diesen umgeleitet. - Dadurch, dass zur Laufzeit öfter mal Scripte neu geladen werden, - gibt es hier kleine Performance-EinbuÃen.
Es ist möglich, die gleiche kivitendo Version parallel unter - CGI und FastCGI zu betreiben. Dafür bleiben die Directorydirektiven - wie oben beschrieben, die URLs werden aber umgeleitet:
# Zugriff über CGI -Alias /url/for/kivitendo-erp /path/to/kivitendo-erp - -# Zugriff mit mod_fcgid: -AliasMatch ^/url/for/kivitendo-erp-fcgid/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl -Alias /url/for/kivitendo-erp-fcgid/ /path/to/kivitendo-erp/Dann ist unter
/url/for/kivitendo-erp/- die normale Version erreichbar, und unter -/url/for/kivitendo-erp-fcgid/die - FastCGI-Version.- Kivitendo unterstützt, dass Benutzerauthentifizierung über den Webserver mittels des »Basic«-HTTP-Authentifizierungs-Schema erfolgt - (siehe RFC 7617). Dazu ist es aber nötig, dass der dabei vom Client - mitgeschickte Header
Authorizationvom Webserver an Kivitendo über die Umgebungsvariable -HTTP_AUTHORIZATIONweitergegeben wird, was standardmäÃig nicht der Fall ist. Für Apache kann dies über die - folgende Konfigurationsoption aktiviert werden: -SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1Für einen deutlichen Sicherheitsmehrwert sorgt die Ausführung - von kivitendo nur über https-verschlüsselten Verbindungen, sowie - weiteren Zusatzmassnahmen, wie beispielsweise Basic Authenticate. Die - Konfigurationsmöglichkeiten sprengen allerdings den Rahmen dieser - Anleitung, hier ein Hinweis auf einen entsprechenden Foreneintrag - (Stand Sept. 2015) und einen aktuellen (Stand Mai 2017) - SSL-Konfigurations-Generator.
Benutzername Postgres und Passwort können jetzt beim Anlegen + einer Datenbank bzw. bei Updatescripten, die SuperuserRechte + benötigen, eingegeben werden.
![]() | Anmerkung |
|---|---|
+ select * from pg_available_extensions where name ='pg_trgm'; + in template1 sollte entsprechend erfolgreich sein. Andernfalls muss + das Paket nachinstalliert werden, bspw. bei debian/ubuntu + apt install postgresql-contrib + |
Wenn Sie nicht den Datenbanksuperuser âpostgresâ zum Zugriff + benutzen wollen, so sollten Sie bei PostgreSQL einen neuen Benutzer + anlegen. Ein Beispiel, wie Sie einen neuen Benutzer anlegen + können:
Die Frage, ob der neue User Superuser sein soll, können Sie mit + nein beantworten, genauso ist die Berechtigung neue User (Roles) zu + generieren nicht nötig.
su - postgres +createuser -d -P kivitendo +exit
Wenn Sie später einen Datenbankzugriff konfigurieren, verändern + Sie den evtl. voreingestellten Benutzer âpostgresâ auf âkivitendoâ + bzw. den hier gewählten Benutzernamen.