X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=doc%2Fhtml%2Fch02s06.html;h=d3c980316fb4bbb1e041441679e3ef55d55080ca;hb=8ded2eedc25dbec2e489f81f6355fc5f0998f46d;hp=752a4792944f6cf6a9f5008cfbd0d746710fa2dd;hpb=56999db7bdaa9dec5af256c8094095cc9af2e8a4;p=kivitendo-erp.git diff --git a/doc/html/ch02s06.html b/doc/html/ch02s06.html index 752a47929..d3c980316 100644 --- a/doc/html/ch02s06.html +++ b/doc/html/ch02s06.html @@ -1,68 +1,117 @@ - 2.6. Der Task-Server

2.6. Der Task-Server

Der Task-Server ist ein Prozess, der im Hintergrund läuft, in - regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und diese zu - festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser Prozess - wird bisher nur für die Erzeugung der wiederkehrenden Rechnungen - benutzt, wird aber in Zukunft deutlich mehr Aufgaben übertragen - bekommen.

2.6.1. Verfügbare und notwendige Konfigurationsoptionen

Die Konfiguration erfolgt über den Abschnitt - [task_server] in der Datei - config/kivitendo.conf. Die dort verfügbaren - Optionen sind:

- login -

gültiger kivitendo-Benutzername, der benutzt wird, um die - zu verwendende Datenbankverbindung auszulesen. Der Benutzer muss - in der Administration angelegt werden. Diese Option muss - angegeben werden.

- run_as -

Wird der Server vom Systembenutzer root - gestartet, so wechselt er auf den mit run_as - angegebenen Systembenutzer. Der Systembenutzer muss dieselben - Lese- und Schreibrechte haben, wie auch der Webserverbenutzer - (siehe see Manuelle Installation des Programmpaketes). Daher - ist es sinnvoll, hier denselben Systembenutzer einzutragen, - unter dem auch der Webserver läuft.

- debug -

Schaltet Debug-Informationen an und aus.

2.6.2. Automatisches Starten des Task-Servers beim Booten

Der Task-Server verhält sich von seinen Optionen her wie ein - reguläres SystemV-kompatibles Boot-Script. Außerdem wechselt er beim - Starten automatisch in das kivitendo-Installationsverzeichnis.

Deshalb ist es möglich, ihn durch Setzen eines symbolischen - Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess - einzubinden. Da das bei neueren Linux-Distributionen aber nicht - zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die - anstelle eines symbolischen Links verwendet werden können.

2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora - Core)

Kopieren Sie die Datei - scripts/boot/system-v/kivitendo-server - nach /etc/init.d/kivitendo-server. Passen - Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile - DAEMON=....). Binden Sie das Script in den - Boot-Prozess ein. Dies ist distributionsabhängig:

  • Debian-basierende Systeme:

    update-rc.d kivitendo-task-server defaults
    -# Nur bei Debian Squeeze und neuer:
    -insserv kivitendo-task-server
  • OpenSuSE und Fedora Core:

    chkconfig --add kivitendo-task-server

Danach kann der Task-Server mit dem folgenden Befehl gestartet - werden: /etc/init.d/kivitendo-task-server - start -

2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)

Kopieren Sie die Datei - scripts/boot/upstart/kivitendo-task-server.conf - nach /etc/init/kivitendo-task-server.conf. - Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile - exec ....).

Danach kann der Task-Server mit dem folgenden Befehl gestartet - werden: service kivitendo-task-server - start -

2.6.3. Wie der Task-Server gestartet und beendet wird

Der Task-Server wird wie folgt kontrolliert:

./scripts/task_server.pl Befehl

- Befehl ist dabei eine der folgenden - Optionen:

  • - start startet eine neue Instanz des - Task-Servers. Die Prozess-ID wird innerhalb des - users-Verzeichnisses abgelegt.

  • - stop beendet einen laufenden - Task-Server.

  • - restart beendet und startet ihn - neu.

  • - status berichtet, ob der Task-Server - läuft.

Der Task-Server wechselt beim Starten automatisch in das - kivitendo-Installationsverzeichnis.

Dieselben Optionen können auch für die SystemV-basierenden - Runlevel-Scripte benutzt werden (siehe oben).

2.6.4. Task-Server mit mehreren Mandanten

Beim Task-Server wird der Login-Name des Benutzers, unter dem der - Task-Server laufen soll, in die Konfigurationsdatei geschrieben. Hat - man mehrere Mandanten muß man auch mehrere Konfigurationsdateien - anlegen.

Die Konfigurationsdatei ist eine Kopie der Datei kivitendo.conf, - wo in der Kategorie [task_server] der gewünschte "login" steht.

Der alternative Task-Server wird dann mit folgendem Befehl - gestartet:

./scripts/task_server.pl -c config/DATEINAME.conf
\ No newline at end of file + 2.6. Webserver-Konfiguration

2.6. Webserver-Konfiguration

2.6.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:

AliasMatch ^/kivitendo-erp/[^/]+\.pl /var/www/kivitendo-erp/dispatcher.pl
+Alias /kivitendo-erp/ /var/www/kivitendo-erp/
+
+<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]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 Off

2.6.2. Konfiguration für FastCGI/FCGI

2.6.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.6.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.6.2.3. Getestete Kombinationen aus Webservern und Plugin

Folgende Kombinationen sind getestet:

  • Apache 2.2.11 (Ubuntu) und mod_fcgid.

  • Apache 2.2.11 / 2.2.22 (Ubuntu) und mod_fastcgi.

  • Apache 2.4.7 (Ubuntu 14.04.2 LTS) und mod_fcgid.

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 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.gz

2.6.2.4. Konfiguration des Webservers

Bevor 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 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
+  Require all granted
+</Directory>
+
+<DirectoryMatch /path/to/kivitendo-erp/users>
+Require all denied
+</DirectoryMatch>
[Warnung]Warnung

Wer einen älteren Apache als Version 2.4 im Einsatz hat, + muss entsprechend die Syntax der Directorydirektiven verändert. + Statt

Require all granted

muß man Folgendes einstellen:

+  Order Allow,Deny
+  Allow from All 

und statt

Require all denied

muss stehen:

+  Order Deny,Allow
+  Deny from All 

Seit 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 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.

2.6.3. Weitergehende Konfiguration

Fü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.

\ No newline at end of file