Revision e1d7dc46
Von Sven Schöling vor mehr als 14 Jahren hinzugefügt
dispatcher.fcgi | ||
---|---|---|
dispatcher.fpl
|
doc/INSTALL.fcgi | ||
---|---|---|
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
|
||
... | ... | |
|
||
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
|
||
... | ... | |
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
|
||
... | ... | |
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
|
||
... | ... | |
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:
|
||
... | ... | |
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
|
||
|
||
... | ... | |
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.
|
||
|
||
... | ... | |
|
||
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.
|
||
|
Auch abrufbar als: Unified diff
mod_fcgid Unterstützung
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.