Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e1d7dc46

Von Sven Schöling vor mehr als 14 Jahren hinzugefügt

  • ID e1d7dc4690ca23990c97c17909b07dfc0a6ab9bf
  • Vorgänger 94bc7ca3
  • Nachfolger 3c73035d

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.

Unterschiede anzeigen:

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