X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=doc%2FINSTALL.fcgi;h=4dbe994cc0893c58b6123c42deb8732d1c3919d0;hb=db4d80803649329a1a12cbbd7cfefa72aa75d141;hp=06ed3a95f0206837592955de1c96c490a70a2ec3;hpb=e1d7dc4690ca23990c97c17909b07dfc0a6ab9bf;p=kivitendo-erp.git diff --git a/doc/INSTALL.fcgi b/doc/INSTALL.fcgi index 06ed3a95f..4dbe994cc 100644 --- a/doc/INSTALL.fcgi +++ b/doc/INSTALL.fcgi @@ -5,13 +5,13 @@ Diese Datei ist in Plain Old Documentation geschrieben. Mit ist sie deutlich leichter zu lesen. -=head1 FastCGI für Lx-Office +=head1 FastCGI für Lx-Office =head2 Was ist FastCGI? Direkt aus L kopiert: - FastCGI ist ein Standard für die Einbindung externer Software zur Generierung + 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. @@ -20,18 +20,18 @@ Direkt aus L kopiert: =head2 Warum FastCGI? Perl Programme (wie Lx-Office 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 Lx-Office soweit +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 Lx-Office 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 Lx-Office Aufruf der Kernmasken mittlerweile deutlich länger dauert als -früher, und dass davon 90% für das Laden der Module verwendet wird. +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 Lx-Office Aufruf der Kernmasken mittlerweile deutlich länger dauert als +früher, und dass davon 90% für das Laden der Module verwendet wird. Mit FastCGI werden nun die Module einmal geladen, und danach wird nur die -eigentliche Programmlogik ausgeführt. +eigentliche Programmlogik ausgeführt. =head2 Kombinationen aus Webservern und Plugin. @@ -41,13 +41,21 @@ Folgende Kombinationen sind getestet: * Apache 2.2.11 (Ubuntu) und mod_fcgid: Als Perl Backend wird das Modul FCGI.pm verwendet. Vorsicht: FCGI 0.69 und -höher ist extrem strict in der Behandlung von Unicode, und verweigert bestimmte +höher ist extrem strict in der Behandlung von Unicode, und verweigert bestimmte Eingaben von Lx-Office. Solange diese Probleme nicht behoben sind, muss auf die -Vorgängerversion FCGI 0.68 ausgewichen werden. +Vorgängerversion FCGI 0.68 ausgewichen werden. +Mit cpan lässt sie sich wie folgt installieren: + + force install M/MS/MSTROUT/FCGI-0.68.tar.gz =head2 Konfiguration des Webservers. +Bevor Sie versuchen eine Lx-Office Installation unter FCGI laufen zu lassen, +empfliehlt es sich die Installation ersteinmal unter CGI aufzusetzen. FCGI +macht es nicht einfach Fehler zu debuggen die beim ersten aufsetzen auftreten +können. Sollte die Installation schon funktionieren, lesen Sie weiter. + Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann unter Debian/Ubuntu z.B. mit folgendem Befehl geschehen: @@ -57,7 +65,7 @@ bzw. a2enmod fcgid -Die Konfiguration für die Verwendung von Lx-Office mit FastCGI erfolgt +Die Konfiguration für die Verwendung von Lx-Office mit FastCGI erfolgt durch Anpassung der vorhandenen Alias- und Directory-Direktiven. Dabei wird zwischen dem Installationspfad von Lx-Office im Dateisystem ("/path/to/lx-office-erp") und der URL unterschieden, unter der @@ -81,20 +89,20 @@ Folgendes Template funktioniert mit mod_fastcgi: Deny from All -...und für mod_fcgid muss die erste Zeile geändert werden in: +...und für mod_fcgid muss die erste Zeile geändert werden in: AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi 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. Trotzdem ist diese Variante einer globalen +zur Laufzeit öfter mal Scripte neu geladen werden, gibt es hier kleine +Performance-Einbußen. Trotzdem ist diese Variante einer globalen Benutzung von "AddHandler fastcgi-script .pl" vorzuziehen. -Es ist möglich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu -betreiben. Dafür bleiben Directorydirektiven bleiben wie oben beschrieben, die +Es ist möglich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu +betreiben. Dafür bleiben Directorydirektiven bleiben wie oben beschrieben, die URLs werden aber umgeleitet: # Zugriff ohne FastCGI @@ -110,16 +118,16 @@ und unter C die FastCGI Version. Achtung: Die AddHandler Direktive vom Apache ist entgegen der Dokumentation -anscheinend nicht lokal auf das Verzeichnis beschränkt sondern global im +anscheinend nicht lokal auf das Verzeichnis beschränkt sondern global im vhost. =head2 Entwicklungsaspekte -Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, muss der +Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, muss der Server neu gestartet werden. -Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu achten. Dadurch -dass das Programm in einer Endlosschleife läuft, müssen folgende Aspekte +Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu achten. Dadurch +dass das Programm in einer Endlosschleife läuft, müssen folgende Aspekte geachtet werden: =head3 Programmende und Ausnahmen: C, C, C, C, C @@ -131,7 +139,7 @@ angezeigt werden. Die Lx-Office eigene C<$::form->error()> tut im Prinzip das Gleiche, mit ein paar Extraoptionen. C und C hingegen werden nicht abgefangen. C wird direkt nach STDERR, also in Server Log eine Nachricht schreiben (sofern in der Konfiguration nicht die Warnungen in das Lx-Office Log -umgeleitet wurden), und C wird die Ausführung beenden. +umgeleitet wurden), und C wird die Ausführung beenden. Prinzipiell ist es kein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn sofort neu starten. Allerdings sollte das die Ausnahme sein. Quintessenz: Bitte @@ -140,13 +148,13 @@ kein C benutzen, alle anderen Exceptionmechanismen sind ok. =head3 Globale Variablen Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen, -müssen alle globalen Variablen vor einem Request sauber initialisiert werden. +müssen alle globalen Variablen vor einem Request sauber initialisiert werden. Das ist besonders wichtig im C<$::cgi> und C<$::auth> Objekt, weil diese nicht -gelöscht werden pro Instanz, sondern persistent gehalten werden. +gelöscht werden pro Instanz, sondern persistent gehalten werden. In C gibt es einen sauber abgetrennten Block der alle -kanonischen globalen Variablen listet und erklärt. Bitte keine anderen -einführen ohne das sauber zu dokumentieren. +kanonischen globalen Variablen listet und erklärt. Bitte keine anderen +einführen ohne das sauber zu dokumentieren. Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sichergeht, dass man die richtige erwischt. @@ -166,7 +174,7 @@ Pfaden, unter 0,15 sonst. =head3 Encoding Awareness -UTF-8 kodierte Installationen sind sehr anfällig gegen fehlerhfate Encodings +UTF-8 kodierte Installationen sind sehr anfällig gegen fehlerhfate Encodings unter FCGI. latin9 Installationen behandeln falsch kodierte Zeichen eher unwissend, und geben sie einfach weiter. UTF-8 verweigert bei fehlerhaften Programmpfaden kurzerhand aus ausliefern. Es wird noch daran gearbeitet alles