Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 05c6840d

Von Moritz Bunkus vor fast 14 Jahren hinzugefügt

  • ID 05c6840d4fbb90cbe81e14427617793c45ba4714
  • Vorgänger 2af9eae7
  • Nachfolger 9437bec6

Dateiencodings auf UTF-8 geändert

Fix für Bug 1375.

Unterschiede anzeigen:

doc/INSTALL.fcgi
5 5

  
6 6
ist sie deutlich leichter zu lesen.
7 7

  
8
=head1 FastCGI f?r Lx-Office
8
=head1 FastCGI für Lx-Office
9 9

  
10 10
=head2 Was ist FastCGI?
11 11

  
12 12
Direkt aus L<http://de.wikipedia.org/wiki/FastCGI> kopiert:
13 13

  
14
  FastCGI ist ein Standard f?r die Einbindung externer Software zur Generierung
14
  FastCGI ist ein Standard für die Einbindung externer Software zur Generierung
15 15
  dynamischer Webseiten in einem Webserver. FastCGI ist vergleichbar zum Common
16 16
  Gateway Interface (CGI), wurde jedoch entwickelt, um dessen
17 17
  Performance-Probleme zu umgehen.
......
20 20
=head2 Warum FastCGI?
21 21

  
22 22
Perl Programme (wie Lx-Office eines ist) werden nicht statisch kompiliert.
23
Stattdessen werden die Quelldateien bei jedem Start ?bersetzt, was bei kurzen
24
Laufzeiten einen Gro?teil der Laufzeit ausmacht. W?hrend SQL Ledger einen
25
Gro?teil der Funktionalit?t in einzelne Module kapselt, um immer nur einen
26
kleinen Teil laden zu m?ssen, ist die Funktionalit?t von Lx-Office soweit
23
Stattdessen werden die Quelldateien bei jedem Start übersetzt, was bei kurzen
24
Laufzeiten einen Großteil der Laufzeit ausmacht. Während SQL Ledger einen
25
Großteil der Funktionalität in einzelne Module kapselt, um immer nur einen
26
kleinen Teil laden zu müssen, ist die Funktionalität von Lx-Office soweit
27 27
gewachsen, dass immer mehr Module auf den Rest des Programms zugreifen.
28
Zus?tzlich benutzen wir umfangreiche Bibliotheken um Funktionalt?t nicht selber
29
entwickeln zu m?ssen, die zus?tzliche Ladezeit kosten. All dies f?hrt dazu dass
30
ein Lx-Office Aufruf der Kernmasken mittlerweile deutlich l?nger dauert als
31
fr?her, und dass davon 90% f?r das Laden der Module verwendet wird.
28
Zusätzlich benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
29
entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies führt dazu dass
30
ein Lx-Office Aufruf der Kernmasken mittlerweile deutlich länger dauert als
31
früher, und dass davon 90% für das Laden der Module verwendet wird.
32 32

  
33 33
Mit FastCGI werden nun die Module einmal geladen, und danach wird nur die
34
eigentliche Programmlogik ausgef?hrt.
34
eigentliche Programmlogik ausgeführt.
35 35

  
36 36
=head2 Kombinationen aus Webservern und Plugin.
37 37

  
......
41 41
 * Apache 2.2.11 (Ubuntu) und mod_fcgid:
42 42

  
43 43
Als Perl Backend wird das Modul FCGI.pm verwendet. Vorsicht: FCGI 0.69 und
44
h?her ist extrem strict in der Behandlung von Unicode, und verweigert bestimmte
44
höher ist extrem strict in der Behandlung von Unicode, und verweigert bestimmte
45 45
Eingaben von Lx-Office. Solange diese Probleme nicht behoben sind, muss auf die
46
Vorg?ngerversion FCGI 0.68 ausgewichen werden.
46
Vorgängerversion FCGI 0.68 ausgewichen werden.
47 47

  
48
Mit cpan l?sst sie sich wie folgt installieren:
48
Mit cpan lässt sie sich wie folgt installieren:
49 49

  
50 50
 force install M/MS/MSTROUT/FCGI-0.68.tar.gz
51 51

  
......
54 54
Bevor Sie versuchen eine Lx-Office Installation unter FCGI laufen zu lassen,
55 55
empfliehlt es sich die Installation ersteinmal unter CGI aufzusetzen. FCGI
56 56
macht es nicht einfach Fehler zu debuggen die beim ersten aufsetzen auftreten
57
k?nnen. Sollte die Installation schon funktionieren, lesen Sie weiter.
57
können. Sollte die Installation schon funktionieren, lesen Sie weiter.
58 58

  
59 59
Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann unter
60 60
Debian/Ubuntu z.B. mit folgendem Befehl geschehen:
......
65 65

  
66 66
  a2enmod fcgid
67 67

  
68
Die Konfiguration f?r die Verwendung von Lx-Office mit FastCGI erfolgt
68
Die Konfiguration für die Verwendung von Lx-Office mit FastCGI erfolgt
69 69
durch Anpassung der vorhandenen Alias- und Directory-Direktiven. Dabei
70 70
wird zwischen dem Installationspfad von Lx-Office im Dateisystem
71 71
("/path/to/lx-office-erp") und der URL unterschieden, unter der
......
89 89
    Deny from All
90 90
  </DirectoryMatch>
91 91

  
92
...und f?r mod_fcgid muss die erste Zeile ge?ndert werden in:
92
...und für mod_fcgid muss die erste Zeile geändert werden in:
93 93

  
94 94
  AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi
95 95

  
96 96

  
97 97
Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle Zugriffe
98 98
auf die einzelnen Scripte werden auf diesen umgeleitet. Dadurch, dass
99
zur Laufzeit ?fter mal Scripte neu geladen werden, gibt es hier kleine
100
Performance-Einbu?en. Trotzdem ist diese Variante einer globalen
99
zur Laufzeit öfter mal Scripte neu geladen werden, gibt es hier kleine
100
Performance-Einbußen. Trotzdem ist diese Variante einer globalen
101 101
Benutzung von "AddHandler fastcgi-script .pl" vorzuziehen.
102 102

  
103 103

  
104
Es ist m?glich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu
105
betreiben. Daf?r bleiben Directorydirektiven bleiben wie oben beschrieben, die
104
Es ist möglich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu
105
betreiben. Dafür bleiben Directorydirektiven bleiben wie oben beschrieben, die
106 106
URLs werden aber umgeleitet:
107 107

  
108 108
  # Zugriff ohne FastCGI
......
118 118
Achtung:
119 119

  
120 120
Die AddHandler Direktive vom Apache ist entgegen der Dokumentation
121
anscheinend nicht lokal auf das Verzeichnis beschr?nkt sondern global im
121
anscheinend nicht lokal auf das Verzeichnis beschränkt sondern global im
122 122
vhost.
123 123

  
124 124
=head2 Entwicklungsaspekte
125 125

  
126
Wenn ?nderungen in der Konfiguration von Lx-Office gemacht werden, muss der
126
Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, muss der
127 127
Server neu gestartet werden.
128 128

  
129
Bei der Entwicklung f?r FastCGI ist auf ein paar Fallstricke zu achten. Dadurch
130
dass das Programm in einer Endlosschleife l?uft, m?ssen folgende Aspekte
129
Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu achten. Dadurch
130
dass das Programm in einer Endlosschleife läuft, müssen folgende Aspekte
131 131
geachtet werden:
132 132

  
133 133
=head3 Programmende und Ausnahmen: C<warn>, C<die>, C<exit>, C<carp>, C<confess>
......
139 139
Gleiche, mit ein paar Extraoptionen. C<warn> und C<exit> hingegen werden nicht
140 140
abgefangen. C<warn> wird direkt nach STDERR, also in Server Log eine Nachricht
141 141
schreiben (sofern in der Konfiguration nicht die Warnungen in das Lx-Office Log
142
umgeleitet wurden), und C<exit> wird die Ausf?hrung beenden.
142
umgeleitet wurden), und C<exit> wird die Ausführung beenden.
143 143

  
144 144
Prinzipiell ist es kein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn
145 145
sofort neu starten. Allerdings sollte das die Ausnahme sein. Quintessenz: Bitte
......
148 148
=head3 Globale Variablen
149 149

  
150 150
Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen,
151
m?ssen alle globalen Variablen vor einem Request sauber initialisiert werden.
151
müssen alle globalen Variablen vor einem Request sauber initialisiert werden.
152 152
Das ist besonders wichtig im C<$::cgi> und C<$::auth> Objekt, weil diese nicht
153
gel?scht werden pro Instanz, sondern persistent gehalten werden.
153
gelöscht werden pro Instanz, sondern persistent gehalten werden.
154 154

  
155 155
In C<SL::Dispatcher> gibt es einen sauber abgetrennten Block der alle
156
kanonischen globalen Variablen listet und erkl?rt. Bitte keine anderen
157
einf?hren ohne das sauber zu dokumentieren.
156
kanonischen globalen Variablen listet und erklärt. Bitte keine anderen
157
einführen ohne das sauber zu dokumentieren.
158 158

  
159 159
Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sichergeht,
160 160
dass man die richtige erwischt.
......
174 174

  
175 175
=head3 Encoding Awareness
176 176

  
177
UTF-8 kodierte Installationen sind sehr anf?llig gegen fehlerhfate Encodings
177
UTF-8 kodierte Installationen sind sehr anfällig gegen fehlerhfate Encodings
178 178
unter FCGI. latin9 Installationen behandeln falsch kodierte Zeichen eher
179 179
unwissend, und geben sie einfach weiter. UTF-8 verweigert bei fehlerhaften
180 180
Programmpfaden kurzerhand aus ausliefern. Es wird noch daran gearbeitet alles

Auch abrufbar als: Unified diff