39312f80bab8db649d57a78a245cb6f06664ca44
[kivitendo-erp.git] / doc / html / ch02s07.html
1 <html><head>
2       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3    <title>2.7. 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 3.6.1: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s06.html" title="2.6. Webserver-Konfiguration"><link rel="next" href="ch02s08.html" title="2.8. 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.7. Der Task-Server</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s06.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="ch02s08.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.7. Der Task-Server"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.task-server"></a>2.7. 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 u.a. für die Erzeugung der wiederkehrenden Rechnungen und weitere
7       essenzielle Aufgaben benutzt.</p><p>Der Task-Server muss einmalig global in der Konfigurationsdatei
8       konfiguriert werden. Danach wird er für jeden Mandanten, für den er
9       laufen soll, in der Adminsitrationsmaske eingeschaltet.</p><p>Beachten Sie, dass der Task-Server in den Boot-Vorgang Ihres
10       Servers integriert werden muss, damit er automatisch gestartet wird.
11       Dies kann kivitendo nicht für Sie erledigen.</p><p>Da der Task-Server als Perlscript läuft, wird Arbeitsspeicher, der
12       einmal benötigt wurde, nicht mehr an das Betriebssystem zurückgegeben,
13       solange der Task-Server läuft. Dies kann dazu führen, dass ein länger
14       laufender Task-Server mit der Zeit immer mehr Arbeitsspeicher für sich
15       beansprucht. Es ist deshalb sinnvoll, dass der Task-Server in
16       regelmässigen Abständen neu gestartet wird. Allerdings berücksichtigt der
17       Task-Server ein Memory-Limit, wenn dieses in der Konfigurationsdatei
18       angegeben ist. Bei Überschreiten dieses Limits beendet sich der
19       Task-Server. Sofern der Task-Server als systemd-Service mit dem
20       mitgelieferten Skript eingerichtet wurde, startet dieser danach
21       automatisch erneut.</p><div class="sect2" title="2.7.1. Verfügbare und notwendige Konfigurationsoptionen"><div class="titlepage"><div><div><h3 class="title"><a name="Konfiguration-des-Task-Servers"></a>2.7.1. Verfügbare und notwendige Konfigurationsoptionen</h3></div></div></div><p>Die Konfiguration erfolgt über den Abschnitt
22         <code class="literal">[task_server]</code> in der Datei
23         <code class="filename">config/kivitendo.conf</code>. Die dort verfügbaren
24         Optionen sind:</p><div class="variablelist"><dl><dt><span class="term">
25                      <code class="varname">run_as</code>
26                   </span></dt><dd><p>Wird der Server vom Systembenutzer <code class="literal">root</code>
27               gestartet, so wechselt er auf den mit <code class="literal">run_as</code>
28               angegebenen Systembenutzer. Der Systembenutzer muss dieselben
29               Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
30               (siehe see <a class="xref" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>). Daher
31               ist es erforderlich, hier denselben Systembenutzer einzutragen,
32               unter dem auch der Webserver läuft.</p></dd><dt><span class="term">
33                      <code class="varname">debug</code>
34                   </span></dt><dd><p>Schaltet Debug-Informationen an und aus.</p></dd></dl></div></div><div class="sect2" title="2.7.2. Konfiguration der Mandanten für den Task-Server"><div class="titlepage"><div><div><h3 class="title"><a name="Konfiguration-der-Mandanten-fuer-den-Task-Servers"></a>2.7.2. Konfiguration der Mandanten für den Task-Server</h3></div></div></div><p>Ist der Task-Server grundlegend konfiguriert, so muss
35         anschließend jeder Mandant, für den der Task-Server laufen soll,
36         einmalig konfiguriert werden. Dazu kann in der Maske zum Bearbeiten
37         von Mandanten im Administrationsbereich eine kivitendo-Benutzerkennung
38         ausgewählt werden, unter der der Task-Server seine Arbeit
39         verrichtet.</p><p>Ist in dieser Einstellung keine Benutzerkennung ausgewählt, so
40         wird der Task-Server für diesen Mandanten keine Aufgaben
41         ausführen.</p></div><div class="sect2" title="2.7.3. Automatisches Starten des Task-Servers beim Booten"><div class="titlepage"><div><div><h3 class="title"><a name="Einbinden-in-den-Boot-Prozess"></a>2.7.3. Automatisches Starten des Task-Servers beim Booten</h3></div></div></div><p>Der Task-Server verhält sich von seinen Optionen her wie ein
42         reguläres SystemV-kompatibles Boot-Script. Außerdem wechselt er beim
43         Starten automatisch in das kivitendo-Installationsverzeichnis.</p><p>Deshalb ist es möglich, ihn durch Setzen eines symbolischen
44         Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
45         einzubinden. Da das bei neueren Linux-Distributionen aber nicht
46         zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
47         anstelle eines symbolischen Links verwendet werden können.</p><div class="sect3" title="2.7.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere openSUSE, ältere Fedora)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1460"></a>2.7.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere
48           openSUSE, ältere Fedora)</h4></div></div></div><p>Kopieren Sie die Datei
49           <code class="filename">scripts/boot/system-v/kivitendo-task-server</code>
50           nach <code class="filename">/etc/init.d/kivitendo-task-server</code>. Passen
51           Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
52           <code class="literal">DAEMON=....</code>). Binden Sie das Script in den
53           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
54 insserv kivitendo-task-server</pre></li><li class="listitem"><p>Ältere openSUSE und ältere Fedora:</p><pre class="programlisting">chkconfig --add kivitendo-task-server</pre></li></ul></div><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
55           werden:</p><pre class="programlisting">/etc/init.d/kivitendo-task-server start</pre></div><div class="sect3" title="2.7.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1489"></a>2.7.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)</h4></div></div></div><p>Kopieren Sie die Datei
56           <code class="filename">scripts/boot/upstart/kivitendo-task-server.conf</code>
57           nach <code class="filename">/etc/init/kivitendo-task-server.conf</code>.
58           Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
59           <code class="literal">exec ....</code>).</p><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
60           werden:</p><pre class="programlisting">service kivitendo-task-server start</pre></div><div class="sect3" title="2.7.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere Fedora, neuere Ubuntu und neuere Debians)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1507"></a>2.7.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere
61           Fedora, neuere Ubuntu und neuere Debians)</h4></div></div></div><p>Kopieren Sie die Datei
62           <code class="filename">scripts/boot/systemd/kivitendo-task-server.service</code>
63           nach <code class="filename">/etc/systemd/system/</code>. Passen Sie in der
64           kopierten Datei den Pfad zum Task-Server an (Zeilen
65           <code class="literal">ExecStart=....</code> und
66           <code class="literal">ExecStop=...</code>).</p><p>Machen Sie anschließend das Script systemd bekannt, und binden
67           Sie es in den Boot-Prozess ein. Dazu führen Sie die folgenden Befehl
68           aus:</p><pre class="programlisting">systemctl daemon-reload
69 systemctl enable kivitendo-task-server.service</pre><p>Wenn Sie den Task-Server jetzt sofort starten möchten, anstatt
70           den Server neu zu starten, so können Sie das mit dem folgenden
71           Befehl tun:</p><pre class="programlisting">systemctl start kivitendo-task-server.service</pre><p>Ein so eingerichteter Task-Server startet nach Beendigung
72           automatisch erneut. Das betrifft eine Beendigung über die Oberfläche,
73           eine Beendingung über die Prozesskontrolle und eine Beendigung bei
74           Überschreiten des Memory-Limits. Soll der Task-Server nicht erneut
75           starten, so können Sie ihn mit folgendem Befehl stoppen:</p><pre class="programlisting">systemctl stop kivitendo-task-server.service</pre></div></div><div class="sect2" title="2.7.4. Wie der Task-Server gestartet und beendet wird"><div class="titlepage"><div><div><h3 class="title"><a name="Prozesskontrolle"></a>2.7.4. 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>
76                <code class="literal">Befehl</code> ist dabei eine der folgenden
77         Optionen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
78                      <code class="literal">start</code> startet eine neue Instanz des
79             Task-Servers. Die Prozess-ID wird innerhalb des
80             <code class="filename">users</code>-Verzeichnisses abgelegt.</p></li><li class="listitem"><p>
81                      <code class="literal">stop</code> beendet einen laufenden
82             Task-Server.</p></li><li class="listitem"><p>
83                      <code class="literal">restart</code> beendet und startet ihn
84             neu.</p></li><li class="listitem"><p>
85                      <code class="literal">status</code> berichtet, ob der Task-Server
86             läuft.</p></li></ul></div><p>Der Task-Server wechselt beim Starten automatisch in das
87         kivitendo-Installationsverzeichnis.</p><p>Dieselben Optionen können auch für die SystemV-basierenden
88         Runlevel-Scripte benutzt werden (siehe oben).</p><p>Wurde der Task-Server als systemd-Service eingerichtet (s.o.),
89         so startet dieser nach Beendigung automatisch erneut.</p></div><div class="sect2" title="2.7.5. Exemplarische Konfiguration eines Hintergrund-Jobs, der die Jahreszahl in allen Nummernkreisen zum Jahreswechsel erhöht"><div class="titlepage"><div><div><h3 class="title"><a name="Tasks-konfigurieren"></a>2.7.5. Exemplarische Konfiguration eines Hintergrund-Jobs, der die Jahreszahl in allen Nummernkreisen zum Jahreswechsel erhöht</h3></div></div></div><p>Hintergrund-Jobs werden über System -&gt; Hintergrund-Jobs und Task-Server -&gt; Aktuelle Hintergrund-Jobs anzeigen -&gt; Aktions-Knopf 'erfassen' angelegt. </p><p>Nachdem wir über das Menü dort angelangt sind, legen wir unseren exemplarischen Hintergrund-Jobs "Erhöhung der Nummernkreise" mit folgenden Werten an:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
90                      <code class="literal">Aktiv:</code> Hier ein 'Ja' auswählen</p></li><li class="listitem"><p>
91                      <code class="literal">Ausführungsart:</code> 'wiederholte Ausführung' auswählen</p></li><li class="listitem"><p>
92                      <code class="literal">Paketname:</code> 'SetNumberRange' auswählen</p></li><li class="listitem"><p>
93                      <code class="literal">Ausführungszeitplan:</code> Hier entsprechend Werte wie in der crontab eingeben.</p><p>Syntax:</p><pre class="programlisting">* * * * *
94 ┬ ┬ ┬ ┬ ┬
95 │ │ │ │ │
96 │ │ │ │ └──── Wochentag (0-7, Sonntag ist 0 oder 7)
97 │ │ │ └────── Monat (1-12)
98 │ │ └──────── Tag (1-31)
99 │ └────────── Stunde (0-23)
100 └──────────── Minute (0-59)  </pre><p>Die Sterne können folgende Werte haben:</p><pre class="programlisting">
101 1 2 3 4 5
102
103 1 = Minute (0-59)
104 2 = Stunde (0-23)
105 3 = Tag (0-31)
106 4 = Monat (1-12)
107 5 = Wochentag (0-7, Sonntag ist 0 oder 7)
108 </pre><p>Um die Ausführung auf eine Minute vor Sylvester zu setzen, müssen die folgenden Werte eingetragen werden:</p><pre class="programlisting">59 23 31 12 *</pre></li><li class="listitem"><p>
109                      <code class="literal">Daten:</code>In diesem Feld können optionale Parameter für den Hintergrund im JSON-Format gesetzt werden. Der Hintergrund-Job <code class="literal">SetNumberRange</code> akzeptiert zwei Variable nämlich <code class="literal">digit_year</code> sowieso <code class="literal">multiplier</code>.</p><p> 
110                      <code class="literal">digit_year</code> kann zwei Werte haben entweder 2 oder 4, darüber wird gesteuert ob die Jahreszahl zwei oder vierstellig kodiert wird (für 2019, dann entweder 19 oder 2019). Der Standardwert ist vierstellig.</p><p> 
111                      <code class="literal">multiplier</code> ist ein Vielfaches von 10, darüber wird die erste Nummer im Nummernkreis (die Anzahl der Stellen) wie folgt bestimmt:</p><pre class="programlisting">
112 multiplier     Nummernkreis 2020
113 10        -&gt;   20200
114 100       -&gt;   202000
115 1000      -&gt;   2020000
116 </pre><p>Wir gehen jetzt beispielhaft von einer letzten Rechnungsnummer von RE2019456 aus. Demnach sollte ab Januar 2020 die erste Nummer RE2020001 sein. Da der Task auch Präfixe berücksichtigt, kann dies mit folgenden JSON-kodierten Werten umgesetzt werden:</p><p>
117                      <code class="literal">Daten:</code>
118                   </p><pre class="programlisting">multiplier: 100
119 digits_year: 4</pre></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s06.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="ch02s08.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.6. 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.8. Benutzerauthentifizierung und Administratorpasswort</td></tr></table></div></body></html>