X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=doc%2FINSTALL.fcgi;h=4583901032f05ae81f5e67b8db3491b3658009ad;hb=d3835e76df74c5bc7f014048303a2845a1d2277e;hp=1eb4a1265dfe1751dd9d7266ca6c1e7edcc9f94e;hpb=37a9bb2faf1da037b768deb3206f26019fab8555;p=kivitendo-erp.git diff --git a/doc/INSTALL.fcgi b/doc/INSTALL.fcgi index 1eb4a1265..458390103 100644 --- a/doc/INSTALL.fcgi +++ b/doc/INSTALL.fcgi @@ -38,22 +38,43 @@ eigentliche Programmlogik ausgef Folgende Kombinationen sind getestet: * Apache 2.2.11 (Ubuntu) und mod_fastcgi. + * Apache 2.2.11 (Ubuntu) und mod_fcgid: -Folgende Kombinationen funktionieren nicht: - - * Apache 2.2.11 (Ubuntu) + 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 +Eingaben von Lx-Office. Solange diese Probleme nicht behoben sind, muss auf die +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. -Variante 1: +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: + + a2enmod fastcgi - AddHandler fastcgi-script .pl +bzw. -Variante 2: + a2enmod fcgid + +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 +Lx-Office im Webbrowser erreichbar ist ("/web/path/to/lx-office-erp"). + +Folgendes Template funktioniert mit mod_fastcgi: AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl + Alias /web/path/to/lx-office-erp/ /path/to/lx-office-erp/ AllowOverride All @@ -68,34 +89,24 @@ Variante 2: Deny from All +...und für mod_fcgid muss die erste Zeile geändert werden in: -Variante 1 startet einfach jeden Lx-Office Request als fcgi -Prozess. Für sehr große Installationen ist das die schnellste Version, -benötigt aber sehr viel Arbeitspseicher: wurden alle Module mindestens -einmal aufgerufen, so werden dauerhaft ca. 2GB pro Installation -belegt. - -Variante 2 startet nur einen zentralen Dispatcher und lenkt alle Scripte auf -diesen. Dadurch dass zur Laufzeit öfter mal Scripte neu geladen werden gibt es -hier kleine Performance Einbußen. Trotzdem ist diese Variante vorzuziehen. + AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi -=head2 Entwicklungsaspekte - -Die AddHandler Direktive vom Apache ist entgegen der Dokumentation -anscheinend nicht lokal auf das Verzeichnis beschränkt sondern global im -vhost. +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 +Benutzung von "AddHandler fastcgi-script .pl" vorzuziehen. -Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, oder wenn -Templates editiert werden muss der Server neu gestartet werden. Es ist möglich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu -betreiben. Da nimmt man Variante 2 wie oben beschrieben, und ändert die -AliasMatch Zeile auf eine andere URL, und lässt alle anderen URLs auch -weiterleiten: +betreiben. Dafür bleiben Directorydirektiven bleiben wie oben beschrieben, die +URLs werden aber umgeleitet: # Zugriff ohne FastCGI - Alias /web/path/to/lx-office-erp /path/to/lx-office-erp + Alias /web/path/to/lx-office-erp /path/to/lx-office-erp # Zugriff mit FastCGI: AliasMatch ^/web/path/to/lx-office-erp-fcgi/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl @@ -104,6 +115,17 @@ weiterleiten: Dann ist unter C die normale Version erreichbar, 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 +vhost. + +=head2 Entwicklungsaspekte + +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 geachtet werden: @@ -116,11 +138,12 @@ kann mit C, C oder C Fehler ausgeben, die dann vom Dispatche 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, und C wird die Ausführung beenden. +schreiben (sofern in der Konfiguration nicht die Warnungen in das Lx-Office Log +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 -kein C oder C benutzen, alle anderen Exceptionmechanismen sind ok. +kein C benutzen, alle anderen Exceptionmechanismen sind ok. =head3 Globale Variablen @@ -129,6 +152,10 @@ m Das ist besonders wichtig im C<$::cgi> und C<$::auth> Objekt, weil diese nicht 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. + Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sichergeht, dass man die richtige erwischt. @@ -136,27 +163,20 @@ dass man die richtige erwischt. Die kritischen Pfade des Programms sind die Belegmasken, und unter diesen ganz besonders die Verkaufsrechnungsmaske. Ein Aufruf der Rechnungsmaske in -Lx-Office 2.4.3 stable dauert auf einem Core2duo mit 2GB Arbeitsspeicher und +Lx-Office 2.4.3 stable dauert auf einem Core2duo mit 4GB Arbeitsspeicher und Ubuntu 9.10 eine halbe Sekunde. In der 2.6.0 sind es je nach Menge der definierten Variablen 1-2s. Ab der Moose/Rose::DB Version sind es 5-6s. -Mit FastCGI ist die neuste Version auf 0,4 Sekunden selbst in den kritischen +Mit FastCGI ist die neuste Version auf 0,26 Sekunden selbst in den kritischen Pfaden, unter 0,15 sonst. =head2 Bekannte Probleme -Bei mehreren Benutzern scheint ab und zu eine Datenbankverbidung von Rose::DB -in den falschen Benutzer zu geraten. Das ist ein kritischer Bug und muss gefixt -werden. - -Bei Administrativen Tätigkeiten werden in seltenen Fällen die Locales nicht -richtig geladen und die Maske erscheint in Englisch. - -Die bin/mozilla und SL/ Scripte haben teilweise noch globale Variablen mit our -definiert, oder haben noch startup code der bei einbinden ausgeführt wird. -Beides muss überprüft werden. - -Verkauf -> Rechnungen -> Weiter -> Neu erfassen Rechnung gibt einen Zugriffsfehler +=head3 Encoding Awareness -Template Editor funktioniert nicht +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 +Fehler da zu beseitigen.