X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=doc%2Fhtml%2Fch02s05.html;h=c598c4767985bca9e7af0035f039af284a66282e;hb=c62a6cabffc11bdb2d3fda2025fef2f3d07c5ba9;hp=76b1e0f57d2944e5666c1f6c8e2b76cf736db86d;hpb=781c16772f3c80cc827f11815bfb07b8318621f0;p=kivitendo-erp.git diff --git a/doc/html/ch02s05.html b/doc/html/ch02s05.html index 76b1e0f57..c598c4767 100644 --- a/doc/html/ch02s05.html +++ b/doc/html/ch02s05.html @@ -1,103 +1,73 @@ - 2.5. Webserver-Konfiguration

2.5. Webserver-Konfiguration

2.5.1. Grundkonfiguration mittels CGI

[Anmerkung]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:

AddHandler cgi-script .pl
-Alias /kivitendo-erp/ /var/www/kiviteno-erp/
+   2.5. Anpassung der PostgreSQL-Konfiguration

2.5. Anpassung der PostgreSQL-Konfiguration

PostgreSQL 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):

2.5.1. Zeichensätze/die Verwendung von Unicode/UTF-8

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
+exit 

Andernfalls 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 clustername

Die 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 + \l geprüft werden.

2.5.2. Änderungen an Konfigurationsdateien

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 + Parameter listen_address gesteuert. Laufen + PostgreSQL und kivitendo auf demselben Rechner, so kann dort der Wert + localhost verwendet 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 die postgresql.conf zu 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 password

2.5.3. Erweiterung für servergespeicherte Prozeduren

In der Datenbank template1 muss die + Unterstützung für servergespeicherte Prozeduren eingerichet werden. + Melden Sie sich dafür als Benutzer “postgres” an der Datenbank an: +

su - postgres
+psql template1

führen Sie die folgenden Kommandos aus:

CREATE EXTENSION IF NOT EXISTS plpgsql;
+\q
[Anmerkung]Anmerkung

+ CREATE EXTENSION ist seit Version 9.1 die + bevorzugte Syntax um die Sprache plpgsql + 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';
+\q

2.5.4. Erweiterung für Trigram Prozeduren

Ab 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>
- Options ExecCGI Includes FollowSymlinks
-</Directory>
-
-<Directory /var/www/kivitendo-erp/users>
- Order Deny,Allow
- Deny from All
-</Directory>

Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher - das kivitendo-Archiv entpacket haben.

[Anmerkung]Anmerkung

Vor den einzelnen Optionen muss bei einigen Distributionen ein - Plus ‘+’ gesetzt 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 Off

2.5.2. Konfiguration für FastCGI/FCGI

2.5.2.1. Was ist FastCGI?

Direkt 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. ] -

2.5.2.2. Warum FastCGI?

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.

2.5.2.3. Getestete Kombinationen aus Webservern und Plugin

Folgende Kombinationen sind getestet:

  • Apache 2.2.11 (Ubuntu) und mod_fcgid.

  • Apache 2.2.11 (Ubuntu) und mod_fastcgi.

Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer - Zeit nicht mehr weiter entwickelt wird. Im Folgenden wird auf - mod_fastcgi nicht mehr explizit eingegangen.

Als Perl Backend wird das Modul FCGI.pm - verwendet.

[Warnung]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 Ihrere 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.gz

2.5.2.4. Konfiguration des Webservers

Bevor Sie versuchen, eine kivitendo Installation unter FCGI - laufen zu lassen, empfliehlt 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 fcgid

Die Konfiguration für die Verwendung von kivitendo mit FastCGI - erfolgt durch Anpassung der vorhandenen Alias- - und Directory-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
-  Order Allow,Deny
-  Allow from All
-</Directory>
-
-<DirectoryMatch /path/to/kivitendo-erp/users>
-  Order Deny,Allow
-  Deny from All
-</DirectoryMatch>

Seit mod_fcgid-Version 2.6.3 gelten sehr kleine Grenzen für - die maximale Größe eines Requests. Diese sollte wie folgt - hochgesetzt werden:

FcgidMaxRequestLen 10485760

Das 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
-  Order Allow,Deny
-  Allow from All
-</Directory>
-
-<DirectoryMatch /path/to/kivitendo-erp/users>
-  Order Deny,Allow
-  Deny from All
-</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.

\ No newline at end of file +Eingabe Passwort +\q

Benutzername Postgres und Passwort können jetzt beim Anlegen + einer Datenbank bzw. bei Updatescripten, die SuperuserRechte + benötigen, eingegeben werden.

[Anmerkung]Anmerkung

+ pg_trgm ist je nach Distribution nicht im + Standard-Paket von Postgres enthalten. Ein

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

+

2.5.5. Datenbankbenutzer anlegen

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.

\ No newline at end of file