Revision 2e9d34aa
Von Moritz Bunkus vor mehr als 14 Jahren hinzugefügt
doc/INSTALL.fcgi | ||
---|---|---|
Allow from All
|
||
</Directory>
|
||
|
||
<DirectoryMatch //.*/users>
|
||
<DirectoryMatch /path/to/lx-office-erp/users>
|
||
Order Deny,Allow
|
||
Deny from All
|
||
</DirectoryMatch>
|
||
|
||
|
||
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 (ca. 2GB).
|
||
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.
|
||
hier kleine Performance Einbu?en. Trotzdem ist diese Variante vorzuziehen.
|
||
|
||
|
||
=head2 Entwicklungsaspekte
|
||
... | ... | |
|
||
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
|
||
MatchAlias Zeile auf eine andere URL, und l?sst alle anderen URLs auch
|
||
AliasMatch Zeile auf eine andere URL, und l?sst alle anderen URLs auch
|
||
weiterleiten:
|
||
|
||
# Zugriff ohne FastCGI
|
||
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
|
||
AliasMatch ^/web/path/to/lx-office-erp-fcgi/(.*) /path/to/lx-office-erp/$1
|
||
Alias /web/path/to/lx-office-erp-fcgi/ /path/to/lx-office-erp/
|
||
|
||
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.
|
||
... | ... | |
dass das Programm in einer Endlosschleife l?uft, m?ssen folgende Aspekte
|
||
geachtet werden:
|
||
|
||
=head3 C<warn>, C<die>, C<exit>, C<carp>, C<confess>
|
||
=head3 Programmende und Ausnahmen: C<warn>, C<die>, C<exit>, C<carp>, C<confess>
|
||
|
||
Fehler die normalerweise dass Programm sofort beenden (fatale Fehler) werden
|
||
mit dem FastCGI Dispatcher abgefangen, um das Programm amLaufen zu halten. Man
|
||
Fehler, die dass Programm normalerweise sofort beenden (fatale Fehler), werden
|
||
mit dem FastCGI Dispatcher abgefangen, um das Programm am Laufen zu halten. Man
|
||
kann mit C<die>, C<confess> oder C<carp> Fehler ausgeben, die dann vom Dispatcher
|
||
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.
|
||
|
||
Prinzipiell ist es ein 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 Excepionmechanismen sind ok.
|
||
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.
|
||
|
||
=head3 Globale Variablen
|
||
|
||
Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen
|
||
Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen,
|
||
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.
|
Auch abrufbar als: Unified diff
FastCGI-Dokumentation erweitert