2 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3 <title>2.6. Webserver-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.4.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> </td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right"> <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="d0e783"></a>2.6.1. Grundkonfiguration mittels CGI</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Für einen deutlichen Performanceschub sorgt die Ausführung
4 mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
5 <a class="xref" href="ch02s06.html#Apache-Konfiguration.FCGI" title="2.6.2. Konfiguration für FastCGI/FCGI">Konfiguration für FastCGI/FCGI</a> beschrieben.</p></td></tr></table></div><p>Der Zugriff auf das Programmverzeichnis muss in der Apache
6 Webserverkonfigurationsdatei <code class="literal">httpd.conf</code> eingestellt
7 werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
8 anderen Datei hinzu, die beim Starten des Webservers eingelesen
9 wird:</p><pre class="programlisting">AliasMatch ^/kivitendo-erp/[^/]+\.pl /var/www/kivitendo-erp/dispatcher.pl
10 Alias /kivitendo-erp/ /var/www/kivitendo-erp/
12 <Directory /var/www/kivitendo-erp>
13 AddHandler cgi-script .pl
14 Options ExecCGI Includes FollowSymlinks
17 <Directory /var/www/kivitendo-erp/users>
20 </Directory></pre><p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
21 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
22 Plus ‘<code class="literal">+</code>’ gesetzt werden.</p><p>Bei einigen Distribution (Ubuntu ab 14.04, Debian ab 8.2) muss noch explizit
23 das cgi-Modul mittels </p><pre class="programlisting">a2enmod cgi</pre><p> aktiviert
24 werden.</p></td></tr></table></div><p>Auf einigen Webservern werden manchmal die Grafiken und
25 Style-Sheets nicht ausgeliefert. In solchen Fällen hat es oft
26 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>
28 [<span class="citation"> FastCGI ist ein Standard für die Einbindung
29 externer Software zur Generierung dynamischer Webseiten in einem
30 Webserver. FastCGI ist vergleichbar zum Common Gateway Interface
31 (CGI), wurde jedoch entwickelt, um dessen Performance-Probleme zu
33 </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
34 kompiliert. Stattdessen werden die Quelldateien bei jedem Start
35 übersetzt, was bei kurzen Laufzeiten einen Großteil der Laufzeit
36 ausmacht. Während SQL Ledger einen Großteil der Funktionalität in
37 einzelne Module kapselt, um immer nur einen kleinen Teil laden zu
38 müssen, ist die Funktionalität von kivitendo soweit gewachsen, dass
39 immer mehr Module auf den Rest des Programms zugreifen. Zusätzlich
40 benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
41 entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies
42 führt dazu dass ein kivitendo Aufruf der Kernmasken mittlerweile
43 deutlich länger dauert als früher, und dass davon 90% für das Laden
44 der Module verwendet wird.</p><p>Mit FastCGI werden nun die Module einmal geladen, und danach
45 wird nur die eigentliche Programmlogik ausgeführt.</p></div><div class="sect3" title="2.6.2.3. Getestete Kombinationen aus Webservern und Plugin"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WebserverUndPlugin"></a>2.6.2.3. Getestete Kombinationen aus Webservern und Plugin</h4></div></div></div><p>Folgende Kombinationen sind getestet:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Apache 2.2.11 (Ubuntu) und mod_fcgid.</p></li><li class="listitem"><p>Apache 2.2.11 / 2.2.22 (Ubuntu) und mod_fastcgi.</p></li><li class="listitem"><p>Apache 2.4.7 (Ubuntu 14.04.2 LTS) und mod_fcgid.</p></li></ul></div><p>Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer
46 Zeit nicht mehr weiter entwickelt wird. Im Folgenden wird auf
47 mod_fastcgi nicht mehr explizit eingegangen.</p><p>Als Perl Backend wird das Modul <code class="filename">FCGI.pm</code>
48 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
49 bestimmte Eingaben von kivitendo. Falls es Probleme mit Umlauten in Ihrer Installation gibt, muss zwingend Version 0.68 oder
50 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
51 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
52 laufen zu lassen, empfiehlt es sich die Installation ersteinmal
53 unter CGI aufzusetzen. FCGI macht es nicht einfach Fehler zu
54 debuggen die beim ersten aufsetzen auftreten können. Sollte die
55 Installation schon funktionieren, lesen Sie weiter.</p><p>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
56 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
57 erfolgt durch Anpassung der vorhandenen <code class="function">Alias</code>-
58 und <code class="function">Directory</code>-Direktiven. Dabei wird zwischen
59 dem Installationspfad von kivitendo im Dateisystem
60 ("<code class="filename">/path/to/kivitendo-erp</code>") und der URL
61 unterschieden, unter der kivitendo im Webbrowser erreichbar ist
62 ("<code class="filename">/url/for/kivitendo-erp</code>").</p><p>Folgender Konfigurationsschnipsel funktioniert mit
63 mod_fastcgi:</p><pre class="programlisting">AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi
64 Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/
66 <Directory /path/to/kivitendo-erp>
68 Options ExecCGI Includes FollowSymlinks
72 <DirectoryMatch /path/to/kivitendo-erp/users>
74 </DirectoryMatch></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">
76 Allow from All </pre></td></tr></table></div><p>Seit mod_fcgid-Version 2.3.6 gelten sehr kleine Grenzen für
77 die maximale Größe eines Requests. Diese sollte wie folgt
78 hochgesetzt werden:</p><pre class="programlisting">FcgidMaxRequestLen 10485760</pre><p>Das Ganze sollte dann so aussehen:</p><pre class="programlisting">AddHandler fcgid-script .fpl
79 AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
80 Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/
81 FcgidMaxRequestLen 10485760
83 <Directory /path/to/kivitendo-erp>
85 Options ExecCGI Includes FollowSymlinks
90 <DirectoryMatch /path/to/kivitendo-erp/users>
93 </DirectoryMatch></pre><p>Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle
94 Zugriffe auf die einzelnen Scripte werden auf diesen umgeleitet.
95 Dadurch, dass zur Laufzeit öfter mal Scripte neu geladen werden,
96 gibt es hier kleine Performance-Einbußen.</p><p>Es ist möglich, die gleiche kivitendo Version parallel unter
97 CGI und FastCGI zu betreiben. Dafür bleiben die Directorydirektiven
98 wie oben beschrieben, die URLs werden aber umgeleitet:</p><pre class="programlisting"># Zugriff über CGI
99 Alias /url/for/kivitendo-erp /path/to/kivitendo-erp
101 # Zugriff mit mod_fcgid:
102 AliasMatch ^/url/for/kivitendo-erp-fcgid/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
103 Alias /url/for/kivitendo-erp-fcgid/ /path/to/kivitendo-erp/</pre><p>Dann ist unter <code class="filename">/url/for/kivitendo-erp/</code>
104 die normale Version erreichbar, und unter
105 <code class="constant">/url/for/kivitendo-erp-fcgid/</code> die
106 FastCGI-Version.</p></div></div><div class="sect2" title="2.6.3. Weitergehende Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e928"></a>2.6.3. Weitergehende Konfiguration</h3></div></div></div><p>Für einen deutlichen Sicherheitsmehrwert sorgt die Ausführung von kivitendo
107 nur über https-verschlüsselten Verbindungen, sowie weiteren Zusatzmassnahmen,
108 wie beispielsweise Basic Authenticate.
109 Die Konfigurationsmöglichkeiten sprengen allerdings den Rahmen dieser Anleitung, hier ein
110 Hinweis auf einen entsprechenden <a class="ulink" href="http://redmine.kivitendo-premium.de/boards/1/topics/142" target="_top">Foreneintrag (Stand Sept. 2015)</a>
111 </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> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s07.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.5. Anpassung der PostgreSQL-Konfiguration </td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top"> 2.7. Der Task-Server</td></tr></table></div></body></html>