Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision cddb2fd7

Von Enrique Morales vor fast 2 Jahren hinzugefügt

  • ID cddb2fd70edda3ea92cc6667224f995d0ff61b68
  • Vorgänger ccc063b7
  • Nachfolger bfc04a83

Anleitung für installation mit Ansible hinzugefüegt

Unterschiede anzeigen:

doc/dokumentation.xml
<para>openSUSE:<programlisting>Nicht notwendig, da poppler-utils bereits i.v.m. kivitendo-erp installiert wird</programlisting></para>
</sect2>
</sect1>
<sect1 id="Installation mittels Ansible"
xreflabel="Inatallation mittels Ansible">
<title>Installation mittels Ansible</title>
<para> Zur Installation mit Ansible liegt auf dem Git Repository im ansible Ordner mit dem benötigtem Playbook und Konfigurationsdateien.</para>
<para> Der/die Hosts auf denen Kivitendo installiert werden soll wird in einer Variable übergeben.</para>
<para> Installiert werden kann das playbook mit folgendem Befehl:
<programlisting>ansible-playbook --ask-become-pass main.yaml --extra-vars &quot;target=ZIEL_RECHNER&quot;</programlisting>
</para>
</sect1>
<sect1 id="Manuelle-Installation-des-Programmpaketes"
xreflabel="Manuelle Installation des Programmpaketes">
<title>Manuelle Installation des Programmpaketes</title>
......
weiteren Zusatzmassnahmen, wie beispielsweise Basic Authenticate. Die
Konfigurationsmöglichkeiten sprengen allerdings den Rahmen dieser
Anleitung, hier ein Hinweis auf einen entsprechenden <ulink
url="https://www.kivitendo.de/boards/1/topics/142">Foreneintrag
url="http://redmine.kivitendo-premium.de/boards/1/topics/142">Foreneintrag
(Stand Sept. 2015)</ulink> und einen aktuellen (Stand Mai 2017) <ulink
url="https://mozilla.github.io/server-side-tls/ssl-config-generator/">
SSL-Konfigurations-Generator</ulink>.</para>
......
debianoiden Betriebssystemen installiert man die Pakete mit:</para>
<para><programlisting>apt install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
texlive-latex-extra texlive-lang-german ghostscript latexmk</programlisting></para>
texlive-latex-extra texlive-lang-german ghostscript</programlisting></para>
<para>Für Fedora benötigen Sie die folgenden Pakete:</para>
doc/html/ch02.html
diese. Auch die Liste der benötigten Perl-Module befindet sich
hier.</p></li><li class="listitem"><p>
<span class="emphasis"><em>Installation von kivitendo</em></span>: Diese umfasst
die "<a class="xref" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>"
sowie grundlegende Einstellungen, die der "<a class="xref" href="ch02s04.html" title="2.4. kivitendo-Konfigurationsdatei">Abschnitt&nbsp;2.4, „kivitendo-Konfigurationsdatei“</a>" erläutert.</p></li><li class="listitem"><p>
die "<a class="xref" href="ch02s04.html" title="2.4. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>"
sowie grundlegende Einstellungen, die der "<a class="xref" href="ch02s05.html" title="2.5. kivitendo-Konfigurationsdatei">Abschnitt&nbsp;2.5, „kivitendo-Konfigurationsdatei“</a>" erläutert.</p></li><li class="listitem"><p>
<span class="emphasis"><em>Konfiguration externer Programme</em></span>: hierzu
gehören die Datenbank ("<a class="xref" href="ch02s05.html" title="2.5. Anpassung der PostgreSQL-Konfiguration">Abschnitt&nbsp;2.5, „Anpassung der PostgreSQL-Konfiguration“</a>") und der
Webserver ("<a class="xref" href="ch02s06.html" title="2.6. Webserver-Konfiguration">Abschnitt&nbsp;2.6, „Webserver-Konfiguration“</a>").</p></li><li class="listitem"><p>
gehören die Datenbank ("<a class="xref" href="ch02s06.html" title="2.6. Anpassung der PostgreSQL-Konfiguration">Abschnitt&nbsp;2.6, „Anpassung der PostgreSQL-Konfiguration“</a>") und der
Webserver ("<a class="xref" href="ch02s07.html" title="2.7. Webserver-Konfiguration">Abschnitt&nbsp;2.7, „Webserver-Konfiguration“</a>").</p></li><li class="listitem"><p>
<span class="emphasis"><em>Benutzerinformationen speichern können</em></span>:
man benötigt mindestens eine Datenbank, in der Informationen zur
Authentifizierung sowie die Nutzdaten gespeichert werden. Wie man
das als Administrator macht, verrät "<a class="xref" href="ch02s08.html" title="2.8. Benutzerauthentifizierung und Administratorpasswort">Abschnitt&nbsp;2.8, „Benutzerauthentifizierung und Administratorpasswort“</a>".</p></li><li class="listitem"><p>
das als Administrator macht, verrät "<a class="xref" href="ch02s09.html" title="2.9. Benutzerauthentifizierung und Administratorpasswort">Abschnitt&nbsp;2.9, „Benutzerauthentifizierung und Administratorpasswort“</a>".</p></li><li class="listitem"><p>
<span class="emphasis"><em>Benutzer, Gruppen und Datenbanken
anlegen</em></span>: wie dies alles zusammenspielt erläutert "<a class="xref" href="ch02s09.html" title="2.9. Mandanten-, Benutzer- und Gruppenverwaltung">Abschnitt&nbsp;2.9, „Mandanten-, Benutzer- und Gruppenverwaltung“</a>".</p></li><li class="listitem"><p>
anlegen</em></span>: wie dies alles zusammenspielt erläutert "<a class="xref" href="ch02s10.html" title="2.10. Mandanten-, Benutzer- und Gruppenverwaltung">Abschnitt&nbsp;2.10, „Mandanten-, Benutzer- und Gruppenverwaltung“</a>".</p></li><li class="listitem"><p>
<span class="emphasis"><em>Los geht's</em></span>: alles soweit erledigt? Dann
kann es losgehen: "<a class="xref" href="ch02s21.html" title="2.21. kivitendo ERP verwenden">Abschnitt&nbsp;2.21, „kivitendo ERP verwenden“</a>"</p></li></ol></div><p>Alle weiteren Unterkapitel in diesem Kapitel sind ebenfalls
kann es losgehen: "<a class="xref" href="ch02s22.html" title="2.22. kivitendo ERP verwenden">Abschnitt&nbsp;2.22, „kivitendo ERP verwenden“</a>"</p></li></ol></div><p>Alle weiteren Unterkapitel in diesem Kapitel sind ebenfalls
wichtig und sollten vor einer ernsthaften Inbetriebnahme gelesen
werden.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 1. Aktuelle Hinweise&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.2. Benötigte Software und Pakete</td></tr></table></div></body></html>
doc/html/ch02s02.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.2. Benötigte Software und Pakete</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="next" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes"></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.2. Benötigte Software und Pakete</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.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="ch02s03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.2. Benötigte Software und Pakete"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Ben%C3%B6tigte-Software-und-Pakete"></a>2.2. Benötigte Software und Pakete</h2></div></div></div><div class="sect2" title="2.2.1. Betriebssystem"><div class="titlepage"><div><div><h3 class="title"><a name="Betriebssystem"></a>2.2.1. Betriebssystem</h3></div></div></div><p>kivitendo ist für Linux konzipiert, und sollte auf jedem
<title>2.2. Benötigte Software und Pakete</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="next" href="ch02s03.html" title="2.3. Installation mittels Ansible"></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.2. Benötigte Software und Pakete</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.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="ch02s03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.2. Benötigte Software und Pakete"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Ben%C3%B6tigte-Software-und-Pakete"></a>2.2. Benötigte Software und Pakete</h2></div></div></div><div class="sect2" title="2.2.1. Betriebssystem"><div class="titlepage"><div><div><h3 class="title"><a name="Betriebssystem"></a>2.2.1. Betriebssystem</h3></div></div></div><p>kivitendo ist für Linux konzipiert, und sollte auf jedem
unixoiden Betriebssystem zum Laufen zu kriegen sein. Getestet ist
diese Version im speziellen auf Debian und Ubuntu, grundsätzlich wurde
bei der Auswahl der Pakete aber darauf Rücksicht genommen, dass es
......
<code class="literal">Exception::Class</code>
</p></li><li class="listitem"><p>
<code class="literal">FCGI</code> (nicht Versionen 0.68 bis 0.71
inklusive; siehe <a class="xref" href="ch02s06.html#Apache-Konfiguration.FCGI.WebserverUndPlugin" title="2.6.2.3. Getestete Kombinationen aus Webservern und Plugin">Abschnitt&nbsp;2.6.2.3, „Getestete Kombinationen aus Webservern und Plugin“</a>)</p></li><li class="listitem"><p>
inklusive; siehe <a class="xref" href="ch02s07.html#Apache-Konfiguration.FCGI.WebserverUndPlugin" title="2.7.2.3. Getestete Kombinationen aus Webservern und Plugin">Abschnitt&nbsp;2.7.2.3, „Getestete Kombinationen aus Webservern und Plugin“</a>)</p></li><li class="listitem"><p>
<code class="literal">File::Copy::Recursive</code>
</p></li><li class="listitem"><p>
<code class="literal">File::Flock</code>
......
<code class="literal">List::UtilsBy</code>
</p></li><li class="listitem"><p>LWP::Authen::Digest</p></li><li class="listitem"><p>LWP::UserAgent</p></li><li class="listitem"><p>
<code class="literal">Net::SMTP::SSL</code> (optional, bei
E-Mail-Versand über SSL; siehe Abschnitt "<a class="xref" href="ch02s11.html#config.sending-email.smtp" title="2.11.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>")</p></li><li class="listitem"><p>
E-Mail-Versand über SSL; siehe Abschnitt "<a class="xref" href="ch02s12.html#config.sending-email.smtp" title="2.12.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>")</p></li><li class="listitem"><p>
<code class="literal">Net::SSLGlue</code> (optional, bei
E-Mail-Versand über TLS; siehe Abschnitt "<a class="xref" href="ch02s11.html#config.sending-email.smtp" title="2.11.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>")</p></li><li class="listitem"><p>
E-Mail-Versand über TLS; siehe Abschnitt "<a class="xref" href="ch02s12.html#config.sending-email.smtp" title="2.12.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>")</p></li><li class="listitem"><p>
<code class="literal">Math::Round</code>
</p></li><li class="listitem"><p>
<code class="literal">Params::Validate</code>
......
<code class="literal">Postgres Trigram-Index</code> Für datenbankoptimierte Suchanfragen. Bspw. im Paket <code class="literal">postgresql-contrib</code> enthalten</p></li></ul></div><p>Debian und Ubuntu: </p><pre class="programlisting">apt install postgresql-contrib poppler-utils</pre><p>
</p><p>Fedora: </p><pre class="programlisting">dnf install poppler-utils postgresql-contrib</pre><p>
</p><p>openSUSE:</p><pre class="programlisting">Nicht notwendig, da poppler-utils bereits i.v.m. kivitendo-erp installiert wird</pre><p>
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.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="ch02s03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 2. Installation und Grundkonfiguration&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.3. Manuelle Installation des Programmpaketes</td></tr></table></div></body></html>
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.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="ch02s03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 2. Installation und Grundkonfiguration&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.3. Installation mittels Ansible</td></tr></table></div></body></html>
doc/html/ch02s03.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.3. Manuelle Installation des Programmpaketes</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s02.html" title="2.2. Benötigte Software und Pakete"><link rel="next" href="ch02s04.html" title="2.4. kivitendo-Konfigurationsdatei"></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.3. Manuelle Installation des Programmpaketes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s02.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="ch02s04.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.3. Manuelle Installation des Programmpaketes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Manuelle-Installation-des-Programmpaketes"></a>2.3. Manuelle Installation des Programmpaketes</h2></div></div></div><p>Der aktuelle Stable-Release, bzw. beta Release wird bei github
gehostet und kann <a class="ulink" href="https://github.com/kivitendo/kivitendo-erp/releases" target="_top">hier</a>
heruntergeladen werden.</p><p>Das aktuelleste kivitendo ERP-Archiv
(<code class="filename">kivitendo-erp-*.tgz</code>) wird dann im
Dokumentenverzeichnis des Webservers (z.B.
<code class="filename">/var/www/html/</code>,
<code class="filename">/srv/www/htdocs</code> oder
<code class="filename">/var/www/</code>) entpackt:</p><pre class="programlisting">cd /var/www
tar xvzf kivitendo-erp-*.tgz</pre><p>Wechseln Sie in das entpackte Verzeichnis:</p><pre class="programlisting">cd kivitendo-erp</pre><p>Alternativ können Sie auch einen Alias in der
Webserverkonfiguration benutzen, um auf das tatsächliche
Installationsverzeichnis zu verweisen.</p><p>Bei einer Neuinstallation von Version 3.1.0 oder später muß das
WebDAV Verzeichnis derzeit manuell angelegt werden:</p><pre class="programlisting">mkdir webdav</pre><p>Die Verzeichnisse <code class="filename">users</code>,
<code class="filename">spool</code> und <code class="filename">webdav</code> müssen für
den Benutzer beschreibbar sein, unter dem der Webserver läuft. Die
restlichen Dateien müssen für diesen Benutzer lesbar sein. Die Benutzer-
und Gruppennamen sind bei verschiedenen Distributionen unterschiedlich
(z.B. bei Debian/Ubuntu <code class="constant">www-data</code>, bei Fedora
<code class="constant">apache</code> oder bei openSUSE
<code class="constant">wwwrun</code>).</p><p>Der folgende Befehl ändert den Besitzer für die oben genannten
Verzeichnisse auf einem Debian/Ubuntu-System:</p><pre class="programlisting">chown -R www-data users spool webdav</pre><p>Weiterhin muss der Webserver-Benutzer in den Verzeichnissen
<code class="filename">templates</code> und <code class="filename">users</code>
Unterverzeichnisse für jeden neuen Benutzer anlegen dürfen, der in
kivitendo angelegt wird:</p><pre class="programlisting">chown www-data templates users</pre><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>Wir empfehlen eine Installation mittels des Versionsmanagager
git. Hierfür muss ein git-Client installiert sein. Damit ist man sehr
viel flexibler für zukünftige Upgrades. Installations-Anleitung (bitte
die Pfade anpassen) bspw. wie folgt: </p><pre class="programlisting">cd /var/www/
git clone https://github.com/kivitendo/kivitendo-erp.git
cd kivitendo-erp/
git checkout `git tag -l | egrep -ve "(alpha|beta|rc)" | tail -1`</pre><p>
Erläuterung: Der Befehl wechselt zur letzten Stable-Version (git tag
-l listet alle Tags auf, das egrep schmeisst alle Einträge mit alpha,
beta oder rc raus und das tail gibt davon den obersten Treffer
zurück). Sehr sinnvoll ist es, direkt im Anschluss einen eigenen
Branch zu erzeugen, um bspw. seine eigenen Druckvorlagen-Anpassungen
damit zu verwalten. Hierfür reicht ein simples </p><pre class="programlisting"> git checkout -b meine_eigenen_änderungen</pre><p>
nach dem letzten Kommando (weiterführende Informationen <a class="ulink" href="http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html" target="_top">
Git Magic</a>).</p><p>Ein beispielhafter Workflow für Druckvorlagen-Anpassungen von
3.4.1 nach 3.5: </p><pre class="programlisting">
$ git clone https://github.com/kivitendo/kivitendo-erp.git
$ cd kivitendo-erp/
$ git checkout release-3.4.1 # das ist ein alter release aus dem wir starten ...
$ git checkout -b meine_eigene_änderungen # unser lokaler branch - unabhängig von allen anderen
$ git add templates/mein_druck # das sind unsere druckvorlagen inkl. produktbilder
$ git commit -m "juhu tolle änderungen"
[meine_aenderungen 1d89e41] juhu tolle ändernungen
4 files changed, 380 insertions(+)
create mode 100644 templates/mein_druck/img/webdav/tesla.png
create mode 100644 templates/mein_druck/mahnung.tex
create mode 100644 templates/mein_druck/zahlungserinnerung_zwei.tex
create mode 100644 templates/mein_druck/zahlungserinnerung_zwei_invoice.tex
# 5 Jahre später ...
# webserver abschalten!
$ git checkout master
$ git pull # oder git fetch und danach ein stable release tag auswählen (s.o.)
$ git checkout meine_eigenen_änderungen
$ git rebase master
Zunächst wird der Branch zurückgespult, um Ihre Änderungen
darauf neu anzuwenden ...
Wende an: juhu tolle änderungen
$ service apache2 restart # webserver starten!
</pre><p>
</p></td></tr></table></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.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="ch02s04.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.2. Benötigte Software und Pakete&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.4. kivitendo-Konfigurationsdatei</td></tr></table></div></body></html>
<title>2.3. Installation mittels Ansible</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s02.html" title="2.2. Benötigte Software und Pakete"><link rel="next" href="ch02s04.html" title="2.4. Manuelle Installation des Programmpaketes"></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.3. Installation mittels Ansible</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s02.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="ch02s04.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.3. Installation mittels Ansible"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Installation mittels Ansible"></a>2.3. Installation mittels Ansible</h2></div></div></div><p> Zur Installation mit Ansible liegt auf dem Git Repository im ansible Ordner mit dem benötigtem Playbook und Konfigurationsdateien.</p><p> Der/die Hosts auf denen Kivitendo installiert werden soll wird in einer Variable übergeben.</p><p> Installiert werden kann das playbook mit folgendem Befehl:
</p><pre class="programlisting">ansible-playbook --ask-become-pass main.yaml --extra-vars "target=ZIEL_RECHNER"</pre><p>
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.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="ch02s04.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.2. Benötigte Software und Pakete&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.4. Manuelle Installation des Programmpaketes</td></tr></table></div></body></html>
doc/html/ch02s04.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.4. kivitendo-Konfigurationsdatei</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes"><link rel="next" href="ch02s05.html" title="2.5. Anpassung der PostgreSQL-Konfiguration"></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.4. kivitendo-Konfigurationsdatei</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s03.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="ch02s05.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.4. kivitendo-Konfigurationsdatei"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.config-file"></a>2.4. kivitendo-Konfigurationsdatei</h2></div></div></div><div class="sect2" title="2.4.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.introduction"></a>2.4.1. Einführung</h3></div></div></div><p>In kivitendo gibt es nur noch eine Konfigurationsdatei, die
benötigt wird: <code class="filename">config/kivitendo.conf</code> (kurz: "die
Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation von
kivitendo bzw. der Migration von älteren Versionen angelegt
werden.</p><p>Als Vorlage dient die Datei
<code class="filename">config/kivitendo.conf.default</code> (kurz: "die
Default-Datei"):</p><pre class="programlisting">$ cp config/kivitendo.conf.default config/kivitendo.conf</pre><p>Die Default-Datei wird immer zuerst eingelesen. Werte, die in
der Hauptkonfigurationsdatei stehen, überschreiben die Werte aus der
Default-Datei. Die Hauptkonfigurationsdatei muss also nur die
Abschnitte und Werte enthalten, die von denen der Default-Datei
abweichen.</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 der Umbenennung in kivitendo hieß diese Datei noch
<code class="filename">config/lx_office.conf</code>. Aus Gründen der
Kompatibilität wird diese Datei eingelesen, sofern die Datei
<code class="filename">config/kivitendo.conf</code> nicht existiert.</p></td></tr></table></div><p>Diese Hauptkonfigurationsdatei ist dann eine
installationsspezifische Datei, d.h. sie enthält bspw. lokale
Passwörter und wird auch nicht im Versionsmanagement (git)
verwaltet.</p><p>Die Konfiguration ist ferner serverabhängig, d.h. für alle
Mandaten, bzw. Datenbanken gleich.</p></div><div class="sect2" title="2.4.2. Abschnitte und Parameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.sections-parameters"></a>2.4.2. Abschnitte und Parameter</h3></div></div></div><p>Die Konfigurationsdatei besteht aus mehreren Teilen, die
entsprechend kommentiert sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
<code class="literal">authentication</code> (siehe Abschnitt "<a class="xref" href="ch02s08.html" title="2.8. Benutzerauthentifizierung und Administratorpasswort">Abschnitt&nbsp;2.8, „Benutzerauthentifizierung und Administratorpasswort“</a>"
in diesem Kapitel)</p></li><li class="listitem"><p>
<code class="literal">authentication/database</code>
</p></li><li class="listitem"><p>
<code class="literal">authentication/ldap</code>
</p></li><li class="listitem"><p>
<code class="literal">system</code>
</p></li><li class="listitem"><p>
<code class="literal">paths</code>
</p></li><li class="listitem"><p>
<code class="literal">mail_delivery</code> (siehe Abschnitt "<a class="xref" href="ch02s11.html#config.sending-email.smtp" title="2.11.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>)</p></li><li class="listitem"><p>
<code class="literal">applications</code>
</p></li><li class="listitem"><p>
<code class="literal">environment</code>
</p></li><li class="listitem"><p>
<code class="literal">print_templates</code>
</p></li><li class="listitem"><p>
<code class="literal">task_server</code>
</p></li><li class="listitem"><p>
<code class="literal">periodic_invoices</code>
</p></li><li class="listitem"><p>
<code class="literal">self_tests</code>
</p></li><li class="listitem"><p>
<code class="literal">console</code>
</p></li><li class="listitem"><p>
<code class="literal">testing</code>
</p></li><li class="listitem"><p>
<code class="literal">testing/database</code>
</p></li><li class="listitem"><p>
<code class="literal">debug</code>
</p></li></ul></div><p>Die üblicherweise wichtigsten Parameter, die am Anfang
einzustellen oder zu kontrollieren sind, sind:</p><pre class="programlisting">[authentication]
admin_password = geheim
<title>2.4. Manuelle Installation des Programmpaketes</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s03.html" title="2.3. Installation mittels Ansible"><link rel="next" href="ch02s05.html" title="2.5. kivitendo-Konfigurationsdatei"></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.4. Manuelle Installation des Programmpaketes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s03.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="ch02s05.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.4. Manuelle Installation des Programmpaketes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Manuelle-Installation-des-Programmpaketes"></a>2.4. Manuelle Installation des Programmpaketes</h2></div></div></div><p>Der aktuelle Stable-Release, bzw. beta Release wird bei github
gehostet und kann <a class="ulink" href="https://github.com/kivitendo/kivitendo-erp/releases" target="_top">hier</a>
heruntergeladen werden.</p><p>Das aktuelleste kivitendo ERP-Archiv
(<code class="filename">kivitendo-erp-*.tgz</code>) wird dann im
Dokumentenverzeichnis des Webservers (z.B.
<code class="filename">/var/www/html/</code>,
<code class="filename">/srv/www/htdocs</code> oder
<code class="filename">/var/www/</code>) entpackt:</p><pre class="programlisting">cd /var/www
tar xvzf kivitendo-erp-*.tgz</pre><p>Wechseln Sie in das entpackte Verzeichnis:</p><pre class="programlisting">cd kivitendo-erp</pre><p>Alternativ können Sie auch einen Alias in der
Webserverkonfiguration benutzen, um auf das tatsächliche
Installationsverzeichnis zu verweisen.</p><p>Bei einer Neuinstallation von Version 3.1.0 oder später muß das
WebDAV Verzeichnis derzeit manuell angelegt werden:</p><pre class="programlisting">mkdir webdav</pre><p>Die Verzeichnisse <code class="filename">users</code>,
<code class="filename">spool</code> und <code class="filename">webdav</code> müssen für
den Benutzer beschreibbar sein, unter dem der Webserver läuft. Die
restlichen Dateien müssen für diesen Benutzer lesbar sein. Die Benutzer-
und Gruppennamen sind bei verschiedenen Distributionen unterschiedlich
(z.B. bei Debian/Ubuntu <code class="constant">www-data</code>, bei Fedora
<code class="constant">apache</code> oder bei openSUSE
<code class="constant">wwwrun</code>).</p><p>Der folgende Befehl ändert den Besitzer für die oben genannten
Verzeichnisse auf einem Debian/Ubuntu-System:</p><pre class="programlisting">chown -R www-data users spool webdav</pre><p>Weiterhin muss der Webserver-Benutzer in den Verzeichnissen
<code class="filename">templates</code> und <code class="filename">users</code>
Unterverzeichnisse für jeden neuen Benutzer anlegen dürfen, der in
kivitendo angelegt wird:</p><pre class="programlisting">chown www-data templates users</pre><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>Wir empfehlen eine Installation mittels des Versionsmanagager
git. Hierfür muss ein git-Client installiert sein. Damit ist man sehr
viel flexibler für zukünftige Upgrades. Installations-Anleitung (bitte
die Pfade anpassen) bspw. wie folgt: </p><pre class="programlisting">cd /var/www/
git clone https://github.com/kivitendo/kivitendo-erp.git
cd kivitendo-erp/
git checkout `git tag -l | egrep -ve "(alpha|beta|rc)" | tail -1`</pre><p>
Erläuterung: Der Befehl wechselt zur letzten Stable-Version (git tag
-l listet alle Tags auf, das egrep schmeisst alle Einträge mit alpha,
beta oder rc raus und das tail gibt davon den obersten Treffer
zurück). Sehr sinnvoll ist es, direkt im Anschluss einen eigenen
Branch zu erzeugen, um bspw. seine eigenen Druckvorlagen-Anpassungen
damit zu verwalten. Hierfür reicht ein simples </p><pre class="programlisting"> git checkout -b meine_eigenen_änderungen</pre><p>
nach dem letzten Kommando (weiterführende Informationen <a class="ulink" href="http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html" target="_top">
Git Magic</a>).</p><p>Ein beispielhafter Workflow für Druckvorlagen-Anpassungen von
3.4.1 nach 3.5: </p><pre class="programlisting">
$ git clone https://github.com/kivitendo/kivitendo-erp.git
$ cd kivitendo-erp/
$ git checkout release-3.4.1 # das ist ein alter release aus dem wir starten ...
$ git checkout -b meine_eigene_änderungen # unser lokaler branch - unabhängig von allen anderen
$ git add templates/mein_druck # das sind unsere druckvorlagen inkl. produktbilder
$ git commit -m "juhu tolle änderungen"
[authentication/database]
host = localhost
port = 5432
db = kivitendo_auth
user = postgres
password =
[meine_aenderungen 1d89e41] juhu tolle ändernungen
4 files changed, 380 insertions(+)
create mode 100644 templates/mein_druck/img/webdav/tesla.png
create mode 100644 templates/mein_druck/mahnung.tex
create mode 100644 templates/mein_druck/zahlungserinnerung_zwei.tex
create mode 100644 templates/mein_druck/zahlungserinnerung_zwei_invoice.tex
[system]
default_manager = german</pre><p>Für kivitendo Installationen in der Schweiz sollte hier
<code class="varname">german</code> durch <code class="varname">swiss</code> ersetzt
werden.</p><p>Die Einstellung <code class="varname">default_manager = swiss</code>
bewirkt:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Beim Erstellen einer neuen Datenbank in der kivitendo
Administration werden automatisch die Standard-Werte für die
Schweiz voreingestellt: Währung CHF, 5er-Rundung, Schweizer
KMU-Kontenplan, Sollversteuerung, Aufwandsmethode, Bilanzierung
(die Werte können aber manuell angepasst werden).</p></li><li class="listitem"><p>Einstellen der Standardkonten für Rundungserträge und
-aufwendungen (unter Mandantenkonfiguration → Standardkonten
veränderbar)</p></li><li class="listitem"><p>das verwendete Zahlenformat wird auf
<code class="varname">1'000.00</code> eingestellt (unter Programm →
Benutzereinstellungen veränderbar)</p></li><li class="listitem"><p>DATEV-Automatik und UStVA werden nicht angezeigt,
Erfolgsrechnung ersetzt GUV ( unter Mandantenkonfiguration →
Features veränderbar)</p></li></ul></div><p>Nutzt man wiederkehrende Rechnungen, kann man unter
<code class="varname">[periodic_invoices]</code> den Login eines Benutzers
angeben, der nach Erstellung der Rechnungen eine entsprechende E-Mail
mit Informationen über die erstellten Rechnungen bekommt.</p><p>kivitendo bringt eine eigene Komponente zur zeitgesteuerten
Ausführung bestimmter Aufgaben mit, den <a class="link" href="ch02s07.html" title="2.7. Der Task-Server">Task-Server</a>. Er wird u.a. für
Features wie die <a class="link" href="ch03.html#features.periodic-invoices" title="3.1. Wiederkehrende Rechnungen">wiederkehrenden Rechnungen</a>
benötigt, erledigt aber auch andere erforderliche Aufgaben und muss
daher in Betrieb genommen werden. Seine Einrichtung wird im Abschnitt
<a class="link" href="ch02s07.html" title="2.7. Der Task-Server">Task-Server</a> genauer
beschrieben.</p><p>Für Entwickler finden sich unter <code class="varname">[debug]</code>
wichtige Funktionen, um die Fehlersuche zu erleichtern.</p></div><div class="sect2" title="2.4.3. Versionen vor 2.6.3"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.prior-versions"></a>2.4.3. Versionen vor 2.6.3</h3></div></div></div><p>In älteren kivitendo Versionen gab es im Verzeichnis
<code class="filename">config</code> die Dateien
<code class="filename">authentication.pl</code> und
<code class="filename">lx-erp.conf</code>, die jeweils Perl-Dateien waren. Es
gab auch die Möglichkeit, eine lokale Version der Konfigurationsdatei
zu erstellen (<code class="filename">lx-erp-local.conf</code>). Dies ist ab
2.6.3 nicht mehr möglich, aber auch nicht mehr nötig.</p><p>Beim Update von einer kivitendo-Version vor 2.6.3 auf 2.6.3 oder
jünger müssen die Einstellungen aus den alten Konfigurationsdateien
manuell übertragen und die alten Konfigurationsdateien anschließend
gelöscht oder verschoben werden. Ansonsten zeigt kivitendo eine
entsprechende Fehlermeldung an.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.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="ch02s05.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.3. Manuelle Installation des Programmpaketes&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.5. Anpassung der PostgreSQL-Konfiguration</td></tr></table></div></body></html>
# 5 Jahre später ...
# webserver abschalten!
$ git checkout master
$ git pull # oder git fetch und danach ein stable release tag auswählen (s.o.)
$ git checkout meine_eigenen_änderungen
$ git rebase master
Zunächst wird der Branch zurückgespult, um Ihre Änderungen
darauf neu anzuwenden ...
Wende an: juhu tolle änderungen
$ service apache2 restart # webserver starten!
</pre><p>
</p></td></tr></table></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.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="ch02s05.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.3. Installation mittels Ansible&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.5. kivitendo-Konfigurationsdatei</td></tr></table></div></body></html>
doc/html/ch02s05.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.5. Anpassung der PostgreSQL-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 3.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s04.html" title="2.4. kivitendo-Konfigurationsdatei"><link rel="next" href="ch02s06.html" title="2.6. Webserver-Konfiguration"></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.5. Anpassung der PostgreSQL-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.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="ch02s06.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.5. Anpassung der PostgreSQL-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Anpassung-der-PostgreSQL-Konfiguration"></a>2.5. Anpassung der PostgreSQL-Konfiguration</h2></div></div></div><p>PostgreSQL muss auf verschiedene Weisen angepasst werden.</p><p>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):</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
<a class="ulink" href="https://fedoraproject.org/wiki/PostgreSQL" target="_top">Fedora (Postgres-Installation unter Fedora)</a>
</p></li><li class="listitem"><p>
<a class="ulink" href="https://help.ubuntu.com/lts/serverguide/postgresql.html" target="_top">Ubuntu (Infos für Postgres für die aktuelle LTS Version)</a>
</p></li><li class="listitem"><p>
<a class="ulink" href="https://de.opensuse.org/PostgreSQL" target="_top">OpenSuSE (aktuell nur bis Version OpenSuSE 13 verifiziert)</a>
</p></li></ul></div><div class="sect2" title="2.5.1. Zeichensätze/die Verwendung von Unicode/UTF-8"><div class="titlepage"><div><div><h3 class="title"><a name="Zeichens%C3%A4tze-die-Verwendung-von-UTF-8"></a>2.5.1. Zeichensätze/die Verwendung von Unicode/UTF-8</h3></div></div></div><p>kivitendo setzt zwingend voraus, dass die Datenbank
Unicode/UTF-8 als Encoding einsetzt. Bei aktuellen
Serverinstallationen braucht man hier meist nicht einzugreifen.</p><p>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:</p><pre class="programlisting">su postgres
echo '\l' | psql
exit </pre><p>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:</p><pre class="programlisting">pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 9.3 clustername</pre><p>Die Datenbankversionsnummer muss an die tatsächlich verwendete
Versionsnummer angepasst werden.</p><p>Unter anderen Distributionen gibt es ähnliche Methoden.</p><p>Das Encoding einer Datenbank kann in <span class="command"><strong>psql</strong></span> mit
<code class="literal">\l</code> geprüft werden.</p></div><div class="sect2" title="2.5.2. Änderungen an Konfigurationsdateien"><div class="titlepage"><div><div><h3 class="title"><a name="%C3%84nderungen-an-Konfigurationsdateien"></a>2.5.2. Änderungen an Konfigurationsdateien</h3></div></div></div><p>In der Datei <code class="filename">postgresql.conf</code>, die je nach
Distribution in verschiedenen Verzeichnissen liegen kann (z.B.
<code class="filename">/var/lib/pgsql/data/</code> oder
<code class="filename">/etc/postgresql/</code>), muss sichergestellt werden,
dass TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den
Parameter <code class="varname">listen_address</code> gesteuert. Laufen
PostgreSQL und kivitendo auf demselben Rechner, so kann dort der Wert
<code class="literal">localhost</code> verwendet werden. Andernfalls müssen
Datenbankverbindungen auch von anderen Rechnern aus zugelassen werden,
was mit dem Wert <code class="literal">*</code> geschieht.</p><p>In der Datei <code class="filename">pg_hba.conf</code>, die im gleichen
Verzeichnis wie die <code class="filename">postgresql.conf</code> 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:</p><pre class="programlisting">local all kivitendo password
host all kivitendo 127.0.0.1 255.255.255.255 password</pre></div><div class="sect2" title="2.5.3. Erweiterung für servergespeicherte Prozeduren"><div class="titlepage"><div><div><h3 class="title"><a name="Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren"></a>2.5.3. Erweiterung für servergespeicherte Prozeduren</h3></div></div></div><p>In der Datenbank <code class="literal">template1</code> muss die
Unterstützung für servergespeicherte Prozeduren eingerichet werden.
Melden Sie sich dafür als Benutzer “postgres” an der Datenbank an:
</p><pre class="programlisting">su - postgres
psql template1</pre><p> führen Sie die folgenden Kommandos aus:</p><pre class="programlisting">CREATE EXTENSION IF NOT EXISTS plpgsql;
\q</pre><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>
<code class="literal">CREATE EXTENSION</code> ist seit Version 9.1 die
bevorzugte Syntax um die Sprache <code class="literal">plpgsql</code>
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.</p><pre class="programlisting">CREATE LANGUAGE 'plpgsql';
\q</pre></td></tr></table></div></div><div class="sect2" title="2.5.4. Erweiterung für Trigram Prozeduren"><div class="titlepage"><div><div><h3 class="title"><a name="Erweiterung-f%C3%BCr-trigram"></a>2.5.4. Erweiterung für Trigram Prozeduren</h3></div></div></div><p>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.</p><pre class="programlisting">su - postgres
psql
\password postgres
<title>2.5. kivitendo-Konfigurationsdatei</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s04.html" title="2.4. Manuelle Installation des Programmpaketes"><link rel="next" href="ch02s06.html" title="2.6. Anpassung der PostgreSQL-Konfiguration"></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.5. kivitendo-Konfigurationsdatei</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.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="ch02s06.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.5. kivitendo-Konfigurationsdatei"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.config-file"></a>2.5. kivitendo-Konfigurationsdatei</h2></div></div></div><div class="sect2" title="2.5.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.introduction"></a>2.5.1. Einführung</h3></div></div></div><p>In kivitendo gibt es nur noch eine Konfigurationsdatei, die
benötigt wird: <code class="filename">config/kivitendo.conf</code> (kurz: "die
Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation von
kivitendo bzw. der Migration von älteren Versionen angelegt
werden.</p><p>Als Vorlage dient die Datei
<code class="filename">config/kivitendo.conf.default</code> (kurz: "die
Default-Datei"):</p><pre class="programlisting">$ cp config/kivitendo.conf.default config/kivitendo.conf</pre><p>Die Default-Datei wird immer zuerst eingelesen. Werte, die in
der Hauptkonfigurationsdatei stehen, überschreiben die Werte aus der
Default-Datei. Die Hauptkonfigurationsdatei muss also nur die
Abschnitte und Werte enthalten, die von denen der Default-Datei
abweichen.</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 der Umbenennung in kivitendo hieß diese Datei noch
<code class="filename">config/lx_office.conf</code>. Aus Gründen der
Kompatibilität wird diese Datei eingelesen, sofern die Datei
<code class="filename">config/kivitendo.conf</code> nicht existiert.</p></td></tr></table></div><p>Diese Hauptkonfigurationsdatei ist dann eine
installationsspezifische Datei, d.h. sie enthält bspw. lokale
Passwörter und wird auch nicht im Versionsmanagement (git)
verwaltet.</p><p>Die Konfiguration ist ferner serverabhängig, d.h. für alle
Mandaten, bzw. Datenbanken gleich.</p></div><div class="sect2" title="2.5.2. Abschnitte und Parameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.sections-parameters"></a>2.5.2. Abschnitte und Parameter</h3></div></div></div><p>Die Konfigurationsdatei besteht aus mehreren Teilen, die
entsprechend kommentiert sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
<code class="literal">authentication</code> (siehe Abschnitt "<a class="xref" href="ch02s09.html" title="2.9. Benutzerauthentifizierung und Administratorpasswort">Abschnitt&nbsp;2.9, „Benutzerauthentifizierung und Administratorpasswort“</a>"
in diesem Kapitel)</p></li><li class="listitem"><p>
<code class="literal">authentication/database</code>
</p></li><li class="listitem"><p>
<code class="literal">authentication/ldap</code>
</p></li><li class="listitem"><p>
<code class="literal">system</code>
</p></li><li class="listitem"><p>
<code class="literal">paths</code>
</p></li><li class="listitem"><p>
<code class="literal">mail_delivery</code> (siehe Abschnitt "<a class="xref" href="ch02s12.html#config.sending-email.smtp" title="2.12.2. Versand über einen SMTP-Server">E-Mail-Versand über einen SMTP-Server</a>)</p></li><li class="listitem"><p>
<code class="literal">applications</code>
</p></li><li class="listitem"><p>
<code class="literal">environment</code>
</p></li><li class="listitem"><p>
<code class="literal">print_templates</code>
</p></li><li class="listitem"><p>
<code class="literal">task_server</code>
</p></li><li class="listitem"><p>
<code class="literal">periodic_invoices</code>
</p></li><li class="listitem"><p>
<code class="literal">self_tests</code>
</p></li><li class="listitem"><p>
<code class="literal">console</code>
</p></li><li class="listitem"><p>
<code class="literal">testing</code>
</p></li><li class="listitem"><p>
<code class="literal">testing/database</code>
</p></li><li class="listitem"><p>
<code class="literal">debug</code>
</p></li></ul></div><p>Die üblicherweise wichtigsten Parameter, die am Anfang
einzustellen oder zu kontrollieren sind, sind:</p><pre class="programlisting">[authentication]
admin_password = geheim
Eingabe Passwort
\q</pre><p>Benutzername Postgres und Passwort können jetzt beim Anlegen
einer Datenbank bzw. bei Updatescripten, die SuperuserRechte
benötigen, eingegeben werden.</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>
<code class="literal">pg_trgm</code> ist je nach Distribution nicht im
Standard-Paket von Postgres enthalten. Ein </p><pre class="programlisting">select * from pg_available_extensions where name ='pg_trgm';</pre><p>
in template1 sollte entsprechend erfolgreich sein. Andernfalls muss
das Paket nachinstalliert werden, bspw. bei debian/ubuntu
</p><pre class="programlisting">apt install postgresql-contrib</pre><p>
</p></td></tr></table></div></div><div class="sect2" title="2.5.5. Datenbankbenutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbankbenutzer-anlegen"></a>2.5.5. Datenbankbenutzer anlegen</h3></div></div></div><p>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:</p><p>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.</p><pre class="programlisting">su - postgres
createuser -d -P kivitendo
exit</pre><p>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern
Sie den evtl. voreingestellten Benutzer “postgres” auf “kivitendo”
bzw. den hier gewählten Benutzernamen.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.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="ch02s06.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.4. kivitendo-Konfigurationsdatei&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.6. Webserver-Konfiguration</td></tr></table></div></body></html>
[authentication/database]
host = localhost
port = 5432
db = kivitendo_auth
user = postgres
password =
[system]
default_manager = german</pre><p>Für kivitendo Installationen in der Schweiz sollte hier
<code class="varname">german</code> durch <code class="varname">swiss</code> ersetzt
werden.</p><p>Die Einstellung <code class="varname">default_manager = swiss</code>
bewirkt:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Beim Erstellen einer neuen Datenbank in der kivitendo
Administration werden automatisch die Standard-Werte für die
Schweiz voreingestellt: Währung CHF, 5er-Rundung, Schweizer
KMU-Kontenplan, Sollversteuerung, Aufwandsmethode, Bilanzierung
(die Werte können aber manuell angepasst werden).</p></li><li class="listitem"><p>Einstellen der Standardkonten für Rundungserträge und
-aufwendungen (unter Mandantenkonfiguration → Standardkonten
veränderbar)</p></li><li class="listitem"><p>das verwendete Zahlenformat wird auf
<code class="varname">1'000.00</code> eingestellt (unter Programm →
Benutzereinstellungen veränderbar)</p></li><li class="listitem"><p>DATEV-Automatik und UStVA werden nicht angezeigt,
Erfolgsrechnung ersetzt GUV ( unter Mandantenkonfiguration →
Features veränderbar)</p></li></ul></div><p>Nutzt man wiederkehrende Rechnungen, kann man unter
<code class="varname">[periodic_invoices]</code> den Login eines Benutzers
angeben, der nach Erstellung der Rechnungen eine entsprechende E-Mail
mit Informationen über die erstellten Rechnungen bekommt.</p><p>kivitendo bringt eine eigene Komponente zur zeitgesteuerten
Ausführung bestimmter Aufgaben mit, den <a class="link" href="ch02s08.html" title="2.8. Der Task-Server">Task-Server</a>. Er wird u.a. für
Features wie die <a class="link" href="ch03.html#features.periodic-invoices" title="3.1. Wiederkehrende Rechnungen">wiederkehrenden Rechnungen</a>
benötigt, erledigt aber auch andere erforderliche Aufgaben und muss
daher in Betrieb genommen werden. Seine Einrichtung wird im Abschnitt
<a class="link" href="ch02s08.html" title="2.8. Der Task-Server">Task-Server</a> genauer
beschrieben.</p><p>Für Entwickler finden sich unter <code class="varname">[debug]</code>
wichtige Funktionen, um die Fehlersuche zu erleichtern.</p></div><div class="sect2" title="2.5.3. Versionen vor 2.6.3"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.prior-versions"></a>2.5.3. Versionen vor 2.6.3</h3></div></div></div><p>In älteren kivitendo Versionen gab es im Verzeichnis
<code class="filename">config</code> die Dateien
<code class="filename">authentication.pl</code> und
<code class="filename">lx-erp.conf</code>, die jeweils Perl-Dateien waren. Es
gab auch die Möglichkeit, eine lokale Version der Konfigurationsdatei
zu erstellen (<code class="filename">lx-erp-local.conf</code>). Dies ist ab
2.6.3 nicht mehr möglich, aber auch nicht mehr nötig.</p><p>Beim Update von einer kivitendo-Version vor 2.6.3 auf 2.6.3 oder
jünger müssen die Einstellungen aus den alten Konfigurationsdateien
manuell übertragen und die alten Konfigurationsdateien anschließend
gelöscht oder verschoben werden. Ansonsten zeigt kivitendo eine
entsprechende Fehlermeldung an.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.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="ch02s06.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.4. Manuelle Installation des Programmpaketes&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.6. Anpassung der PostgreSQL-Konfiguration</td></tr></table></div></body></html>
doc/html/ch02s06.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<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 3.8.0: 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="d0e1190"></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
mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
<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
Webserverkonfigurationsdatei <code class="literal">httpd.conf</code> eingestellt
werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
anderen Datei hinzu, die beim Starten des Webservers eingelesen
wird:</p><pre class="programlisting">AliasMatch ^/kivitendo-erp/[^/]+\.pl /var/www/kivitendo-erp/dispatcher.pl
Alias /kivitendo-erp/ /var/www/kivitendo-erp/
<title>2.6. Anpassung der PostgreSQL-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 3.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s05.html" title="2.5. kivitendo-Konfigurationsdatei"><link rel="next" href="ch02s07.html" title="2.7. Webserver-Konfiguration"></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. Anpassung der PostgreSQL-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. Anpassung der PostgreSQL-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Anpassung-der-PostgreSQL-Konfiguration"></a>2.6. Anpassung der PostgreSQL-Konfiguration</h2></div></div></div><p>PostgreSQL muss auf verschiedene Weisen angepasst werden.</p><p>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):</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
<a class="ulink" href="https://fedoraproject.org/wiki/PostgreSQL" target="_top">Fedora (Postgres-Installation unter Fedora)</a>
</p></li><li class="listitem"><p>
<a class="ulink" href="https://help.ubuntu.com/lts/serverguide/postgresql.html" target="_top">Ubuntu (Infos für Postgres für die aktuelle LTS Version)</a>
</p></li><li class="listitem"><p>
<a class="ulink" href="https://de.opensuse.org/PostgreSQL" target="_top">OpenSuSE (aktuell nur bis Version OpenSuSE 13 verifiziert)</a>
</p></li></ul></div><div class="sect2" title="2.6.1. Zeichensätze/die Verwendung von Unicode/UTF-8"><div class="titlepage"><div><div><h3 class="title"><a name="Zeichens%C3%A4tze-die-Verwendung-von-UTF-8"></a>2.6.1. Zeichensätze/die Verwendung von Unicode/UTF-8</h3></div></div></div><p>kivitendo setzt zwingend voraus, dass die Datenbank
Unicode/UTF-8 als Encoding einsetzt. Bei aktuellen
Serverinstallationen braucht man hier meist nicht einzugreifen.</p><p>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:</p><pre class="programlisting">su postgres
echo '\l' | psql
exit </pre><p>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:</p><pre class="programlisting">pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 9.3 clustername</pre><p>Die Datenbankversionsnummer muss an die tatsächlich verwendete
Versionsnummer angepasst werden.</p><p>Unter anderen Distributionen gibt es ähnliche Methoden.</p><p>Das Encoding einer Datenbank kann in <span class="command"><strong>psql</strong></span> mit
<code class="literal">\l</code> geprüft werden.</p></div><div class="sect2" title="2.6.2. Änderungen an Konfigurationsdateien"><div class="titlepage"><div><div><h3 class="title"><a name="%C3%84nderungen-an-Konfigurationsdateien"></a>2.6.2. Änderungen an Konfigurationsdateien</h3></div></div></div><p>In der Datei <code class="filename">postgresql.conf</code>, die je nach
Distribution in verschiedenen Verzeichnissen liegen kann (z.B.
<code class="filename">/var/lib/pgsql/data/</code> oder
<code class="filename">/etc/postgresql/</code>), muss sichergestellt werden,
dass TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den
Parameter <code class="varname">listen_address</code> gesteuert. Laufen
PostgreSQL und kivitendo auf demselben Rechner, so kann dort der Wert
<code class="literal">localhost</code> verwendet werden. Andernfalls müssen
Datenbankverbindungen auch von anderen Rechnern aus zugelassen werden,
was mit dem Wert <code class="literal">*</code> geschieht.</p><p>In der Datei <code class="filename">pg_hba.conf</code>, die im gleichen
Verzeichnis wie die <code class="filename">postgresql.conf</code> 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:</p><pre class="programlisting">local all kivitendo password
host all kivitendo 127.0.0.1 255.255.255.255 password</pre></div><div class="sect2" title="2.6.3. Erweiterung für servergespeicherte Prozeduren"><div class="titlepage"><div><div><h3 class="title"><a name="Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren"></a>2.6.3. Erweiterung für servergespeicherte Prozeduren</h3></div></div></div><p>In der Datenbank <code class="literal">template1</code> muss die
Unterstützung für servergespeicherte Prozeduren eingerichet werden.
Melden Sie sich dafür als Benutzer “postgres” an der Datenbank an:
</p><pre class="programlisting">su - postgres
psql template1</pre><p> führen Sie die folgenden Kommandos aus:</p><pre class="programlisting">CREATE EXTENSION IF NOT EXISTS plpgsql;
\q</pre><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>
<code class="literal">CREATE EXTENSION</code> ist seit Version 9.1 die
bevorzugte Syntax um die Sprache <code class="literal">plpgsql</code>
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.</p><pre class="programlisting">CREATE LANGUAGE 'plpgsql';
\q</pre></td></tr></table></div></div><div class="sect2" title="2.6.4. Erweiterung für Trigram Prozeduren"><div class="titlepage"><div><div><h3 class="title"><a name="Erweiterung-f%C3%BCr-trigram"></a>2.6.4. Erweiterung für Trigram Prozeduren</h3></div></div></div><p>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.</p><pre class="programlisting">su - postgres
psql
\password postgres
&lt;Directory /var/www/kivitendo-erp&gt;
AddHandler cgi-script .pl
Options ExecCGI Includes FollowSymlinks
&lt;/Directory&gt;
&lt;Directory /var/www/kivitendo-erp/users&gt;
Require all granted
&lt;/Directory&gt;</pre><p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
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
Plus ‘<code class="literal">+</code>’ gesetzt werden.</p><p>Bei einigen Distribution (Ubuntu ab 14.04, Debian ab 8.2) muss
noch explizit das cgi-Modul mittels </p><pre class="programlisting">a2enmod cgi</pre><p>
aktiviert werden.</p></td></tr></table></div><p>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:</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>
kopiert:</p><p>
[<span class="citation"> 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. </span>]
</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
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.</p><p>Mit FastCGI werden nun die Module einmal geladen, und danach
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.4.7 (Ubuntu 14.04.2 LTS) und mod_fcgid.</p></li><li class="listitem"><p>Apache 2.4.18 (Ubuntu 16.04 LTS) und mod_fcgid</p></li><li class="listitem"><p>Apache 2.4.29 (Ubuntu 18.04 LTS) und mod_fcgid</p></li><li class="listitem"><p>Apache 2.4.41 (Ubuntu 20.04 LTS) und mod_fcgid</p></li></ul></div><p>Als Perl Backend wird das Modul <code class="filename">FCGI.pm</code>
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 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.</p><p>Mit <a class="ulink" href="http://www.cpan.org" target="_top">CPAN</a> lässt sie
sich die Vorgängerversion wie folgt 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
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.</p><p>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
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
erfolgt durch Anpassung der vorhandenen <code class="function">Alias</code>-
und <code class="function">Directory</code>-Direktiven. Dabei wird zwischen
dem Installationspfad von kivitendo im Dateisystem
("<code class="filename">/path/to/kivitendo-erp</code>") und der URL
unterschieden, unter der kivitendo im Webbrowser erreichbar ist
("<code class="filename">/url/for/kivitendo-erp</code>").</p><p>Folgender Konfigurationsschnipsel funktioniert mit
mod_fastcgi:</p><pre class="programlisting">AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi
Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/
&lt;Directory /path/to/kivitendo-erp&gt;
AllowOverride All
Options ExecCGI Includes FollowSymlinks
Require all granted
&lt;/Directory&gt;
&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
Require all denied
&lt;/DirectoryMatch&gt;</pre><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>Wer einen älteren Apache als Version 2.4 im Einsatz hat,
muss entsprechend die Syntax der Directorydirektiven verändert.
Statt</p><pre class="programlisting">Require all granted</pre><p>muß man Folgendes einstellen:</p><pre class="programlisting">
Order Allow,Deny
Allow from All </pre><p>und statt</p><pre class="programlisting">Require all denied</pre><p>muss stehen:</p><pre class="programlisting">
Order Deny,Allow
Deny from All </pre></td></tr></table></div><p>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:</p><pre class="programlisting">FcgidMaxRequestLen 10485760</pre><p>Das Ganze sollte dann so aussehen:</p><pre class="programlisting">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
&lt;Directory /path/to/kivitendo-erp&gt;
AllowOverride All
Options ExecCGI Includes FollowSymlinks
Require all granted
&lt;/Directory&gt;
&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
Require all denied
&lt;/DirectoryMatch&gt;</pre><p>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.</p><p>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:</p><pre class="programlisting"># 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/</pre><p>Dann ist unter <code class="filename">/url/for/kivitendo-erp/</code>
die normale Version erreichbar, und unter
<code class="constant">/url/for/kivitendo-erp-fcgid/</code> die
FastCGI-Version.</p></div></div><div class="sect2" title="2.6.3. Authentifizierung mittels HTTP Basic Authentication"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1344"></a>2.6.3. Authentifizierung mittels HTTP Basic Authentication</h3></div></div></div><p>
Kivitendo unterstützt, dass Benutzerauthentifizierung über den Webserver mittels des »Basic«-HTTP-Authentifizierungs-Schema erfolgt
(siehe <a class="ulink" href="https://tools.ietf.org/html/rfc7617" target="_top">RFC 7617</a>). Dazu ist es aber nötig, dass der dabei vom Client
mitgeschickte Header <code class="constant">Authorization</code> vom Webserver an Kivitendo über die Umgebungsvariable
<code class="constant">HTTP_AUTHORIZATION</code> weitergegeben wird, was standardmäßig nicht der Fall ist. Für Apache kann dies über die
folgende Konfigurationsoption aktiviert werden:
</p><pre class="programlisting">SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1</pre></div><div class="sect2" title="2.6.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1360"></a>2.6.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</h3></div></div></div><p>
Aufgrund von aktuellen (Mitte 2020) Sicherheitswarnungen für git basierte Webanwendungen ist die mitausgelieferte .htaccess
restriktiver geworden und verhindert somit das Auslesen von git basierten Daten.
Für debian/ubuntu muss das Modul mod_rewrite einmalig so aktiviert werden:
</p><pre class="programlisting">a2enmod rewrite</pre><p>
Alternativ und für Installationen ohne Apache ist folgender Artikel interessant:
<a class="ulink" href="https://www.cyberscan.io/blog/git-luecke" target="_top">git-lücke</a>.
Anstelle des dort beschriebenen DirectoryMatch für Apache2 würden wir etwas weitergehend auch noch das Verzeichnis config miteinbeziehen
sowie ferner auch die Möglichkeit nicht ausschließen, dass es in Unterverzeichnissen auch noch .git Repositories geben kann.
Die Empfehlung für Apache 2.4 wäre damit:
</p><pre class="programlisting">
&lt;DirectoryMatch "/(\.git|config)/"&gt;
Require all denied
&lt;/DirectoryMatch&gt;</pre><p>
</p></div><div class="sect2" title="2.6.5. Weitergehende Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1374"></a>2.6.5. Weitergehende Konfiguration</h3></div></div></div><p>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 <a class="ulink" href="https://www.kivitendo.de/boards/1/topics/142" target="_top">Foreneintrag
(Stand Sept. 2015)</a> und einen aktuellen (Stand Mai 2017) <a class="ulink" href="https://mozilla.github.io/server-side-tls/ssl-config-generator/" target="_top">
SSL-Konfigurations-Generator</a>.</p></div><div class="sect2" title="2.6.6. Aktivierung von Apache2 modsecurity"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1385"></a>2.6.6. Aktivierung von Apache2 modsecurity</h3></div></div></div><p>Aufgrund des OpenSource Charakters ist kivitendo nicht "out of the box" sicher.
Organisatorisch empfehlen wir hier die enge Zusammenarbeit mit einem kivitendo Partner der auch in der
Lage ist weiterführende Fragen in Bezug auf Datenschutz und Datensicherheit zu beantworten.
Unabhängig davon empfehlen wir im Webserver Bereich die Aktivierung und Konfiguration des Moduls modsecurity für den Apache2, damit
XSS und SQL-Injections verhindert werden.</p><p> Als Idee hierfür sei dieser Blog-Eintrag genannt:
<a class="ulink" href="https://doxsec.wordpress.com/2017/06/11/using-modsecurity-web-application-firewall-to-prevent-sql-injection-and-xss-using-blocking-rules/" target="_top">
Test Apache2 modsecurity for SQL Injection</a>.</p></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>
Eingabe Passwort
\q</pre><p>Benutzername Postgres und Passwort können jetzt beim Anlegen
einer Datenbank bzw. bei Updatescripten, die SuperuserRechte
benötigen, eingegeben werden.</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>
<code class="literal">pg_trgm</code> ist je nach Distribution nicht im
Standard-Paket von Postgres enthalten. Ein </p><pre class="programlisting">select * from pg_available_extensions where name ='pg_trgm';</pre><p>
in template1 sollte entsprechend erfolgreich sein. Andernfalls muss
das Paket nachinstalliert werden, bspw. bei debian/ubuntu
</p><pre class="programlisting">apt install postgresql-contrib</pre><p>
</p></td></tr></table></div></div><div class="sect2" title="2.6.5. Datenbankbenutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbankbenutzer-anlegen"></a>2.6.5. Datenbankbenutzer anlegen</h3></div></div></div><p>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:</p><p>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.</p><pre class="programlisting">su - postgres
createuser -d -P kivitendo
exit</pre><p>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern
Sie den evtl. voreingestellten Benutzer “postgres” auf “kivitendo”
bzw. den hier gewählten Benutzernamen.</p></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. kivitendo-Konfigurationsdatei&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. Webserver-Konfiguration</td></tr></table></div></body></html>
doc/html/ch02s07.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<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.8.0: 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
regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und diese zu
festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser Prozess
wird u.a. für die Erzeugung der wiederkehrenden Rechnungen und weitere
essenzielle Aufgaben benutzt.</p><p>Der Task-Server muss einmalig global in der Konfigurationsdatei
konfiguriert werden. Danach wird er für jeden Mandanten, für den er
laufen soll, in der Adminsitrationsmaske eingeschaltet.</p><p>Beachten Sie, dass der Task-Server in den Boot-Vorgang Ihres
Servers integriert werden muss, damit er automatisch gestartet wird.
Dies kann kivitendo nicht für Sie erledigen.</p><p>Da der Task-Server als Perlscript läuft, wird Arbeitsspeicher, der
einmal benötigt wurde, nicht mehr an das Betriebssystem zurückgegeben,
solange der Task-Server läuft. Dies kann dazu führen, dass ein länger
laufender Task-Server mit der Zeit immer mehr Arbeitsspeicher für sich
beansprucht. Es ist deshalb sinnvoll, dass der Task-Server in
regelmässigen Abständen neu gestartet wird. Allerdings berücksichtigt der
Task-Server ein Memory-Limit, wenn dieses in der Konfigurationsdatei
angegeben ist. Bei Überschreiten dieses Limits beendet sich der
Task-Server. Sofern der Task-Server als systemd-Service mit dem
mitgelieferten Skript eingerichtet wurde, startet dieser danach
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
<code class="literal">[task_server]</code> in der Datei
<code class="filename">config/kivitendo.conf</code>. Die dort verfügbaren
Optionen sind:</p><div class="variablelist"><dl><dt><span class="term">
<code class="varname">run_as</code>
</span></dt><dd><p>Wird der Server vom Systembenutzer <code class="literal">root</code>
gestartet, so wechselt er auf den mit <code class="literal">run_as</code>
angegebenen Systembenutzer. Der Systembenutzer muss dieselben
Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
(siehe see <a class="xref" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>). Daher
ist es erforderlich, hier denselben Systembenutzer einzutragen,
unter dem auch der Webserver läuft.</p></dd><dt><span class="term">
<code class="varname">debug</code>
</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
anschließend jeder Mandant, für den der Task-Server laufen soll,
einmalig konfiguriert werden. Dazu kann in der Maske zum Bearbeiten
von Mandanten im Administrationsbereich eine kivitendo-Benutzerkennung
ausgewählt werden, unter der der Task-Server seine Arbeit
verrichtet.</p><p>Ist in dieser Einstellung keine Benutzerkennung ausgewählt, so
wird der Task-Server für diesen Mandanten keine Aufgaben
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
reguläres SystemV-kompatibles Boot-Script. Außerdem wechselt er beim
Starten automatisch in das kivitendo-Installationsverzeichnis.</p><p>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.</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="d0e1458"></a>2.7.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere
openSUSE, ältere Fedora)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/system-v/kivitendo-task-server</code>
nach <code class="filename">/etc/init.d/kivitendo-task-server</code>. Passen
Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
<code class="literal">DAEMON=....</code>). Binden Sie das Script in den
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
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
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="d0e1487"></a>2.7.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/upstart/kivitendo-task-server.conf</code>
nach <code class="filename">/etc/init/kivitendo-task-server.conf</code>.
Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
<code class="literal">exec ....</code>).</p><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
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="d0e1505"></a>2.7.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere
Fedora, neuere Ubuntu und neuere Debians)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/systemd/kivitendo-task-server.service</code>
nach <code class="filename">/etc/systemd/system/</code>. Passen Sie in der
kopierten Datei den Pfad zum Task-Server an (Zeilen
<code class="literal">ExecStart=....</code> und
<code class="literal">ExecStop=...</code>).</p><p>Machen Sie anschließend das Script systemd bekannt, und binden
Sie es in den Boot-Prozess ein. Dazu führen Sie die folgenden Befehl
aus:</p><pre class="programlisting">systemctl daemon-reload
systemctl enable kivitendo-task-server.service</pre><p>Wenn Sie den Task-Server jetzt sofort starten möchten, anstatt
den Server neu zu starten, so können Sie das mit dem folgenden
Befehl tun:</p><pre class="programlisting">systemctl start kivitendo-task-server.service</pre><p>Ein so eingerichteter Task-Server startet nach Beendigung
automatisch erneut. Das betrifft eine Beendigung über die Oberfläche,
eine Beendingung über die Prozesskontrolle und eine Beendigung bei
Überschreiten des Memory-Limits. Soll der Task-Server nicht erneut
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>
<code class="literal">Befehl</code> ist dabei eine der folgenden
Optionen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
<code class="literal">start</code> startet eine neue Instanz des
Task-Servers. Die Prozess-ID wird innerhalb des
<code class="filename">users</code>-Verzeichnisses abgelegt.</p></li><li class="listitem"><p>
<code class="literal">stop</code> beendet einen laufenden
Task-Server.</p></li><li class="listitem"><p>
<code class="literal">restart</code> beendet und startet ihn
neu.</p></li><li class="listitem"><p>
<code class="literal">status</code> berichtet, ob der Task-Server
läuft.</p></li></ul></div><p>Der Task-Server wechselt beim Starten automatisch in das
kivitendo-Installationsverzeichnis.</p><p>Dieselben Optionen können auch für die SystemV-basierenden
Runlevel-Scripte benutzt werden (siehe oben).</p><p>Wurde der Task-Server als systemd-Service eingerichtet (s.o.),
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>
<code class="literal">Aktiv:</code> Hier ein 'Ja' auswählen</p></li><li class="listitem"><p>
<code class="literal">Ausführungsart:</code> 'wiederholte Ausführung' auswählen</p></li><li class="listitem"><p>
<code class="literal">Paketname:</code> 'SetNumberRange' auswählen</p></li><li class="listitem"><p>
<code class="literal">Ausführungszeitplan:</code> Hier entsprechend Werte wie in der crontab eingeben.</p><p>Syntax:</p><pre class="programlisting">* * * * *
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── Wochentag (0-7, Sonntag ist 0 oder 7)
│ │ │ └────── Monat (1-12)
│ │ └──────── Tag (1-31)
│ └────────── Stunde (0-23)
└──────────── Minute (0-59) </pre><p>Die Sterne können folgende Werte haben:</p><pre class="programlisting">
1 2 3 4 5
<title>2.7. 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 3.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s06.html" title="2.6. Anpassung der PostgreSQL-Konfiguration"><link rel="next" href="ch02s08.html" title="2.8. 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.7. Webserver-Konfiguration</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. Webserver-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Apache-Konfiguration"></a>2.7. Webserver-Konfiguration</h2></div></div></div><div class="sect2" title="2.7.1. Grundkonfiguration mittels CGI"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1202"></a>2.7.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
mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
<a class="xref" href="ch02s07.html#Apache-Konfiguration.FCGI" title="2.7.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
Webserverkonfigurationsdatei <code class="literal">httpd.conf</code> eingestellt
werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
anderen Datei hinzu, die beim Starten des Webservers eingelesen
wird:</p><pre class="programlisting">AliasMatch ^/kivitendo-erp/[^/]+\.pl /var/www/kivitendo-erp/dispatcher.pl
Alias /kivitendo-erp/ /var/www/kivitendo-erp/
1 = Minute (0-59)
2 = Stunde (0-23)
3 = Tag (0-31)
4 = Monat (1-12)
5 = Wochentag (0-7, Sonntag ist 0 oder 7)
</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>
<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>
<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>
<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">
multiplier Nummernkreis 2020
10 -&gt; 20200
100 -&gt; 202000
1000 -&gt; 2020000
</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>
<code class="literal">Daten:</code>
</p><pre class="programlisting">multiplier: 100
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>
&lt;Directory /var/www/kivitendo-erp&gt;
AddHandler cgi-script .pl
Options ExecCGI Includes FollowSymlinks
&lt;/Directory&gt;
&lt;Directory /var/www/kivitendo-erp/users&gt;
Require all granted
&lt;/Directory&gt;</pre><p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
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
Plus ‘<code class="literal">+</code>’ gesetzt werden.</p><p>Bei einigen Distribution (Ubuntu ab 14.04, Debian ab 8.2) muss
noch explizit das cgi-Modul mittels </p><pre class="programlisting">a2enmod cgi</pre><p>
aktiviert werden.</p></td></tr></table></div><p>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:</p><pre class="programlisting">EnableSendfile Off</pre></div><div class="sect2" title="2.7.2. Konfiguration für FastCGI/FCGI"><div class="titlepage"><div><div><h3 class="title"><a name="Apache-Konfiguration.FCGI"></a>2.7.2. Konfiguration für FastCGI/FCGI</h3></div></div></div><div class="sect3" title="2.7.2.1. Was ist FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WasIstEs"></a>2.7.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>
kopiert:</p><p>
[<span class="citation"> 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. </span>]
</p></div><div class="sect3" title="2.7.2.2. Warum FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Warum"></a>2.7.2.2. Warum FastCGI?</h4></div></div></div><p>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.</p><p>Mit FastCGI werden nun die Module einmal geladen, und danach
wird nur die eigentliche Programmlogik ausgeführt.</p></div><div class="sect3" title="2.7.2.3. Getestete Kombinationen aus Webservern und Plugin"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WebserverUndPlugin"></a>2.7.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.4.7 (Ubuntu 14.04.2 LTS) und mod_fcgid.</p></li><li class="listitem"><p>Apache 2.4.18 (Ubuntu 16.04 LTS) und mod_fcgid</p></li><li class="listitem"><p>Apache 2.4.29 (Ubuntu 18.04 LTS) und mod_fcgid</p></li><li class="listitem"><p>Apache 2.4.41 (Ubuntu 20.04 LTS) und mod_fcgid</p></li></ul></div><p>Als Perl Backend wird das Modul <code class="filename">FCGI.pm</code>
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 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.</p><p>Mit <a class="ulink" href="http://www.cpan.org" target="_top">CPAN</a> lässt sie
sich die Vorgängerversion wie folgt 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.7.2.4. Konfiguration des Webservers"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Konfiguration"></a>2.7.2.4. Konfiguration des Webservers</h4></div></div></div><p>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.</p><p>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
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
erfolgt durch Anpassung der vorhandenen <code class="function">Alias</code>-
und <code class="function">Directory</code>-Direktiven. Dabei wird zwischen
dem Installationspfad von kivitendo im Dateisystem
("<code class="filename">/path/to/kivitendo-erp</code>") und der URL
unterschieden, unter der kivitendo im Webbrowser erreichbar ist
("<code class="filename">/url/for/kivitendo-erp</code>").</p><p>Folgender Konfigurationsschnipsel funktioniert mit
mod_fastcgi:</p><pre class="programlisting">AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi
Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/
&lt;Directory /path/to/kivitendo-erp&gt;
AllowOverride All
Options ExecCGI Includes FollowSymlinks
Require all granted
&lt;/Directory&gt;
&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
Require all denied
&lt;/DirectoryMatch&gt;</pre><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>Wer einen älteren Apache als Version 2.4 im Einsatz hat,
muss entsprechend die Syntax der Directorydirektiven verändert.
Statt</p><pre class="programlisting">Require all granted</pre><p>muß man Folgendes einstellen:</p><pre class="programlisting">
Order Allow,Deny
Allow from All </pre><p>und statt</p><pre class="programlisting">Require all denied</pre><p>muss stehen:</p><pre class="programlisting">
Order Deny,Allow
Deny from All </pre></td></tr></table></div><p>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:</p><pre class="programlisting">FcgidMaxRequestLen 10485760</pre><p>Das Ganze sollte dann so aussehen:</p><pre class="programlisting">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
&lt;Directory /path/to/kivitendo-erp&gt;
AllowOverride All
Options ExecCGI Includes FollowSymlinks
Require all granted
&lt;/Directory&gt;
&lt;DirectoryMatch /path/to/kivitendo-erp/users&gt;
Require all denied
&lt;/DirectoryMatch&gt;</pre><p>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.</p><p>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:</p><pre class="programlisting"># 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/</pre><p>Dann ist unter <code class="filename">/url/for/kivitendo-erp/</code>
die normale Version erreichbar, und unter
<code class="constant">/url/for/kivitendo-erp-fcgid/</code> die
FastCGI-Version.</p></div></div><div class="sect2" title="2.7.3. Authentifizierung mittels HTTP Basic Authentication"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1356"></a>2.7.3. Authentifizierung mittels HTTP Basic Authentication</h3></div></div></div><p>
Kivitendo unterstützt, dass Benutzerauthentifizierung über den Webserver mittels des »Basic«-HTTP-Authentifizierungs-Schema erfolgt
(siehe <a class="ulink" href="https://tools.ietf.org/html/rfc7617" target="_top">RFC 7617</a>). Dazu ist es aber nötig, dass der dabei vom Client
mitgeschickte Header <code class="constant">Authorization</code> vom Webserver an Kivitendo über die Umgebungsvariable
<code class="constant">HTTP_AUTHORIZATION</code> weitergegeben wird, was standardmäßig nicht der Fall ist. Für Apache kann dies über die
folgende Konfigurationsoption aktiviert werden:
</p><pre class="programlisting">SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1</pre></div><div class="sect2" title="2.7.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1372"></a>2.7.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</h3></div></div></div><p>
Aufgrund von aktuellen (Mitte 2020) Sicherheitswarnungen für git basierte Webanwendungen ist die mitausgelieferte .htaccess
restriktiver geworden und verhindert somit das Auslesen von git basierten Daten.
Für debian/ubuntu muss das Modul mod_rewrite einmalig so aktiviert werden:
</p><pre class="programlisting">a2enmod rewrite</pre><p>
Alternativ und für Installationen ohne Apache ist folgender Artikel interessant:
<a class="ulink" href="https://www.cyberscan.io/blog/git-luecke" target="_top">git-lücke</a>.
Anstelle des dort beschriebenen DirectoryMatch für Apache2 würden wir etwas weitergehend auch noch das Verzeichnis config miteinbeziehen
sowie ferner auch die Möglichkeit nicht ausschließen, dass es in Unterverzeichnissen auch noch .git Repositories geben kann.
Die Empfehlung für Apache 2.4 wäre damit:
</p><pre class="programlisting">
&lt;DirectoryMatch "/(\.git|config)/"&gt;
Require all denied
&lt;/DirectoryMatch&gt;</pre><p>
</p></div><div class="sect2" title="2.7.5. Weitergehende Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1386"></a>2.7.5. Weitergehende Konfiguration</h3></div></div></div><p>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 <a class="ulink" href="http://redmine.kivitendo-premium.de/boards/1/topics/142" target="_top">Foreneintrag
(Stand Sept. 2015)</a> und einen aktuellen (Stand Mai 2017) <a class="ulink" href="https://mozilla.github.io/server-side-tls/ssl-config-generator/" target="_top">
SSL-Konfigurations-Generator</a>.</p></div><div class="sect2" title="2.7.6. Aktivierung von Apache2 modsecurity"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1397"></a>2.7.6. Aktivierung von Apache2 modsecurity</h3></div></div></div><p>Aufgrund des OpenSource Charakters ist kivitendo nicht "out of the box" sicher.
Organisatorisch empfehlen wir hier die enge Zusammenarbeit mit einem kivitendo Partner der auch in der
Lage ist weiterführende Fragen in Bezug auf Datenschutz und Datensicherheit zu beantworten.
Unabhängig davon empfehlen wir im Webserver Bereich die Aktivierung und Konfiguration des Moduls modsecurity für den Apache2, damit
XSS und SQL-Injections verhindert werden.</p><p> Als Idee hierfür sei dieser Blog-Eintrag genannt:
<a class="ulink" href="https://doxsec.wordpress.com/2017/06/11/using-modsecurity-web-application-firewall-to-prevent-sql-injection-and-xss-using-blocking-rules/" target="_top">
Test Apache2 modsecurity for SQL Injection</a>.</p></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. 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.8. Der Task-Server</td></tr></table></div></body></html>
doc/html/ch02s08.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.8. Benutzerauthentifizierung und Administratorpasswort</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s07.html" title="2.7. Der Task-Server"><link rel="next" href="ch02s09.html" title="2.9. Mandanten-, Benutzer- und Gruppenverwaltung"></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.8. Benutzerauthentifizierung und Administratorpasswort</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s07.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="ch02s09.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.8. Benutzerauthentifizierung und Administratorpasswort"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>2.8. Benutzerauthentifizierung und Administratorpasswort</h2></div></div></div><p>Informationen über die Einrichtung der Benutzerauthentifizierung,
über die Verwaltung von Gruppen und weitere Einstellungen</p><div class="sect2" title="2.8.1. Grundlagen zur Benutzerauthentifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="Grundlagen-zur-Benutzerauthentifizierung"></a>2.8.1. Grundlagen zur Benutzerauthentifizierung</h3></div></div></div><p>kivitendo verwaltet die Benutzerinformationen in einer
Datenbank, die im folgenden “Authentifizierungsdatenbank” genannt
wird. Für jeden Benutzer kann dort eine eigene Datenbank für die
eigentlichen Finanzdaten hinterlegt sein. Diese beiden Datenbanken
können, müssen aber nicht unterschiedlich sein.</p><p>Im einfachsten Fall gibt es für kivitendo nur eine einzige
Datenbank, in der sowohl die Benutzerinformationen als auch die Daten
abgelegt werden.</p><p>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter gegen die Authentifizierungsdatenbank oder gegen einen oder
mehrere LDAP-Server überprüft werden.</p><p>Welche Art der Passwortüberprüfung kivitendo benutzt und wie
kivitendo die Authentifizierungsdatenbank erreichen kann, wird in der
Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
festgelegt. Diese muss bei der Installation und bei einem Upgrade von
einer Version vor v2.6.0 angelegt werden. Eine
Beispielkonfigurationsdatei
<code class="filename">config/kivitendo.conf.default</code> existiert, die als
Vorlage benutzt werden kann.</p></div><div class="sect2" title="2.8.2. Administratorpasswort"><div class="titlepage"><div><div><h3 class="title"><a name="Administratorpasswort"></a>2.8.2. Administratorpasswort</h3></div></div></div><p>Das Passwort, das zum Zugriff auf das Administrationsinterface
von kivitendo benutzt wird, wird ebenfalls in dieser Datei
gespeichert. Es kann auch nur dort und nicht mehr im
Administrationsinterface selber geändert werden. Der Parameter dazu
heißt <code class="varname">admin_password</code> im Abschnitt
<code class="varname">[authentication]</code>.</p></div><div class="sect2" title="2.8.3. Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Authentifizierungsdatenbank"></a>2.8.3. Authentifizierungsdatenbank</h3></div></div></div><p>Die Verbindung zur Authentifizierungsdatenbank wird mit den
Parametern in <code class="varname">[authentication/database]</code>
konfiguriert. Hier sind die folgenden Parameter anzugeben:</p><div class="variablelist"><dl><dt><span class="term">
<code class="literal">host</code>
</span></dt><dd><p>Der Rechnername oder die IP-Adresse des
Datenbankservers</p></dd><dt><span class="term">
<code class="literal">port</code>
</span></dt><dd><p>Die Portnummer des Datenbankservers, meist 5432</p></dd><dt><span class="term">
<code class="literal">db</code>
</span></dt><dd><p>Der Name der Authentifizierungsdatenbank</p></dd><dt><span class="term">
<code class="literal">user</code>
</span></dt><dd><p>Der Benutzername, mit dem sich kivitendo beim
Datenbankserver anmeldet (z.B.
"<code class="literal">postgres</code>")</p></dd><dt><span class="term">
<code class="literal">password</code>
</span></dt><dd><p>Das Passwort für den Datenbankbenutzer</p></dd></dl></div><p>Die Datenbank muss noch nicht existieren. kivitendo kann sie
automatisch anlegen (mehr dazu siehe unten).</p></div><div class="sect2" title="2.8.4. Passwortüberprüfung"><div class="titlepage"><div><div><h3 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung"></a>2.8.4. Passwortüberprüfung</h3></div></div></div><p>kivitendo unterstützt Passwortüberprüfung auf zwei Arten: gegen
die Authentifizierungsdatenbank und gegen externe LDAP- oder
Active-Directory-Server. Welche davon benutzt wird, regelt der
Parameter <code class="varname">module</code> im Abschnitt
<code class="varname">[authentication]</code>.</p><p>Dieser Parameter listet die zu verwendenden Authentifizierungsmodule auf. Es muss mindestens ein Modul angegeben werden, es
können aber auch mehrere angegeben werden. Weiterhin ist es möglich, das LDAP-Modul mehrfach zu verwenden und für jede Verwendung
eine unterschiedliche Konfiguration zu nutzen, z.B. um einen Fallback-Server anzugeben, der benutzt wird, sofern der Hauptserver
nicht erreichbar ist.</p><p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank geprüft werden, so muss der Parameter
<code class="varname">module</code> das Modul <code class="literal">DB</code> enthalten. Sofern das Modul in der Liste enthalten ist, egal an welcher
Position, können sowohl der Administrator als auch die Benutzer selber ihre Passwörter in kivitendo ändern.</p><p>Wenn Passwörter gegen einen oder mehrere externe LDAP- oder Active-Directory-Server geprüft werden, so muss der Parameter
<code class="varname">module</code> den Wert <code class="literal">LDAP</code> enthalten. In diesem Fall müssen zusätzliche Informationen über den
LDAP-Server im Abschnitt <code class="literal">[authentication/ldap]</code> angegeben werden. Das Modul kann auch mehrfach angegeben werden,
wobei jedes Modul eine eigene Konfiguration bekommen sollte. Der Name der Konfiguration wird dabei mit einem Doppelpunkt getrennt an
den Modulnamen angehängt (<code class="literal">LDAP:Name-der-Konfiguration</code>). Der entsprechende Abschnitt in der Konfigurationsdatei
lautet dann <code class="literal">[authentication/Name-der-Konfiguration]</code>.</p><p>Die verfügbaren Parameter für die LDAP-Konfiguration lauten:</p><div class="variablelist"><dl><dt><span class="term">
<code class="literal">host</code>
</span></dt><dd><p>Der Rechnername oder die IP-Adresse des LDAP- oder
Active-Directory-Servers. Diese Angabe ist zwingend
erforderlich.</p></dd><dt><span class="term">
<code class="literal">port</code>
</span></dt><dd><p>Die Portnummer des LDAP-Servers; meist 389.</p></dd><dt><span class="term">
<code class="literal">tls</code>
</span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen
Wert auf ‘<code class="literal">1</code>’ setzen, andernfalls auf
‘<code class="literal">0</code>’ belassen</p></dd><dt><span class="term">
<code class="literal">verify</code>
</span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht und der Parameter <em class="parameter"><code>tls</code></em> gesetzt ist, so gibt dieser
Parameter an, ob das Serverzertifikat auf Gültigkeit geprüft wird. Mögliche Werte sind <code class="literal">require</code> (Zertifikat
wird überprüft und muss gültig sei; dies ist der Standard) und <code class="literal">none</code> (Zertifikat wird nicht
überpfüft).</p></dd><dt><span class="term">
<code class="literal">attribute</code>
</span></dt><dd><p>Das LDAP-Attribut, in dem der Benutzername steht, den der
Benutzer eingegeben hat. Für Active-Directory-Server ist dies
meist ‘<code class="literal">sAMAccountName</code>’, für andere
LDAP-Server hingegen ‘<code class="literal">uid</code>’. Diese Angabe ist
zwingend erforderlich.</p></dd><dt><span class="term">
<code class="literal">base_dn</code>
</span></dt><dd><p>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll.
Diese Angabe ist zwingend erforderlich.</p></dd><dt><span class="term">
<code class="literal">filter</code>
</span></dt><dd><p>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort
<code class="literal">&lt;%login%&gt;</code>, so wird dieses durch den vom
Benutzer eingegebenen Benutzernamen ersetzt. Andernfalls wird
der LDAP-Baum nach einem Element durchsucht, bei dem das oben
angegebene Attribut mit dem Benutzernamen identisch ist.</p></dd><dt><span class="term">
<code class="literal">bind_dn</code> und
<code class="literal">bind_password</code>
</span></dt><dd><p>Wenn der LDAP-Server eine Anmeldung erfordert, bevor er
durchsucht werden kann (z.B. ist dies bei
Active-Directory-Servern der Fall), so kann diese hier angegeben
werden. Für Active-Directory-Server kann als
‘<code class="literal">bind_dn</code>’ entweder eine komplette LDAP-DN wie
z.B. ‘<code class="literal">cn=Martin
Mustermann,cn=Users,dc=firmendomain</code>’ auch nur der
volle Name des Benutzers eingegeben werden; in diesem Beispiel
also ‘<code class="literal">Martin Mustermann</code>’.</p></dd><dt><span class="term">
<code class="literal">timeout</code>
</span></dt><dd><p>Timeout beim Verbindungsversuch, bevor der Server als nicht erreichbar gilt; Standardwert: 10</p></dd></dl></div></div><div class="sect2" title="2.8.5. Name des Session-Cookies"><div class="titlepage"><div><div><h3 class="title"><a name="Name-des-Session-Cookies"></a>2.8.5. Name des Session-Cookies</h3></div></div></div><p>Sollen auf einem Server mehrere kivitendo-Installationen
aufgesetzt werden, so müssen die Namen der Session-Cookies für alle
Installationen unterschiedlich sein. Der Name des Cookies wird mit dem
Parameter <code class="varname">cookie_name</code> im Abschnitt
<code class="varname">[authentication]</code>gesetzt.</p><p>Diese Angabe ist optional, wenn nur eine Installation auf dem
Server existiert.</p></div><div class="sect2" title="2.8.6. Anlegen der Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Anlegen-der-Authentifizierungsdatenbank"></a>2.8.6. Anlegen der Authentifizierungsdatenbank</h3></div></div></div><p>Nachdem alle Einstellungen in
<code class="filename">config/kivitendo.conf</code> vorgenommen wurden, muss
kivitendo die Authentifizierungsdatenbank anlegen. Dieses geschieht
automatisch, wenn Sie sich im Administrationsmodul anmelden, das unter
der folgenden URL erreichbar sein sollte:</p><p>
<a class="ulink" href="http://localhost/kivitendo-erp/controller.pl?action=Admin/login" target="_top">http://localhost/kivitendo-erp/controller.pl?action=Admin/login</a>
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s07.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="ch02s09.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.7. Der Task-Server&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.9. Mandanten-, Benutzer- und Gruppenverwaltung</td></tr></table></div></body></html>
<title>2.8. 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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s07.html" title="2.7. Webserver-Konfiguration"><link rel="next" href="ch02s09.html" title="2.9. 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.8. Der Task-Server</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s07.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="ch02s09.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.8. Der Task-Server"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.task-server"></a>2.8. Der Task-Server</h2></div></div></div><p>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 u.a. für die Erzeugung der wiederkehrenden Rechnungen und weitere
essenzielle Aufgaben benutzt.</p><p>Der Task-Server muss einmalig global in der Konfigurationsdatei
konfiguriert werden. Danach wird er für jeden Mandanten, für den er
laufen soll, in der Adminsitrationsmaske eingeschaltet.</p><p>Beachten Sie, dass der Task-Server in den Boot-Vorgang Ihres
Servers integriert werden muss, damit er automatisch gestartet wird.
Dies kann kivitendo nicht für Sie erledigen.</p><p>Da der Task-Server als Perlscript läuft, wird Arbeitsspeicher, der
einmal benötigt wurde, nicht mehr an das Betriebssystem zurückgegeben,
solange der Task-Server läuft. Dies kann dazu führen, dass ein länger
laufender Task-Server mit der Zeit immer mehr Arbeitsspeicher für sich
beansprucht. Es ist deshalb sinnvoll, dass der Task-Server in
regelmässigen Abständen neu gestartet wird. Allerdings berücksichtigt der
Task-Server ein Memory-Limit, wenn dieses in der Konfigurationsdatei
angegeben ist. Bei Überschreiten dieses Limits beendet sich der
Task-Server. Sofern der Task-Server als systemd-Service mit dem
mitgelieferten Skript eingerichtet wurde, startet dieser danach
automatisch erneut.</p><div class="sect2" title="2.8.1. Verfügbare und notwendige Konfigurationsoptionen"><div class="titlepage"><div><div><h3 class="title"><a name="Konfiguration-des-Task-Servers"></a>2.8.1. Verfügbare und notwendige Konfigurationsoptionen</h3></div></div></div><p>Die Konfiguration erfolgt über den Abschnitt
<code class="literal">[task_server]</code> in der Datei
<code class="filename">config/kivitendo.conf</code>. Die dort verfügbaren
Optionen sind:</p><div class="variablelist"><dl><dt><span class="term">
<code class="varname">run_as</code>
</span></dt><dd><p>Wird der Server vom Systembenutzer <code class="literal">root</code>
gestartet, so wechselt er auf den mit <code class="literal">run_as</code>
angegebenen Systembenutzer. Der Systembenutzer muss dieselben
Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
(siehe see <a class="xref" href="ch02s04.html" title="2.4. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>). Daher
ist es erforderlich, hier denselben Systembenutzer einzutragen,
unter dem auch der Webserver läuft.</p></dd><dt><span class="term">
<code class="varname">debug</code>
</span></dt><dd><p>Schaltet Debug-Informationen an und aus.</p></dd></dl></div></div><div class="sect2" title="2.8.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.8.2. Konfiguration der Mandanten für den Task-Server</h3></div></div></div><p>Ist der Task-Server grundlegend konfiguriert, so muss
anschließend jeder Mandant, für den der Task-Server laufen soll,
einmalig konfiguriert werden. Dazu kann in der Maske zum Bearbeiten
von Mandanten im Administrationsbereich eine kivitendo-Benutzerkennung
ausgewählt werden, unter der der Task-Server seine Arbeit
verrichtet.</p><p>Ist in dieser Einstellung keine Benutzerkennung ausgewählt, so
wird der Task-Server für diesen Mandanten keine Aufgaben
ausführen.</p></div><div class="sect2" title="2.8.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.8.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
reguläres SystemV-kompatibles Boot-Script. Außerdem wechselt er beim
Starten automatisch in das kivitendo-Installationsverzeichnis.</p><p>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.</p><div class="sect3" title="2.8.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere openSUSE, ältere Fedora)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1470"></a>2.8.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere
openSUSE, ältere Fedora)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/system-v/kivitendo-task-server</code>
nach <code class="filename">/etc/init.d/kivitendo-task-server</code>. Passen
Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
<code class="literal">DAEMON=....</code>). Binden Sie das Script in den
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
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
werden:</p><pre class="programlisting">/etc/init.d/kivitendo-task-server start</pre></div><div class="sect3" title="2.8.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1499"></a>2.8.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/upstart/kivitendo-task-server.conf</code>
nach <code class="filename">/etc/init/kivitendo-task-server.conf</code>.
Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
<code class="literal">exec ....</code>).</p><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
werden:</p><pre class="programlisting">service kivitendo-task-server start</pre></div><div class="sect3" title="2.8.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="d0e1517"></a>2.8.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere
Fedora, neuere Ubuntu und neuere Debians)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/systemd/kivitendo-task-server.service</code>
nach <code class="filename">/etc/systemd/system/</code>. Passen Sie in der
kopierten Datei den Pfad zum Task-Server an (Zeilen
<code class="literal">ExecStart=....</code> und
<code class="literal">ExecStop=...</code>).</p><p>Machen Sie anschließend das Script systemd bekannt, und binden
Sie es in den Boot-Prozess ein. Dazu führen Sie die folgenden Befehl
aus:</p><pre class="programlisting">systemctl daemon-reload
systemctl enable kivitendo-task-server.service</pre><p>Wenn Sie den Task-Server jetzt sofort starten möchten, anstatt
den Server neu zu starten, so können Sie das mit dem folgenden
Befehl tun:</p><pre class="programlisting">systemctl start kivitendo-task-server.service</pre><p>Ein so eingerichteter Task-Server startet nach Beendigung
automatisch erneut. Das betrifft eine Beendigung über die Oberfläche,
eine Beendingung über die Prozesskontrolle und eine Beendigung bei
Überschreiten des Memory-Limits. Soll der Task-Server nicht erneut
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.8.4. Wie der Task-Server gestartet und beendet wird"><div class="titlepage"><div><div><h3 class="title"><a name="Prozesskontrolle"></a>2.8.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>
<code class="literal">Befehl</code> ist dabei eine der folgenden
Optionen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
<code class="literal">start</code> startet eine neue Instanz des
Task-Servers. Die Prozess-ID wird innerhalb des
<code class="filename">users</code>-Verzeichnisses abgelegt.</p></li><li class="listitem"><p>
<code class="literal">stop</code> beendet einen laufenden
Task-Server.</p></li><li class="listitem"><p>
<code class="literal">restart</code> beendet und startet ihn
neu.</p></li><li class="listitem"><p>
<code class="literal">status</code> berichtet, ob der Task-Server
läuft.</p></li></ul></div><p>Der Task-Server wechselt beim Starten automatisch in das
kivitendo-Installationsverzeichnis.</p><p>Dieselben Optionen können auch für die SystemV-basierenden
Runlevel-Scripte benutzt werden (siehe oben).</p><p>Wurde der Task-Server als systemd-Service eingerichtet (s.o.),
so startet dieser nach Beendigung automatisch erneut.</p></div><div class="sect2" title="2.8.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.8.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>
<code class="literal">Aktiv:</code> Hier ein 'Ja' auswählen</p></li><li class="listitem"><p>
<code class="literal">Ausführungsart:</code> 'wiederholte Ausführung' auswählen</p></li><li class="listitem"><p>
<code class="literal">Paketname:</code> 'SetNumberRange' auswählen</p></li><li class="listitem"><p>
<code class="literal">Ausführungszeitplan:</code> Hier entsprechend Werte wie in der crontab eingeben.</p><p>Syntax:</p><pre class="programlisting">* * * * *
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── Wochentag (0-7, Sonntag ist 0 oder 7)
│ │ │ └────── Monat (1-12)
│ │ └──────── Tag (1-31)
│ └────────── Stunde (0-23)
└──────────── Minute (0-59) </pre><p>Die Sterne können folgende Werte haben:</p><pre class="programlisting">
1 2 3 4 5
1 = Minute (0-59)
2 = Stunde (0-23)
3 = Tag (0-31)
4 = Monat (1-12)
5 = Wochentag (0-7, Sonntag ist 0 oder 7)
</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>
<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>
<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>
<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">
multiplier Nummernkreis 2020
10 -&gt; 20200
100 -&gt; 202000
1000 -&gt; 2020000
</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>
<code class="literal">Daten:</code>
</p><pre class="programlisting">multiplier: 100
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="ch02s07.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="ch02s09.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.7. 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.9. Benutzerauthentifizierung und Administratorpasswort</td></tr></table></div></body></html>
doc/html/ch02s09.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.9. Mandanten-, Benutzer- und Gruppenverwaltung</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s08.html" title="2.8. Benutzerauthentifizierung und Administratorpasswort"><link rel="next" href="ch02s10.html" title="2.10. Drucker- und Systemverwaltung"></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.9. Mandanten-, Benutzer- und Gruppenverwaltung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s08.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="ch02s10.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.9. Mandanten-, Benutzer- und Gruppenverwaltung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzer--und-Gruppenverwaltung"></a>2.9. Mandanten-, Benutzer- und Gruppenverwaltung</h2></div></div></div><p>Nach der Installation müssen Mandanten, Benutzer, Gruppen und
Datenbanken angelegt werden. Dieses geschieht im Administrationsmenü,
das Sie unter folgender URL finden:</p><p>
<a class="ulink" href="http://localhost/kivitendo-erp/controller.pl?action=Admin/login" target="_top">http://localhost/kivitendo-erp/controller.pl?action=Admin/login</a>
</p><p>Verwenden Sie zur Anmeldung das Passwort, das Sie in der Datei
<code class="filename">config/kivitendo.conf</code> eingetragen haben.</p><div class="sect2" title="2.9.1. Zusammenhänge"><div class="titlepage"><div><div><h3 class="title"><a name="Zusammenh%C3%A4nge"></a>2.9.1. Zusammenhänge</h3></div></div></div><p>kivitendo verwaltet zwei Sets von Daten, die je nach Einrichtung
in einer oder zwei Datenbanken gespeichert werden.</p><p>Das erste Set besteht aus Anmeldeinformationen: welche Benutzer
und Mandanten gibt es, welche Gruppen, welche BenutzerIn hat Zugriff
auf welche Mandanten, und welche Gruppe verfügt über welche Rechte.
Diese Informationen werden in der Authentifizierungsdatenbank
gespeichert. Dies ist diejenige Datenbank, deren Verbindungsparameter
in der Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
gespeichert werden.</p><p>Das zweite Set besteht aus den eigentlichen Verkehrsdaten eines
Mandanten, wie beispielsweise die Stammdaten (Kunden, Lieferanten,
Waren) und Belege (Angebote, Lieferscheine, Rechnungen). Diese werden
in einer Mandantendatenbank gespeichert. Die Verbindungsinformationen
einer solchen Mandantendatenbank werden im Administrationsbereich
konfiguriert, indem man einen Mandanten anlegt und dort die Parameter
einträgt. Dabei hat jeder Mandant eine eigene Datenbank.</p><p>Aufgrund des Datenbankdesigns ist es für einfache Fälle möglich,
die Authentifizierungsdatenbank und eine der Mandantendatenbanken in
ein und derselben Datenbank zu speichern. Arbeitet man hingegen mit
mehr als einem Mandanten, wird empfohlen, für die
Authentifizierungsdatenbank eine eigene Datenbank zu verwenden, die
nicht gleichzeitig für einen Mandanten verwendet wird.</p></div><div class="sect2" title="2.9.2. Mandanten, Benutzer und Gruppen"><div class="titlepage"><div><div><h3 class="title"><a name="Mandanten-Benutzer-Gruppen"></a>2.9.2. Mandanten, Benutzer und Gruppen</h3></div></div></div><p>kivitendos Administration kennt Mandanten, Benutzer und Gruppen,
die sich frei zueinander zuordnen lassen.</p><p>kivitendo kann mehrere Mandaten aus einer Installation heraus
verwalten. Welcher Mandant benutzt wird, kann direkt beim Login
ausgewählt werden. Für jeden Mandanten wird ein eindeutiger Name
vergeben, der beim Login angezeigt wird. Weiterhin benötigt der
Mandant Datenbankverbindungsparameter für seine Mandantendatenbank.
Diese sollte über die <a class="link" href="ch02s09.html#Datenbanken-anlegen" title="2.9.3. Datenbanken anlegen">Datenbankverwaltung</a>
geschehen.</p><p>Ein Benutzer ist eine Person, die Zugriff auf kivitendo erhalten
soll. Sie erhält einen Loginnamen sowie ein Passwort. Weiterhin legt
der Administrator fest, an welchen Mandanten sich ein Benutzer
anmelden kann, was beim Login verifiziert wird.</p><p>Gruppen dienen dazu, Benutzern innerhalb eines Mandanten Zugriff
auf bestimmte Funktionen zu geben. Einer Gruppe werden dafür vom
Administrator gewisse Rechte zugeordnet. Weiterhin legt der
Administrator fest, für welche Mandanten eine Gruppe gilt, und welche
Benutzer Mitglieder in dieser Gruppe sind. Meldet sich ein Benutzer
dann an einem Mandanten an, so erhält er alle Rechte von allen
denjenigen Gruppen, die zum Einen dem Mandanten zugeordnet sind und in
denen der Benutzer zum Anderen Mitglied ist,</p><p>Die Reihenfolge, in der Datenbanken, Mandanten, Gruppen und
Benutzer angelegt werden, kann im Prinzip beliebig gewählt werden. Die
folgende Reihenfolge beinhaltet die wenigsten Arbeitsschritte:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Datenbank anlegen</p></li><li class="listitem"><p>Gruppen anlegen</p></li><li class="listitem"><p>Benutzer anlegen und Gruppen als Mitglied zuordnen</p></li><li class="listitem"><p>Mandanten anlegen und Gruppen sowie Benutzer zuweisen</p></li></ol></div></div><div class="sect2" title="2.9.3. Datenbanken anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbanken-anlegen"></a>2.9.3. Datenbanken anlegen</h3></div></div></div><p>Zuerst muss eine Datenbank angelegt werden. Verwenden Sie für
den Datenbankzugriff den vorhin angelegten Benutzer (in unseren
Beispielen ist dies ‘<code class="literal">kivitendo</code>’).</p></div><div class="sect2" title="2.9.4. Gruppen anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Gruppen-anlegen"></a>2.9.4. Gruppen anlegen</h3></div></div></div><p>Eine Gruppe wird in der Gruppenverwaltung angelegt. Ihr muss ein
Name gegeben werden, eine Beschreibung ist hingegen optional. Nach dem
Anlegen können Sie die verschiedenen Bereiche wählen, auf die
Mitglieder dieser Gruppe Zugriff haben sollen.</p><p>Benutzergruppen werden zwar in der Authentifizierungsdatenbank
gespeichert, gelten aber nicht automatisch für alle Mandanten. Der
Administrator legt vielmehr fest, für welche Mandanten eine Gruppe
gültig ist. Dies kann entweder beim Bearbeiten der Gruppe geschehen
("diese Gruppe ist gültig für Mandanten X, Y und Z"), oder aber wenn
man einen Mandanten bearbeitet ("für diesen Mandanten sind die Gruppen
A, B und C gültig").</p><p>Wurden bereits Benutzer angelegt, so können hier die Mitglieder
dieser Gruppe festgelegt werden ("in dieser Gruppe sind die Benutzer
X, Y und Z Mitglieder"). Dies kann auch nachträglich beim Bearbeiten
eines Benutzers geschehen ("dieser Benutzer ist Mitglied in den
Gruppen A, B und C").</p></div><div class="sect2" title="2.9.5. Benutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Benutzer-anlegen"></a>2.9.5. Benutzer anlegen</h3></div></div></div><p>Beim Anlegen von Benutzern werden für viele Parameter
Standardeinstellungen vorgenommen, die den Gepflogenheiten des
deutschen Raumes entsprechen.</p><p>Zwingend anzugeben ist der Loginname. Wenn die
Passwortauthentifizierung über die Datenbank eingestellt ist, so kann
hier auch das Benutzerpasswort gesetzt bzw. geändert werden. Ist
hingegen die LDAP-Authentifizierung aktiv, so ist das Passwort-Feld
deaktiviert.</p><p>Hat man bereits Mandanten und Gruppen angelegt, so kann hier
auch konfiguriert werden, auf welche Mandanten der Benutzer Zugriff
hat bzw. in welchen Gruppen er Mitglied ist. Beide Zuweisungen können
sowohl beim Benutzer vorgenommen werden ("dieser Benutzer hat Zugriff
auf Mandanten X, Y, Z" bzw. "dieser Benutzer ist Mitglied in Gruppen
X, Y und Z") als auch beim Mandanten ("auf diesen Mandanten haben
Benutzer A, B und C Zugriff") bzw. bei der Gruppe ("in dieser Gruppe
sind Benutzer A, B und C Mitglieder").</p></div><div class="sect2" title="2.9.6. Mandanten anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Mandanten-anlegen"></a>2.9.6. Mandanten anlegen</h3></div></div></div><p>Ein Mandant besteht aus Administrationssicht primär aus einem
eindeutigen Namen. Weiterhin wird hier hinterlegt, welche Datenbank
als Mandantendatenbank benutzt wird. Hier müssen die Zugriffsdaten
einer der eben angelegten Datenbanken eingetragen werden.</p><p>Hat man bereits Benutzer und Gruppen angelegt, so kann hier auch
konfiguriert werden, welche Benutzer Zugriff auf den Mandanten haben
bzw. welche Gruppen für den Mandanten gültig sind. Beide Zuweisungen
können sowohl beim Mandanten vorgenommen werden ("auf diesen Mandanten
haben Benutzer X, Y und Z Zugriff" bzw. "für diesen Mandanten sind die
Gruppen X, Y und Z gültig") als auch beim Benutzer ("dieser Benutzer
hat Zugriff auf Mandanten A, B und C") bzw. bei der Gruppe ("diese
Gruppe ist für Mandanten A, B und C gültig").</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s08.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="ch02s10.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.8. Benutzerauthentifizierung und Administratorpasswort&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.10. Drucker- und Systemverwaltung</td></tr></table></div></body></html>
<title>2.9. Benutzerauthentifizierung und Administratorpasswort</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s08.html" title="2.8. Der Task-Server"><link rel="next" href="ch02s10.html" title="2.10. Mandanten-, Benutzer- und Gruppenverwaltung"></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.9. Benutzerauthentifizierung und Administratorpasswort</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s08.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="ch02s10.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.9. Benutzerauthentifizierung und Administratorpasswort"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>2.9. Benutzerauthentifizierung und Administratorpasswort</h2></div></div></div><p>Informationen über die Einrichtung der Benutzerauthentifizierung,
über die Verwaltung von Gruppen und weitere Einstellungen</p><div class="sect2" title="2.9.1. Grundlagen zur Benutzerauthentifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="Grundlagen-zur-Benutzerauthentifizierung"></a>2.9.1. Grundlagen zur Benutzerauthentifizierung</h3></div></div></div><p>kivitendo verwaltet die Benutzerinformationen in einer
Datenbank, die im folgenden “Authentifizierungsdatenbank” genannt
wird. Für jeden Benutzer kann dort eine eigene Datenbank für die
eigentlichen Finanzdaten hinterlegt sein. Diese beiden Datenbanken
können, müssen aber nicht unterschiedlich sein.</p><p>Im einfachsten Fall gibt es für kivitendo nur eine einzige
Datenbank, in der sowohl die Benutzerinformationen als auch die Daten
abgelegt werden.</p><p>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter gegen die Authentifizierungsdatenbank oder gegen einen oder
mehrere LDAP-Server überprüft werden.</p><p>Welche Art der Passwortüberprüfung kivitendo benutzt und wie
kivitendo die Authentifizierungsdatenbank erreichen kann, wird in der
Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
festgelegt. Diese muss bei der Installation und bei einem Upgrade von
einer Version vor v2.6.0 angelegt werden. Eine
Beispielkonfigurationsdatei
<code class="filename">config/kivitendo.conf.default</code> existiert, die als
Vorlage benutzt werden kann.</p></div><div class="sect2" title="2.9.2. Administratorpasswort"><div class="titlepage"><div><div><h3 class="title"><a name="Administratorpasswort"></a>2.9.2. Administratorpasswort</h3></div></div></div><p>Das Passwort, das zum Zugriff auf das Administrationsinterface
von kivitendo benutzt wird, wird ebenfalls in dieser Datei
gespeichert. Es kann auch nur dort und nicht mehr im
Administrationsinterface selber geändert werden. Der Parameter dazu
heißt <code class="varname">admin_password</code> im Abschnitt
<code class="varname">[authentication]</code>.</p></div><div class="sect2" title="2.9.3. Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Authentifizierungsdatenbank"></a>2.9.3. Authentifizierungsdatenbank</h3></div></div></div><p>Die Verbindung zur Authentifizierungsdatenbank wird mit den
Parametern in <code class="varname">[authentication/database]</code>
konfiguriert. Hier sind die folgenden Parameter anzugeben:</p><div class="variablelist"><dl><dt><span class="term">
<code class="literal">host</code>
</span></dt><dd><p>Der Rechnername oder die IP-Adresse des
Datenbankservers</p></dd><dt><span class="term">
<code class="literal">port</code>
</span></dt><dd><p>Die Portnummer des Datenbankservers, meist 5432</p></dd><dt><span class="term">
<code class="literal">db</code>
</span></dt><dd><p>Der Name der Authentifizierungsdatenbank</p></dd><dt><span class="term">
<code class="literal">user</code>
</span></dt><dd><p>Der Benutzername, mit dem sich kivitendo beim
Datenbankserver anmeldet (z.B.
"<code class="literal">postgres</code>")</p></dd><dt><span class="term">
<code class="literal">password</code>
</span></dt><dd><p>Das Passwort für den Datenbankbenutzer</p></dd></dl></div><p>Die Datenbank muss noch nicht existieren. kivitendo kann sie
automatisch anlegen (mehr dazu siehe unten).</p></div><div class="sect2" title="2.9.4. Passwortüberprüfung"><div class="titlepage"><div><div><h3 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung"></a>2.9.4. Passwortüberprüfung</h3></div></div></div><p>kivitendo unterstützt Passwortüberprüfung auf zwei Arten: gegen
die Authentifizierungsdatenbank und gegen externe LDAP- oder
Active-Directory-Server. Welche davon benutzt wird, regelt der
Parameter <code class="varname">module</code> im Abschnitt
<code class="varname">[authentication]</code>.</p><p>Dieser Parameter listet die zu verwendenden Authentifizierungsmodule auf. Es muss mindestens ein Modul angegeben werden, es
können aber auch mehrere angegeben werden. Weiterhin ist es möglich, das LDAP-Modul mehrfach zu verwenden und für jede Verwendung
eine unterschiedliche Konfiguration zu nutzen, z.B. um einen Fallback-Server anzugeben, der benutzt wird, sofern der Hauptserver
nicht erreichbar ist.</p><p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank geprüft werden, so muss der Parameter
<code class="varname">module</code> das Modul <code class="literal">DB</code> enthalten. Sofern das Modul in der Liste enthalten ist, egal an welcher
Position, können sowohl der Administrator als auch die Benutzer selber ihre Passwörter in kivitendo ändern.</p><p>Wenn Passwörter gegen einen oder mehrere externe LDAP- oder Active-Directory-Server geprüft werden, so muss der Parameter
<code class="varname">module</code> den Wert <code class="literal">LDAP</code> enthalten. In diesem Fall müssen zusätzliche Informationen über den
LDAP-Server im Abschnitt <code class="literal">[authentication/ldap]</code> angegeben werden. Das Modul kann auch mehrfach angegeben werden,
wobei jedes Modul eine eigene Konfiguration bekommen sollte. Der Name der Konfiguration wird dabei mit einem Doppelpunkt getrennt an
den Modulnamen angehängt (<code class="literal">LDAP:Name-der-Konfiguration</code>). Der entsprechende Abschnitt in der Konfigurationsdatei
lautet dann <code class="literal">[authentication/Name-der-Konfiguration]</code>.</p><p>Die verfügbaren Parameter für die LDAP-Konfiguration lauten:</p><div class="variablelist"><dl><dt><span class="term">
<code class="literal">host</code>
</span></dt><dd><p>Der Rechnername oder die IP-Adresse des LDAP- oder
Active-Directory-Servers. Diese Angabe ist zwingend
erforderlich.</p></dd><dt><span class="term">
<code class="literal">port</code>
</span></dt><dd><p>Die Portnummer des LDAP-Servers; meist 389.</p></dd><dt><span class="term">
<code class="literal">tls</code>
</span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen
Wert auf ‘<code class="literal">1</code>’ setzen, andernfalls auf
‘<code class="literal">0</code>’ belassen</p></dd><dt><span class="term">
<code class="literal">verify</code>
</span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht und der Parameter <em class="parameter"><code>tls</code></em> gesetzt ist, so gibt dieser
Parameter an, ob das Serverzertifikat auf Gültigkeit geprüft wird. Mögliche Werte sind <code class="literal">require</code> (Zertifikat
wird überprüft und muss gültig sei; dies ist der Standard) und <code class="literal">none</code> (Zertifikat wird nicht
überpfüft).</p></dd><dt><span class="term">
<code class="literal">attribute</code>
</span></dt><dd><p>Das LDAP-Attribut, in dem der Benutzername steht, den der
Benutzer eingegeben hat. Für Active-Directory-Server ist dies
meist ‘<code class="literal">sAMAccountName</code>’, für andere
LDAP-Server hingegen ‘<code class="literal">uid</code>’. Diese Angabe ist
zwingend erforderlich.</p></dd><dt><span class="term">
<code class="literal">base_dn</code>
</span></dt><dd><p>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll.
Diese Angabe ist zwingend erforderlich.</p></dd><dt><span class="term">
<code class="literal">filter</code>
</span></dt><dd><p>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort
<code class="literal">&lt;%login%&gt;</code>, so wird dieses durch den vom
Benutzer eingegebenen Benutzernamen ersetzt. Andernfalls wird
der LDAP-Baum nach einem Element durchsucht, bei dem das oben
angegebene Attribut mit dem Benutzernamen identisch ist.</p></dd><dt><span class="term">
<code class="literal">bind_dn</code> und
<code class="literal">bind_password</code>
</span></dt><dd><p>Wenn der LDAP-Server eine Anmeldung erfordert, bevor er
durchsucht werden kann (z.B. ist dies bei
Active-Directory-Servern der Fall), so kann diese hier angegeben
werden. Für Active-Directory-Server kann als
‘<code class="literal">bind_dn</code>’ entweder eine komplette LDAP-DN wie
z.B. ‘<code class="literal">cn=Martin
Mustermann,cn=Users,dc=firmendomain</code>’ auch nur der
volle Name des Benutzers eingegeben werden; in diesem Beispiel
also ‘<code class="literal">Martin Mustermann</code>’.</p></dd><dt><span class="term">
<code class="literal">timeout</code>
</span></dt><dd><p>Timeout beim Verbindungsversuch, bevor der Server als nicht erreichbar gilt; Standardwert: 10</p></dd></dl></div></div><div class="sect2" title="2.9.5. Name des Session-Cookies"><div class="titlepage"><div><div><h3 class="title"><a name="Name-des-Session-Cookies"></a>2.9.5. Name des Session-Cookies</h3></div></div></div><p>Sollen auf einem Server mehrere kivitendo-Installationen
aufgesetzt werden, so müssen die Namen der Session-Cookies für alle
Installationen unterschiedlich sein. Der Name des Cookies wird mit dem
Parameter <code class="varname">cookie_name</code> im Abschnitt
<code class="varname">[authentication]</code>gesetzt.</p><p>Diese Angabe ist optional, wenn nur eine Installation auf dem
Server existiert.</p></div><div class="sect2" title="2.9.6. Anlegen der Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Anlegen-der-Authentifizierungsdatenbank"></a>2.9.6. Anlegen der Authentifizierungsdatenbank</h3></div></div></div><p>Nachdem alle Einstellungen in
<code class="filename">config/kivitendo.conf</code> vorgenommen wurden, muss
kivitendo die Authentifizierungsdatenbank anlegen. Dieses geschieht
automatisch, wenn Sie sich im Administrationsmodul anmelden, das unter
der folgenden URL erreichbar sein sollte:</p><p>
<a class="ulink" href="http://localhost/kivitendo-erp/controller.pl?action=Admin/login" target="_top">http://localhost/kivitendo-erp/controller.pl?action=Admin/login</a>
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s08.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="ch02s10.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.8. Der Task-Server&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.10. Mandanten-, Benutzer- und Gruppenverwaltung</td></tr></table></div></body></html>
doc/html/ch02s10.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.10. Drucker- und Systemverwaltung</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s09.html" title="2.9. Mandanten-, Benutzer- und Gruppenverwaltung"><link rel="next" href="ch02s11.html" title="2.11. E-Mail-Versand aus kivitendo heraus"></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.10. Drucker- und Systemverwaltung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s09.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="ch02s11.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.10. Drucker- und Systemverwaltung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Drucker--Systemverwaltung"></a>2.10. Drucker- und Systemverwaltung</h2></div></div></div><p>Im Administrationsmenü gibt es ferner noch die beiden Menüpunkte
Druckeradministration und System.</p><div class="sect2" title="2.10.1. Druckeradministration"><div class="titlepage"><div><div><h3 class="title"><a name="Druckeradministration"></a>2.10.1. Druckeradministration</h3></div></div></div><p>Unter dem Menüpunkt Druckeradministration lassen sich beliebig
viele "Druckbefehle" im System verwalten. Diese Befehle werden
mandantenweise zugeordnet. Unter Druckerbeschreibung wird der Namen
des Druckbefehls festgelegt, der dann in der Druckerauswahl des Belegs
angezeigt wird.</p><p>Unter Druckbefehl definiert man den eigentlichen Druckbefehl,
der direkt auf dem Webserver ausgeführt wird, bspw. 'lpr -P
meinDrucker' oder ein kompletter Pfad zu einem Skript
(/usr/local/src/kivitendo/scripts/pdf_druck_in_verzeichnis.sh). Wird
ferner noch ein optionales Vorlagenkürzel verwendet, wird dieses
Kürzel bei der Auswahl der Druckvorlagendatei mit einem Unterstrich
ergänzt, ist bspw. das Kürzel 'epson_drucker' definiert, so wird beim
Ausdruck eines Angebots folgende Vorlage geparst:
sales_quotation_epson_drucker.tex.</p></div><div class="sect2" title="2.10.2. System sperren / entsperren"><div class="titlepage"><div><div><h3 class="title"><a name="System"></a>2.10.2. System sperren / entsperren</h3></div></div></div><p>Unter dem Menüpunkt System gibt es den Eintrag 'Installation
sperren/entsperren'. Setzt man diese Sperre so ist der Zugang zu der
gesamten kivitendo Installation gesperrt.</p><p>Falls die Sperre gesetzt ist, erscheint anstelle der
Anmeldemaske die Information: 'kivitendo ist momentan zwecks
Wartungsarbeiten nicht zugänglich.'.</p><p>Wichtig zu erwähnen ist hierbei noch, dass sich kivitendo
automatisch 'sperrt', falls es bei einem Versionsupdate zu einem
Datenbankfehler kam. Somit kann hier nicht aus Versehen mit einem
inkonsistenten Datenbestand weitergearbeitet werden.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s09.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="ch02s11.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.9. Mandanten-, Benutzer- und Gruppenverwaltung&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.11. E-Mail-Versand aus kivitendo heraus</td></tr></table></div></body></html>
<title>2.10. Mandanten-, Benutzer- und Gruppenverwaltung</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s09.html" title="2.9. Benutzerauthentifizierung und Administratorpasswort"><link rel="next" href="ch02s11.html" title="2.11. Drucker- und Systemverwaltung"></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.10. Mandanten-, Benutzer- und Gruppenverwaltung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s09.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="ch02s11.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.10. Mandanten-, Benutzer- und Gruppenverwaltung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzer--und-Gruppenverwaltung"></a>2.10. Mandanten-, Benutzer- und Gruppenverwaltung</h2></div></div></div><p>Nach der Installation müssen Mandanten, Benutzer, Gruppen und
Datenbanken angelegt werden. Dieses geschieht im Administrationsmenü,
das Sie unter folgender URL finden:</p><p>
<a class="ulink" href="http://localhost/kivitendo-erp/controller.pl?action=Admin/login" target="_top">http://localhost/kivitendo-erp/controller.pl?action=Admin/login</a>
</p><p>Verwenden Sie zur Anmeldung das Passwort, das Sie in der Datei
<code class="filename">config/kivitendo.conf</code> eingetragen haben.</p><div class="sect2" title="2.10.1. Zusammenhänge"><div class="titlepage"><div><div><h3 class="title"><a name="Zusammenh%C3%A4nge"></a>2.10.1. Zusammenhänge</h3></div></div></div><p>kivitendo verwaltet zwei Sets von Daten, die je nach Einrichtung
in einer oder zwei Datenbanken gespeichert werden.</p><p>Das erste Set besteht aus Anmeldeinformationen: welche Benutzer
und Mandanten gibt es, welche Gruppen, welche BenutzerIn hat Zugriff
auf welche Mandanten, und welche Gruppe verfügt über welche Rechte.
Diese Informationen werden in der Authentifizierungsdatenbank
gespeichert. Dies ist diejenige Datenbank, deren Verbindungsparameter
in der Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
gespeichert werden.</p><p>Das zweite Set besteht aus den eigentlichen Verkehrsdaten eines
Mandanten, wie beispielsweise die Stammdaten (Kunden, Lieferanten,
Waren) und Belege (Angebote, Lieferscheine, Rechnungen). Diese werden
in einer Mandantendatenbank gespeichert. Die Verbindungsinformationen
einer solchen Mandantendatenbank werden im Administrationsbereich
konfiguriert, indem man einen Mandanten anlegt und dort die Parameter
einträgt. Dabei hat jeder Mandant eine eigene Datenbank.</p><p>Aufgrund des Datenbankdesigns ist es für einfache Fälle möglich,
die Authentifizierungsdatenbank und eine der Mandantendatenbanken in
ein und derselben Datenbank zu speichern. Arbeitet man hingegen mit
mehr als einem Mandanten, wird empfohlen, für die
Authentifizierungsdatenbank eine eigene Datenbank zu verwenden, die
nicht gleichzeitig für einen Mandanten verwendet wird.</p></div><div class="sect2" title="2.10.2. Mandanten, Benutzer und Gruppen"><div class="titlepage"><div><div><h3 class="title"><a name="Mandanten-Benutzer-Gruppen"></a>2.10.2. Mandanten, Benutzer und Gruppen</h3></div></div></div><p>kivitendos Administration kennt Mandanten, Benutzer und Gruppen,
die sich frei zueinander zuordnen lassen.</p><p>kivitendo kann mehrere Mandaten aus einer Installation heraus
verwalten. Welcher Mandant benutzt wird, kann direkt beim Login
ausgewählt werden. Für jeden Mandanten wird ein eindeutiger Name
vergeben, der beim Login angezeigt wird. Weiterhin benötigt der
... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.

Auch abrufbar als: Unified diff