X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=doc%2Fhtml%2Fch02s05.html;h=cc3d080df73aa85d1266b95e28992d2c101c4cf1;hb=0048944b41be3554f48265f9fae1d71c635b3762;hp=3a13d57f4d5d82e8448b06a2b1082bf443d67be3;hpb=0f988add03549dbb11f12e0e3c6ab8fcbcdea911;p=kivitendo-erp.git diff --git a/doc/html/ch02s05.html b/doc/html/ch02s05.html index 3a13d57f4..cc3d080df 100644 --- a/doc/html/ch02s05.html +++ b/doc/html/ch02s05.html @@ -1,104 +1,49 @@
-![]() | 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/ - -<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 |
---|---|
Vor den einzelnen Optionen muss bei einigen Distributionen ein
- Plus â |
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
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. ] -
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.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 |
---|---|
FCGI 0.69 und höher ist extrem strict in der Behandlung von - Unicode, und verweigert bestimmte Eingaben von kivitendo. Falls es - Probleme mit Umlauten in Ihrere Installation gibt, muss auf die - Vorgängerversion FCGI 0.68 ausgewichen werden. Mit CPAN lässt sie sich die Vorgängerversion wie folgt - installieren: force install M/MS/MSTROUT/FCGI-0.68.tar.gz |
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.
PostgreSQL muss auf verschiedene Weisen angepasst werden.
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.
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
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 |
---|---|
+ CREATE LANGUAGE 'plpgsql'; +\q |
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.