Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision c8a19933

Von Moritz Bunkus vor etwa 12 Jahren hinzugefügt

  • ID c8a19933e3a4b3b0174078b70f7ea9faac56d94e
  • Vorgänger 69480f28
  • Nachfolger faa7c313

Kapitel zur Installations-Übersicht ergänzt

Unterschiede anzeigen:

doc/html/ch02s06.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <title>2.6. Der Task-Server</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s05.html" title="2.5. Webserver-Konfiguration"><link rel="next" href="ch02s07.html" title="2.7. Benutzerauthentifizierung und Administratorpasswort"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.6. Der Task-Server</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s05.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.6. Der Task-Server"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.task-server"></a>2.6. Der Task-Server</h2></div></div></div><p>Der Task-Server ist ein Prozess, der im Hintergrund läuft, in
4
      regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und diese zu
5
      festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser Prozess
6
      wird bisher nur für die Erzeugung der wiederkehrenden Rechnungen
7
      benutzt, wird aber in Zukunft deutlich mehr Aufgaben übertragen
8
      bekommen.</p><div class="sect2" title="2.6.1. Verfügbare und notwendige Konfigurationsoptionen"><div class="titlepage"><div><div><h3 class="title"><a name="Konfiguration-des-Task-Servers"></a>2.6.1. Verfügbare und notwendige Konfigurationsoptionen</h3></div></div></div><p>Die Konfiguration erfolgt über den Abschnitt
9
        <code class="literal">[task_server]</code> in der Datei
10
        <code class="filename">config/kivitendo.conf</code>. Die dort verfügbaren
11
        Optionen sind:</p><div class="variablelist"><dl><dt><span class="term">
12
                     <code class="varname">login</code>
13
                  </span></dt><dd><p>gültiger kivitendo-Benutzername, der benutzt wird, um die
14
              zu verwendende Datenbankverbindung auszulesen. Der Benutzer muss
15
              in der Administration angelegt werden. Diese Option muss
16
              angegeben werden.</p></dd><dt><span class="term">
17
                     <code class="varname">run_as</code>
18
                  </span></dt><dd><p>Wird der Server vom Systembenutzer <code class="literal">root</code>
19
              gestartet, so wechselt er auf den mit <code class="literal">run_as</code>
20
              angegebenen Systembenutzer. Der Systembenutzer muss dieselben
21
              Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
22
              (siehe see <a class="xref" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>). Daher
23
              ist es sinnvoll, hier denselben Systembenutzer einzutragen,
24
              unter dem auch der Webserver läuft.</p></dd><dt><span class="term">
25
                     <code class="varname">debug</code>
26
                  </span></dt><dd><p>Schaltet Debug-Informationen an und aus.</p></dd></dl></div></div><div class="sect2" title="2.6.2. Automatisches Starten des Task-Servers beim Booten"><div class="titlepage"><div><div><h3 class="title"><a name="Einbinden-in-den-Boot-Prozess"></a>2.6.2. Automatisches Starten des Task-Servers beim Booten</h3></div></div></div><p>Der Task-Server verhält sich von seinen Optionen her wie ein
27
        reguläres SystemV-kompatibles Boot-Script. Außerdem wechselt er beim
28
        Starten automatisch in das kivitendo-Installationsverzeichnis.</p><p>Deshalb ist es möglich, ihn durch Setzen eines symbolischen
29
        Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
30
        einzubinden. Da das bei neueren Linux-Distributionen aber nicht
31
        zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
32
        anstelle eines symbolischen Links verwendet werden können.</p><div class="sect3" title="2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e779"></a>2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora
33
          Core)</h4></div></div></div><p>Kopieren Sie die Datei
34
          <code class="filename">scripts/boot/system-v/kivitendo-server</code>
35
          nach <code class="filename">/etc/init.d/kivitendo-server</code>. Passen
36
          Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
37
          <code class="literal">DAEMON=....</code>). Binden Sie das Script in den
38
          Boot-Prozess ein. Dies ist distributionsabhängig:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian-basierende Systeme:</p><pre class="programlisting">update-rc.d kivitendo-task-server defaults
39
# Nur bei Debian Squeeze und neuer:
40
insserv kivitendo-task-server</pre></li><li class="listitem"><p>OpenSuSE und Fedora Core:</p><pre class="programlisting">chkconfig --add kivitendo-task-server</pre></li></ul></div><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
41
          werden: <span class="command"><strong>/etc/init.d/kivitendo-task-server
42
          start</strong></span>
43
               </p></div><div class="sect3" title="2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e809"></a>2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)</h4></div></div></div><p>Kopieren Sie die Datei
44
          <code class="filename">scripts/boot/upstart/kivitendo-task-server.conf</code>
45
          nach <code class="filename">/etc/init/kivitendo-task-server.conf</code>.
46
          Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
47
          <code class="literal">exec ....</code>).</p><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
48
          werden: <span class="command"><strong>service kivitendo-task-server
49
          start</strong></span>
50
               </p></div></div><div class="sect2" title="2.6.3. Wie der Task-Server gestartet und beendet wird"><div class="titlepage"><div><div><h3 class="title"><a name="Prozesskontrolle"></a>2.6.3. Wie der Task-Server gestartet und beendet wird</h3></div></div></div><p>Der Task-Server wird wie folgt kontrolliert:</p><pre class="programlisting">./scripts/task_server.pl Befehl</pre><p>
51
               <code class="literal">Befehl</code> ist dabei eine der folgenden
52
        Optionen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
53
                     <code class="literal">start</code> startet eine neue Instanz des
54
            Task-Servers. Die Prozess-ID wird innerhalb des
55
            <code class="filename">users</code>-Verzeichnisses abgelegt.</p></li><li class="listitem"><p>
56
                     <code class="literal">stop</code> beendet einen laufenden
57
            Task-Server.</p></li><li class="listitem"><p>
58
                     <code class="literal">restart</code> beendet und startet ihn
59
            neu.</p></li><li class="listitem"><p>
60
                     <code class="literal">status</code> berichtet, ob der Task-Server
61
            läuft.</p></li></ul></div><p>Der Task-Server wechselt beim Starten automatisch in das
62
        kivitendo-Installationsverzeichnis.</p><p>Dieselben Optionen können auch für die SystemV-basierenden
63
        Runlevel-Scripte benutzt werden (siehe oben).</p></div><div class="sect2" title="2.6.4. Task-Server mit mehreren Mandanten"><div class="titlepage"><div><div><h3 class="title"><a name="Prozesskontrolle2"></a>2.6.4. Task-Server mit mehreren Mandanten</h3></div></div></div><p>Beim Task-Server wird der Login-Name des Benutzers, unter dem der
64
        Task-Server laufen soll, in die Konfigurationsdatei geschrieben. Hat
65
        man mehrere Mandanten muß man auch mehrere Konfigurationsdateien
66
        anlegen.</p><p>Die Konfigurationsdatei ist eine Kopie der Datei kivitendo.conf,
67
        wo in der Kategorie [task_server] der gewünschte "login" steht.</p><p>Der alternative Task-Server wird dann mit folgendem Befehl
68
        gestartet:</p><pre class="programlisting">./scripts/task_server.pl -c config/DATEINAME.conf</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.5. Webserver-Konfiguration&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.7. Benutzerauthentifizierung und Administratorpasswort</td></tr></table></div></body></html>
3
   <title>2.6. Webserver-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s05.html" title="2.5. Anpassung der PostgreSQL-Konfiguration"><link rel="next" href="ch02s07.html" title="2.7. Der Task-Server"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.6. Webserver-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s05.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.6. Webserver-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Apache-Konfiguration"></a>2.6. Webserver-Konfiguration</h2></div></div></div><div class="sect2" title="2.6.1. Grundkonfiguration mittels CGI"><div class="titlepage"><div><div><h3 class="title"><a name="d0e652"></a>2.6.1. Grundkonfiguration mittels CGI</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Für einen deutlichen Performanceschub sorgt die Ausführung
4
          mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
5
          <a class="xref" href="ch02s06.html#Apache-Konfiguration.FCGI" title="2.6.2. Konfiguration für FastCGI/FCGI">Konfiguration für FastCGI/FCGI</a> beschrieben.</p></td></tr></table></div><p>Der Zugriff auf das Programmverzeichnis muss in der Apache
6
        Webserverkonfigurationsdatei <code class="literal">httpd.conf</code> eingestellt
7
        werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
8
        anderen Datei hinzu, die beim Starten des Webservers eingelesen
9
        wird:</p><pre class="programlisting">AddHandler cgi-script .pl
10
Alias /kivitendo-erp/ /var/www/kiviteno-erp/
11

  
12
&lt;Directory /var/www/kivitendo-erp&gt;
13
 Options ExecCGI Includes FollowSymlinks
14
&lt;/Directory&gt;
15

  
16
&lt;Directory /var/www/kivitendo-erp/users&gt;
17
 Order Deny,Allow
18
 Deny from All
19
&lt;/Directory&gt;</pre><p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
20
        das kivitendo-Archiv entpacket haben.</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Vor den einzelnen Optionen muss bei einigen Distributionen ein
21
          Plus ‘<code class="literal">+</code>’ gesetzt werden.</p></td></tr></table></div><p>Auf einigen Webservern werden manchmal die Grafiken und
22
        Style-Sheets nicht ausgeliefert. In solchen Fällen hat es oft
23
        geholfen, die folgende Option in die Konfiguration aufzunehmen:</p><pre class="programlisting">EnableSendfile Off</pre></div><div class="sect2" title="2.6.2. Konfiguration für FastCGI/FCGI"><div class="titlepage"><div><div><h3 class="title"><a name="Apache-Konfiguration.FCGI"></a>2.6.2. Konfiguration für FastCGI/FCGI</h3></div></div></div><div class="sect3" title="2.6.2.1. Was ist FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WasIstEs"></a>2.6.2.1. Was ist FastCGI?</h4></div></div></div><p>Direkt aus <a class="ulink" href="http://de.wikipedia.org/wiki/FastCGI" target="_top">Wikipedia</a>
24
          kopiert:</p><p>
25
                  [<span class="citation"> FastCGI ist ein Standard für die Einbindung
26
          externer Software zur Generierung dynamischer Webseiten in einem
27
          Webserver. FastCGI ist vergleichbar zum Common Gateway Interface
28
          (CGI), wurde jedoch entwickelt, um dessen Performance-Probleme zu
29
          umgehen. </span>]
30
               </p></div><div class="sect3" title="2.6.2.2. Warum FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Warum"></a>2.6.2.2. Warum FastCGI?</h4></div></div></div><p>Perl Programme (wie kivitendo eines ist) werden nicht statisch
31
          kompiliert. Stattdessen werden die Quelldateien bei jedem Start
32
          übersetzt, was bei kurzen Laufzeiten einen Großteil der Laufzeit
33
          ausmacht. Während SQL Ledger einen Großteil der Funktionalität in
34
          einzelne Module kapselt, um immer nur einen kleinen Teil laden zu
35
          müssen, ist die Funktionalität von kivitendo soweit gewachsen, dass
36
          immer mehr Module auf den Rest des Programms zugreifen. Zusätzlich
37
          benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
38
          entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies
39
          führt dazu dass ein kivitendo Aufruf der Kernmasken mittlerweile
40
          deutlich länger dauert als früher, und dass davon 90% für das Laden
41
          der Module verwendet wird.</p><p>Mit FastCGI werden nun die Module einmal geladen, und danach
42
          wird nur die eigentliche Programmlogik ausgeführt.</p></div><div class="sect3" title="2.6.2.3. Getestete Kombinationen aus Webservern und Plugin"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WebserverUndPlugin"></a>2.6.2.3. Getestete Kombinationen aus Webservern und Plugin</h4></div></div></div><p>Folgende Kombinationen sind getestet:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Apache 2.2.11 (Ubuntu) und mod_fcgid.</p></li><li class="listitem"><p>Apache 2.2.11 (Ubuntu) und mod_fastcgi.</p></li></ul></div><p>Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer
43
          Zeit nicht mehr weiter entwickelt wird. Im Folgenden wird auf
44
          mod_fastcgi nicht mehr explizit eingegangen.</p><p>Als Perl Backend wird das Modul <code class="filename">FCGI.pm</code>
45
          verwendet.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="../../../../system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>FCGI-Versionen ab 0.69 und bis zu 0.71 inklusive sind extrem strict in der Behandlung von Unicode, und verweigern
46
            bestimmte Eingaben von kivitendo. Falls es Probleme mit Umlauten in Ihrere Installation gibt, muss zwingend Version 0.68 oder
47
            aber Version 0.72 und neuer eingesetzt werden.</p><p>Mit <a class="ulink" href="http://www.cpan.org" target="_top">CPAN</a> lässt sie sich die Vorgängerversion wie folgt
48
            installieren:</p><pre class="programlisting">force install M/MS/MSTROUT/FCGI-0.68.tar.gz</pre></td></tr></table></div></div><div class="sect3" title="2.6.2.4. Konfiguration des Webservers"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Konfiguration"></a>2.6.2.4. Konfiguration des Webservers</h4></div></div></div><p>Bevor Sie versuchen, eine kivitendo Installation unter FCGI
49
          laufen zu lassen, empfliehlt es sich die Installation ersteinmal
50
          unter CGI aufzusetzen. FCGI macht es nicht einfach Fehler zu
51
          debuggen die beim ersten aufsetzen auftreten können. Sollte die
52
          Installation schon funktionieren, lesen Sie weiter.</p><p>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
53
          unter Debian/Ubuntu z.B. mit folgendem Befehl geschehen:</p><pre class="programlisting">a2enmod fcgid</pre><p>Die Konfiguration für die Verwendung von kivitendo mit FastCGI
54
          erfolgt durch Anpassung der vorhandenen <code class="function">Alias</code>-
55
          und <code class="function">Directory</code>-Direktiven. Dabei wird zwischen
56
          dem Installationspfad von kivitendo im Dateisystem
57
          ("<code class="filename">/path/to/kivitendo-erp</code>") und der URL
58
          unterschieden, unter der kivitendo im Webbrowser erreichbar ist
59
          ("<code class="filename">/url/for/kivitendo-erp</code>").</p><p>Folgender Konfigurationsschnipsel funktioniert mit
60
          mod_fastcgi:</p><pre class="programlisting">AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi
61
Alias       /url/for/kivitendo-erp/          /path/to/kivitendo-erp/
62

  
63
&lt;Directory /path/to/kivitendo-erp&gt;
64
  AllowOverride All
65
  Options ExecCGI Includes FollowSymlinks
66
  Order Allow,Deny
67
  Allow from All
68
&lt;/Directory&gt;
69

  
70
&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
71
  Order Deny,Allow
72
  Deny from All
73
&lt;/DirectoryMatch&gt;</pre><p>Seit mod_fcgid-Version 2.6.3 gelten sehr kleine Grenzen für
74
          die maximale Größe eines Requests. Diese sollte wie folgt
75
          hochgesetzt werden:</p><pre class="programlisting">FcgidMaxRequestLen 10485760</pre><p>Das ganze sollte dann so aussehen:</p><pre class="programlisting">AddHandler fcgid-script .fpl
76
AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
77
Alias       /url/for/kivitendo-erp/          /path/to/kivitendo-erp/
78
FcgidMaxRequestLen 10485760
79

  
80
&lt;Directory /path/to/kivitendo-erp&gt;
81
  AllowOverride All
82
  Options ExecCGI Includes FollowSymlinks
83
  Order Allow,Deny
84
  Allow from All
85
&lt;/Directory&gt;
86

  
87
&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
88
  Order Deny,Allow
89
  Deny from All
90
&lt;/DirectoryMatch&gt;</pre><p>Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle
91
          Zugriffe auf die einzelnen Scripte werden auf diesen umgeleitet.
92
          Dadurch, dass zur Laufzeit öfter mal Scripte neu geladen werden,
93
          gibt es hier kleine Performance-Einbußen.</p><p>Es ist möglich, die gleiche kivitendo Version parallel unter
94
          CGI und FastCGI zu betreiben. Dafür bleiben die Directorydirektiven
95
          wie oben beschrieben, die URLs werden aber umgeleitet:</p><pre class="programlisting"># Zugriff über CGI
96
Alias       /url/for/kivitendo-erp                /path/to/kivitendo-erp
97

  
98
# Zugriff mit mod_fcgid:
99
AliasMatch ^/url/for/kivitendo-erp-fcgid/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
100
Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</pre><p>Dann ist unter <code class="filename">/url/for/kivitendo-erp/</code>
101
          die normale Version erreichbar, und unter
102
          <code class="constant">/url/for/kivitendo-erp-fcgid/</code> die
103
          FastCGI-Version.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.5. Anpassung der PostgreSQL-Konfiguration&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.7. Der Task-Server</td></tr></table></div></body></html>

Auch abrufbar als: Unified diff