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
1
dispatcher.fpl
doc/INSTALL.fcgi
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

  

Auch abrufbar als: Unified diff