Revision 2e9d34aa
Von Moritz Bunkus vor mehr als 14 Jahren hinzugefügt
doc/INSTALL.fcgi | ||
---|---|---|
63 | 63 |
Allow from All |
64 | 64 |
</Directory> |
65 | 65 |
|
66 |
<DirectoryMatch //.*/users>
|
|
66 |
<DirectoryMatch /path/to/lx-office-erp/users>
|
|
67 | 67 |
Order Deny,Allow |
68 | 68 |
Deny from All |
69 | 69 |
</DirectoryMatch> |
70 | 70 |
|
71 | 71 |
|
72 |
Variante 1 startet einfach jeden Lx-Office Request als fcgi Prozess. F?r sehr |
|
73 |
gro?e Installationen ist das die schnellste Version, ben?tigt aber sehr viel |
|
74 |
Arbeitspseicher (ca. 2GB). |
|
72 |
Variante 1 startet einfach jeden Lx-Office Request als fcgi |
|
73 |
Prozess. F?r sehr gro?e Installationen ist das die schnellste Version, |
|
74 |
ben?tigt aber sehr viel Arbeitspseicher: wurden alle Module mindestens |
|
75 |
einmal aufgerufen, so werden dauerhaft ca. 2GB pro Installation |
|
76 |
belegt. |
|
75 | 77 |
|
76 | 78 |
Variante 2 startet nur einen zentralen Dispatcher und lenkt alle Scripte auf |
77 | 79 |
diesen. Dadurch dass zur Laufzeit ?fter mal Scripte neu geladen werden gibt es |
78 |
hier kleine Performance Einbu?en. |
|
80 |
hier kleine Performance Einbu?en. Trotzdem ist diese Variante vorzuziehen.
|
|
79 | 81 |
|
80 | 82 |
|
81 | 83 |
=head2 Entwicklungsaspekte |
... | ... | |
89 | 91 |
|
90 | 92 |
Es ist m?glich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu |
91 | 93 |
betreiben. Da nimmt man Variante 2 wie oben beschrieben, und ?ndert die |
92 |
MatchAlias Zeile auf eine andere URL, und l?sst alle anderen URLs auch
|
|
94 |
AliasMatch Zeile auf eine andere URL, und l?sst alle anderen URLs auch
|
|
93 | 95 |
weiterleiten: |
94 | 96 |
|
97 |
# Zugriff ohne FastCGI |
|
98 |
Alias /web/path/to/lx-office-erp /path/to/lx-office-erp |
|
95 | 99 |
|
100 |
# Zugriff mit FastCGI: |
|
96 | 101 |
AliasMatch ^/web/path/to/lx-office-erp-fcgi/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl |
97 |
AliasMatch ^/web/path/to/lx-office-erp-fcgi/(.*) /path/to/lx-office-erp/$1
|
|
102 |
Alias /web/path/to/lx-office-erp-fcgi/ /path/to/lx-office-erp/
|
|
98 | 103 |
|
99 | 104 |
Dann ist unter C</web/path/to/lx-office-erp/> die normale Version erreichbar, |
100 | 105 |
und unter C</web/opath/to/lx-office-erp-fcgi/> die FastCGI Version. |
... | ... | |
103 | 108 |
dass das Programm in einer Endlosschleife l?uft, m?ssen folgende Aspekte |
104 | 109 |
geachtet werden: |
105 | 110 |
|
106 |
=head3 C<warn>, C<die>, C<exit>, C<carp>, C<confess> |
|
111 |
=head3 Programmende und Ausnahmen: C<warn>, C<die>, C<exit>, C<carp>, C<confess>
|
|
107 | 112 |
|
108 |
Fehler die normalerweise dass Programm sofort beenden (fatale Fehler) werden
|
|
109 |
mit dem FastCGI Dispatcher abgefangen, um das Programm amLaufen zu halten. Man |
|
113 |
Fehler, die dass Programm normalerweise sofort beenden (fatale Fehler), werden
|
|
114 |
mit dem FastCGI Dispatcher abgefangen, um das Programm am Laufen zu halten. Man
|
|
110 | 115 |
kann mit C<die>, C<confess> oder C<carp> Fehler ausgeben, die dann vom Dispatcher |
111 | 116 |
angezeigt werden. Die Lx-Office eigene C<$::form->error()> tut im Prinzip das |
112 | 117 |
Gleiche, mit ein paar Extraoptionen. C<warn> und C<exit> hingegen werden nicht |
113 | 118 |
abgefangen. C<warn> wird direkt nach STDERR, also in Server Log eine Nachricht |
114 | 119 |
schreiben, und C<exit> wird die Ausf?hrung beenden. |
115 | 120 |
|
116 |
Prinzipiell ist es ein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn |
|
117 |
sofort neu starten, allerdings sollte das die Ausnahme sein. Quintessenz: Bitte
|
|
118 |
kein C<warn> oder C<exit> benutzen, alle anderen Excepionmechanismen sind ok. |
|
121 |
Prinzipiell ist es kein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn
|
|
122 |
sofort neu starten. Allerdings sollte das die Ausnahme sein. Quintessenz: Bitte
|
|
123 |
kein C<warn> oder C<exit> benutzen, alle anderen Exceptionmechanismen sind ok.
|
|
119 | 124 |
|
120 | 125 |
=head3 Globale Variablen |
121 | 126 |
|
122 |
Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen |
|
127 |
Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen,
|
|
123 | 128 |
m?ssen alle globalen Variablen vor einem Request sauber initialisiert werden. |
124 | 129 |
Das ist besonders wichtig im C<$::cgi> und C<$::auth> Objekt, weil diese nicht |
125 | 130 |
gel?scht werden pro Instanz, sondern persistent gehalten werden. |
Auch abrufbar als: Unified diff
FastCGI-Dokumentation erweitert