mod_fcgid Unterstützung
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 2 Sep 2010 15:22:46 +0000 (17:22 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 2 Sep 2010 15:22:46 +0000 (17:22 +0200)
Good News everyone. Es stellt sich heraus, dass mod_fcgid wunderbar
funktioniert, wenn man nur die Beispiele auf deren Webseite ignoriert...

Dokumentation aktualisiert, und einen notwendigen Symlink hinzugefügt.

dispatcher.fcgi [new symlink]
doc/INSTALL.fcgi

diff --git a/dispatcher.fcgi b/dispatcher.fcgi
new file mode 120000 (symlink)
index 0000000..777f2b6
--- /dev/null
@@ -0,0 +1 @@
+dispatcher.fpl
\ No newline at end of file
index 063aa42..06ed3a9 100644 (file)
@@ -38,10 +38,7 @@ eigentliche Programmlogik ausgef
 Folgende Kombinationen sind getestet:
 
  * Apache 2.2.11 (Ubuntu) und mod_fastcgi.
-
-Folgende Kombinationen funktionieren nicht:
-
- * Apache 2.2.11 (Ubuntu) + mod_fcgid:
+ * 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
@@ -56,13 +53,20 @@ Debian/Ubuntu z.B. mit folgendem Befehl geschehen:
 
   a2enmod fastcgi
 
+bzw.
+
+  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/
 
   <Directory /path/to/lx-office-erp>
     AllowOverride All
@@ -77,6 +81,11 @@ Lx-Office im Webbrowser erreichbar ist ("/web/path/to/lx-office-erp").
     Deny from All
   </DirectoryMatch>
 
+...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
@@ -84,22 +93,12 @@ Performance-Einbu
 Benutzung von "AddHandler fastcgi-script .pl" vorzuziehen.
 
 
-=head2 Entwicklungsaspekte
-
-Die AddHandler Direktive vom Apache ist entgegen der Dokumentation
-anscheinend nicht lokal auf das Verzeichnis beschränkt sondern global im
-vhost.
-
-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
@@ -108,6 +107,17 @@ weiterleiten:
 Dann ist unter C</web/path/to/lx-office-erp/> die normale Version erreichbar,
 und unter C</web/opath/to/lx-office-erp-fcgi/> 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:
@@ -120,11 +130,12 @@ kann mit C<die>, C<confess> oder C<carp> 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<warn> und C<exit> hingegen werden nicht
 abgefangen. C<warn> wird direkt nach STDERR, also in Server Log eine Nachricht
-schreiben, und C<exit> wird die Ausführung beenden.
+schreiben (sofern in der Konfiguration nicht die Warnungen in das Lx-Office Log
+umgeleitet wurden), und C<exit> 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<warn> oder C<exit> benutzen, alle anderen Exceptionmechanismen sind ok.
+kein C<exit> benutzen, alle anderen Exceptionmechanismen sind ok.
 
 =head3 Globale Variablen
 
@@ -133,6 +144,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<SL::Dispatcher> 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.
 
@@ -140,12 +155,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
 
+=head3 Encoding Awareness
+
+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.
+