38 |
38 |
Folgende Kombinationen sind getestet:
|
39 |
39 |
|
40 |
40 |
* Apache 2.2.11 (Ubuntu) und mod_fastcgi.
|
41 |
|
|
42 |
|
Folgende Kombinationen funktionieren nicht:
|
43 |
|
|
44 |
|
* Apache 2.2.11 (Ubuntu) + mod_fcgid:
|
|
41 |
* Apache 2.2.11 (Ubuntu) und mod_fcgid:
|
45 |
42 |
|
46 |
43 |
Als Perl Backend wird das Modul FCGI.pm verwendet. Vorsicht: FCGI 0.69 und
|
47 |
44 |
h?her ist extrem strict in der Behandlung von Unicode, und verweigert bestimmte
|
... | ... | |
56 |
53 |
|
57 |
54 |
a2enmod fastcgi
|
58 |
55 |
|
|
56 |
bzw.
|
|
57 |
|
|
58 |
a2enmod fcgid
|
|
59 |
|
59 |
60 |
Die Konfiguration f?r die Verwendung von Lx-Office mit FastCGI erfolgt
|
60 |
61 |
durch Anpassung der vorhandenen Alias- und Directory-Direktiven. Dabei
|
61 |
62 |
wird zwischen dem Installationspfad von Lx-Office im Dateisystem
|
62 |
63 |
("/path/to/lx-office-erp") und der URL unterschieden, unter der
|
63 |
64 |
Lx-Office im Webbrowser erreichbar ist ("/web/path/to/lx-office-erp").
|
64 |
65 |
|
|
66 |
Folgendes Template funktioniert mit mod_fastcgi:
|
|
67 |
|
65 |
68 |
AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
|
|
69 |
Alias /web/path/to/lx-office-erp/ /path/to/lx-office-erp/
|
66 |
70 |
|
67 |
71 |
<Directory /path/to/lx-office-erp>
|
68 |
72 |
AllowOverride All
|
... | ... | |
77 |
81 |
Deny from All
|
78 |
82 |
</DirectoryMatch>
|
79 |
83 |
|
|
84 |
...und f?r mod_fcgid muss die erste Zeile ge?ndert werden in:
|
|
85 |
|
|
86 |
AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi
|
|
87 |
|
|
88 |
|
80 |
89 |
Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle Zugriffe
|
81 |
90 |
auf die einzelnen Scripte werden auf diesen umgeleitet. Dadurch, dass
|
82 |
91 |
zur Laufzeit ?fter mal Scripte neu geladen werden, gibt es hier kleine
|
... | ... | |
84 |
93 |
Benutzung von "AddHandler fastcgi-script .pl" vorzuziehen.
|
85 |
94 |
|
86 |
95 |
|
87 |
|
=head2 Entwicklungsaspekte
|
88 |
|
|
89 |
|
Die AddHandler Direktive vom Apache ist entgegen der Dokumentation
|
90 |
|
anscheinend nicht lokal auf das Verzeichnis beschr?nkt sondern global im
|
91 |
|
vhost.
|
92 |
|
|
93 |
|
Wenn ?nderungen in der Konfiguration von Lx-Office gemacht werden, oder wenn
|
94 |
|
Templates editiert werden muss der Server neu gestartet werden.
|
95 |
|
|
96 |
96 |
Es ist m?glich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu
|
97 |
|
betreiben. Da nimmt man Variante 2 wie oben beschrieben, und ?ndert die
|
98 |
|
AliasMatch Zeile auf eine andere URL, und l?sst alle anderen URLs auch
|
99 |
|
weiterleiten:
|
|
97 |
betreiben. Daf?r bleiben Directorydirektiven bleiben wie oben beschrieben, die
|
|
98 |
URLs werden aber umgeleitet:
|
100 |
99 |
|
101 |
100 |
# Zugriff ohne FastCGI
|
102 |
|
Alias /web/path/to/lx-office-erp /path/to/lx-office-erp
|
|
101 |
Alias /web/path/to/lx-office-erp /path/to/lx-office-erp
|
103 |
102 |
|
104 |
103 |
# Zugriff mit FastCGI:
|
105 |
104 |
AliasMatch ^/web/path/to/lx-office-erp-fcgi/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
|
... | ... | |
108 |
107 |
Dann ist unter C</web/path/to/lx-office-erp/> die normale Version erreichbar,
|
109 |
108 |
und unter C</web/opath/to/lx-office-erp-fcgi/> die FastCGI Version.
|
110 |
109 |
|
|
110 |
Achtung:
|
|
111 |
|
|
112 |
Die AddHandler Direktive vom Apache ist entgegen der Dokumentation
|
|
113 |
anscheinend nicht lokal auf das Verzeichnis beschr?nkt sondern global im
|
|
114 |
vhost.
|
|
115 |
|
|
116 |
=head2 Entwicklungsaspekte
|
|
117 |
|
|
118 |
Wenn ?nderungen in der Konfiguration von Lx-Office gemacht werden, muss der
|
|
119 |
Server neu gestartet werden.
|
|
120 |
|
111 |
121 |
Bei der Entwicklung f?r FastCGI ist auf ein paar Fallstricke zu achten. Dadurch
|
112 |
122 |
dass das Programm in einer Endlosschleife l?uft, m?ssen folgende Aspekte
|
113 |
123 |
geachtet werden:
|
... | ... | |
120 |
130 |
angezeigt werden. Die Lx-Office eigene C<$::form->error()> tut im Prinzip das
|
121 |
131 |
Gleiche, mit ein paar Extraoptionen. C<warn> und C<exit> hingegen werden nicht
|
122 |
132 |
abgefangen. C<warn> wird direkt nach STDERR, also in Server Log eine Nachricht
|
123 |
|
schreiben, und C<exit> wird die Ausf?hrung beenden.
|
|
133 |
schreiben (sofern in der Konfiguration nicht die Warnungen in das Lx-Office Log
|
|
134 |
umgeleitet wurden), und C<exit> wird die Ausf?hrung beenden.
|
124 |
135 |
|
125 |
136 |
Prinzipiell ist es kein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn
|
126 |
137 |
sofort neu starten. Allerdings sollte das die Ausnahme sein. Quintessenz: Bitte
|
127 |
|
kein C<warn> oder C<exit> benutzen, alle anderen Exceptionmechanismen sind ok.
|
|
138 |
kein C<exit> benutzen, alle anderen Exceptionmechanismen sind ok.
|
128 |
139 |
|
129 |
140 |
=head3 Globale Variablen
|
130 |
141 |
|
... | ... | |
133 |
144 |
Das ist besonders wichtig im C<$::cgi> und C<$::auth> Objekt, weil diese nicht
|
134 |
145 |
gel?scht werden pro Instanz, sondern persistent gehalten werden.
|
135 |
146 |
|
|
147 |
In C<SL::Dispatcher> gibt es einen sauber abgetrennten Block der alle
|
|
148 |
kanonischen globalen Variablen listet und erkl?rt. Bitte keine anderen
|
|
149 |
einf?hren ohne das sauber zu dokumentieren.
|
|
150 |
|
136 |
151 |
Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sichergeht,
|
137 |
152 |
dass man die richtige erwischt.
|
138 |
153 |
|
... | ... | |
140 |
155 |
|
141 |
156 |
Die kritischen Pfade des Programms sind die Belegmasken, und unter diesen ganz
|
142 |
157 |
besonders die Verkaufsrechnungsmaske. Ein Aufruf der Rechnungsmaske in
|
143 |
|
Lx-Office 2.4.3 stable dauert auf einem Core2duo mit 2GB Arbeitsspeicher und
|
|
158 |
Lx-Office 2.4.3 stable dauert auf einem Core2duo mit 4GB Arbeitsspeicher und
|
144 |
159 |
Ubuntu 9.10 eine halbe Sekunde. In der 2.6.0 sind es je nach Menge der
|
145 |
160 |
definierten Variablen 1-2s. Ab der Moose/Rose::DB Version sind es 5-6s.
|
146 |
161 |
|
147 |
|
Mit FastCGI ist die neuste Version auf 0,4 Sekunden selbst in den kritischen
|
|
162 |
Mit FastCGI ist die neuste Version auf 0,26 Sekunden selbst in den kritischen
|
148 |
163 |
Pfaden, unter 0,15 sonst.
|
149 |
164 |
|
150 |
165 |
=head2 Bekannte Probleme
|
151 |
166 |
|
|
167 |
=head3 Encoding Awareness
|
|
168 |
|
|
169 |
UTF-8 kodierte Installationen sind sehr anf?llig gegen fehlerhfate Encodings
|
|
170 |
unter FCGI. latin9 Installationen behandeln falsch kodierte Zeichen eher
|
|
171 |
unwissend, und geben sie einfach weiter. UTF-8 verweigert bei fehlerhaften
|
|
172 |
Programmpfaden kurzerhand aus ausliefern. Es wird noch daran gearbeitet alles
|
|
173 |
Fehler da zu beseitigen.
|
|
174 |
|
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.