Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 7ee506b3

Von Moritz Bunkus vor mehr als 12 Jahren hinzugefügt

  • ID 7ee506b343e315d622fd94a5f774ad99aad63a5c
  • Vorgänger 4ba806ac
  • Nachfolger 6023717e

Migration der einzelnen Dokumentationsdateien in eine DocBook-Datei

Unterschiede anzeigen:

doc/20111013_globale_variablen.txt
1
nachdem Holger heute den Bug eingestellt hat den ich schon lange befürchtet
2
habe, bin ich heute mal die globalen Variablen angegangen. Das ganze ist über
3
die Jahre leider recht komfus geworden, deshalb hier ne Erklärung, die
4
hoffentlich sowas in Zukunft vermeidet.
5

  
6

  
7
Wie sehen globale Variablen in Perl aus?
8
----------------------------------------
9

  
10
Globale Variablen liegen in einem speziellen namespace namens "main", der von
11
überall erreichbar ist. Darüber hinaus sind bareword globs global und die
12
meisten speziellen Variablen sind... speziell.
13

  
14
Daraus ergeben sich folgende Formen:
15

  
16
  $main::form           - expliziter namespace main
17
  $::form               - impliziter namespace main
18
  open FILE, "file.txt" - FILE ist global
19
  $_                    - speziell.
20

  
21
(Ja, da fehlen noch ein paar Sachen, ich weiß)
22

  
23
Im Gegensatz zu PHP gibt es kein Schlüsselwort wir "global" mit dem man
24
importieren kann, my, our und local machen was anderes.
25

  
26
  my $form              - lexikalische Variable, gültig bis zum Ende des scopes
27
  our $form             - $form referenziert ab hier $PACKAGE::form.
28
  local $form           - Alle Änderungen an $form werden am Ende des scopes zurückgesetzt
29

  
30
Warum ist das ein Problem?
31
--------------------------
32

  
33
Das erste Problem ist FCGI.
34

  
35
sql-ledger hat fast alles im globalen namespace abgelegt, und erwartet, dass es
36
da auch wiederzufinden ist. Unter FCGI müssen diese Sachen auch wieder
37
aufgeräumt werden, damit sie nicht in den nächsten Request kommen. Einige
38
Sachen wiederum sollen nicht gelöscht werden, wie zum Beispiel
39
Datenbankverbindungen, weil die ne Ewigkeit zum initialisieren brauchen.
40

  
41
Das zweite Problem ist strict.
42

  
43
Unter strict werden alle Variablen die nicht explizit mit Package, my oder our
44
angegeben werden als Tippfehler angemarkert, was einen vor so mancher Stunde
45
suchen nach einem Bug erspart. Da globale Variablen aber implizit mit Package
46
angegeben werden, werden die nicht geprüft, und ein Tippfehler da fällt
47
niemandem auf.
48

  
49
Kanonische globale Variablen
50
----------------------------
51

  
52
Um dieses Problem im Griff zu halten gibt es einige wenige globale Variablen,
53
die kanonisch sind, und alles andere sollte anderweitig umhergereicht werden.
54

  
55
Diese Variablen sind im Moment die folgenden neun:
56

  
57
  $::form
58
  %::myconfig
59
  $::locale
60
  $::lxdebug
61
  $::auth
62
  $::lx_office_conf
63
  $::instance_conf
64
  $::dispatcher
65
  $::request
66

  
67
Damit diese nicht als Müllhalde misbrauch werden, im Folgenden eine kurze
68
Erläuterung was man von denn erwarten kann.
69

  
70

  
71
$::form
72

  
73
- Ist ein Objekt der Klasse "Form"
74
- Wird nach jedem Request gelöscht
75
- Muss auch in Tests und Konsolenscripts vorhanden sein.
76
- Enthält am Anfang eines Requests die Requestparameter vom User
77
- Kann zwar intern über Requestgrenzen ein Datenbankhandle cachen, das wird
78
  aber momentan absichtlich zerstört
79

  
80
$::form wurde unter sql ledger als Gottobjekt für alles misbraucht. Sämtliche alten
81
Funktionen unter SL/ mutieren $::form, das heißt, alles was einem lieb ist,
82
sollte man vor einem Aufruf von zum Beispiel IS->retrieve_customer  in Sicherheit bringen.
83

  
84
Das Objekt der Klasse Form  hat leider im Moment noch viele zentrale Funktionen
85
Gdie vom internen Zustand abhängen, deshalb bitte nie einfach zerstören oder
86
überschreiben. Es geht ziemlich sicher etwas kaputt.
87

  
88
$::form ist gleichzeitig der Standard Scope in den Template::Toolkit Templates
89
ausserhalb der Controller, der Ausdruck [% var %] greift auf $::form->{var} zu.
90
Unter Controllern ist der Standard Scope anders, da lautet der Zugriff [%
91
FORM.var %]. In Druckvorlagen sind normale Variablen ebenfall im $::form Scope,
92
d.h. <%var%> zeigt auf $::form->{var}. Innerhalb von Schleifen
93
wird $::form->{TEMPLATE_ARRAYS}{var}[$index] bevorzugt wenn vorhanden.
94

  
95

  
96
%::myconfig
97

  
98
- Das einzige Hash unter den globalen Variablen
99
- Wird spätestens benötigt wenn auf die Datenbank zugegriffen wird
100
- Wird bei jedem Request neu erstellt.
101
- Enthält die Userdaten des aktuellen Logins
102
- Sollte nicht ohne Filterung irgendwo gedumpt werden oder extern serialisiert
103
  werden, weil da auch der Datenbankzugriff für diesen user drinsteht.
104
- Enthält unter anderem Listenbegrenzung vclimit, Datumsformat dateformat und
105
  Nummernformat numberformat
106
- Enthält Datenbankzugriffinformationen
107

  
108
%::myconfig ist im Moment der Ersatz für ein Userobjekt. Die meisten Funktionen,
109
die etwas anhand des aktuellen Users entscheiden müssen befragen %::myconfig.
110

  
111

  
112
$::locale
113

  
114
- Objekt der Klasse "Locale"
115
- Wird pro Request erstellt
116
- Muss auch für Tests und Scripte immer verfügbar sein.
117
- Cached intern über Requestgrenzen hinweg benutzte Locales
118

  
119
Lokalisierung für den aktuellen User. Alle Übersetzungen, Zahlen- und
120
Datumsformatierungen laufen über dieses Objekt.
121

  
122

  
123
$::lxdebug
124

  
125
- Objekt der Klasse "LXDebug"
126
- Wird global gecached
127
- Muss immer verfügbar sein, in nahezu allen Funktionen
128

  
129
$::lxdebug stellt Debuggingfunktionen bereit, wie "enter_sub" und "leave_sub",
130
mit denen in den alten Modulen ein brauchbares Tracing gebaut ist, "log_time",
131
mit der man die Wallclockzeit seit Requeststart loggen kann, und  "message" und
132
"dump" mit denen man flott Informationen ins Log packen kann.
133

  
134

  
135
$::auth
136

  
137
- Objekt der Klasse "SL::Auth"
138
- Wird global gecached
139
- Hat eine permanente DB Verbindung zur Authdatenbank
140
- Wird nach jedem Request resettet.
141

  
142
$::auth stellt Funktionen bereit um die Rechte des aktuellen Users abzufragen.
143
Obwohl diese Informationen vom aktuellen User abhängen wird das Objekt aus
144
Geschwindigkeitsgründen nur einmal angelegt und dann nach jedem Request kurz
145
resettet.
146

  
147

  
148
$::lx_office_conf
149

  
150
- Objekt der Klasse "SL::LxOfficeConf"
151
- Global gecached
152
- Repräsentation der config/lx_office.conf[.default] Dateien
153

  
154
Globale Konfiguration.
155

  
156
Configdateien werden zum Start gelesen, und nicht mehr angefasst. Es ist
157
derzeit nicht geplant, dass das Programm die Konfiguration ändern kann oder
158
sollte.
159

  
160
Der Konfigurationskey
161

  
162
  [Debug]
163

  
164
  file = /tmp/lxoffice_debug_log.txt
165

  
166
ist im Programm als $::lx_office_conf->{Debug}{file} erreichbar.
167

  
168
Warnung: Zugriff auf die Konfiguration erfolgt im Moment über Hashkeys, sind
169
also nicht gegen Tippfehler abgesichert.
170

  
171

  
172
$::instance_conf
173

  
174
- Objekt der Klasse "SL::InstanceConfiguration"
175
- wird pro Request neu erstellt.
176

  
177
Funktioniert wie $::lx_office_conf, speichert aber Daten die von der Instanz
178
abhängig sind. Eine Instanz ist hier eine Mandantendatenbank. Prominentestes
179
Datum ist "eur", die Information ob Bilanz oder Einnahmenüberschussrechnung
180
gemacht wird.
181

  
182

  
183

  
184
$::dispatcher
185

  
186
- Objekt der Klasse "SL::Dispatcher"
187
- wird pro Serverprozess erstellt.
188
- enthält Informationen über die technische Verbindung zum Server
189

  
190
Der dritte Punkt ist auch der einzige Grund warum das Objekt global gespeichert
191
wird. Wird vermutlich irgendwann in einem anderen Objekt untergebracht.
192

  
193

  
194

  
195
$::request
196

  
197
- Hashref (evtl später Objekt)
198
- Wird pro Request neu initialisiert.
199
- Keine Unterstruktur garantiert.
200

  
201
$::request ist ein generischer Platz um Daten "für den aktuellen Request"
202
abzulegen. Sollte nicht für action at a distance benutzt werden, sondern um
203
lokales memoizing zu ermöglichen, das garantiert am Ende des Requests zerstört
204
wird.
205

  
206
Vieles von dem was im moment in $::form  liegt sollte eigentlich hier liegen.
207
Die groben Differentialkriterien sind:
208

  
209
- Kommt es vom User, und soll unverändert wieder an den User?
210
  => $::form, steht da eh schon
211

  
212
- Sind es Daten aus der Datenbank, die nur bis zum Ende des Requests gebraucht werden?
213
  => $::request
214

  
215
- Muss ich von anderen Teilen des Programms lesend drauf zugreifen?
216
  => $::request, aber Zugriff über Wrappermethode
217

  
218

  
219

  
220

  
221
Ehemalige globale Variablen
222
---------------------------
223

  
224
Die folgenden Variablen waren einmal im Programm, und wurden entfernt.
225

  
226

  
227
$::cgi
228

  
229
- war nötig, weil cookie Methoden nicht als Klassenfunktionen funktionieren
230
- Aufruf als Klasse erzeugt Dummyobjekt was im Klassennamespace gehalten wird
231
  und über Requestgrenzen leaked
232
- liegt jetzt unter $::request->{cgi}
233

  
234

  
235
$::all_units
236

  
237
- war nötig, weil einige Funktionen in Schleifen zum Teil ein paar hundert mal
238
  pro Request eine Liste der Einheiten brauchen, und die als Parameter durch
239
  einen Riesenstack von Funktionen geschleift werden müssten.
240
- Liegt jetzt unter $::request->{cache}{all_units}
241
- Wird nur in AM->retrieve_all_units gesetzt oder gelesen.
242

  
243

  
244
%::called_subs
245

  
246
- wurde benutzt um callsub deep recursions abzufangen.
247
- Wurde entfernt, weil callsub nur einen Bruchteil der möglichen Rekursioenen
248
  darstellt, und da nie welche auftreten.
249
- komplette recursion protection wurde entfernt.
doc/INSTALL.fcgi
1

  
2
Diese Datei ist in Plain Old Documentation geschrieben. Mit
3

  
4
> perldoc INSTALL.fcgi
5

  
6
ist sie deutlich leichter zu lesen.
7

  
8
=encoding utf8
9

  
10
=head1 FastCGI für Lx-Office
11

  
12
=head2 Was ist FastCGI?
13

  
14
Direkt aus L<http://de.wikipedia.org/wiki/FastCGI> kopiert:
15

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

  
21

  
22
=head2 Warum FastCGI?
23

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

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

  
38
=head2 Kombinationen aus Webservern und Plugin.
39

  
40
Folgende Kombinationen sind getestet:
41

  
42
 * Apache 2.2.11 (Ubuntu) und mod_fcgid.
43
 * Apache 2.2.11 (Ubuntu) und mod_fastcgi.
44

  
45
Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer Zeit
46
nicht mehr weiter entwickelt wird.
47

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

  
53
Mit cpan lässt sie sich wie folgt installieren:
54

  
55
 force install M/MS/MSTROUT/FCGI-0.68.tar.gz
56

  
57
=head2 Konfiguration des Webservers.
58

  
59
Bevor Sie versuchen eine Lx-Office Installation unter FCGI laufen zu lassen,
60
empfliehlt es sich die Installation ersteinmal unter CGI aufzusetzen. FCGI
61
macht es nicht einfach Fehler zu debuggen die beim ersten aufsetzen auftreten
62
können. Sollte die Installation schon funktionieren, lesen Sie weiter.
63

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

  
67
  a2enmod fcgid
68

  
69
bzw.
70

  
71
  a2enmod fastcgi
72

  
73
Die Konfiguration für die Verwendung von Lx-Office mit FastCGI erfolgt
74
durch Anpassung der vorhandenen Alias- und Directory-Direktiven. Dabei
75
wird zwischen dem Installationspfad von Lx-Office im Dateisystem
76
("/path/to/lx-office-erp") und der URL unterschieden, unter der
77
Lx-Office im Webbrowser erreichbar ist ("/web/path/to/lx-office-erp").
78

  
79
Folgendes Template funktioniert mit mod_fastcgi:
80

  
81
  AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi
82
  Alias       /web/path/to/lx-office-erp/          /path/to/lx-office-erp/
83

  
84
  <Directory /path/to/lx-office-erp>
85
    AllowOverride All
86
    Options ExecCGI Includes FollowSymlinks
87
    Order Allow,Deny
88
    Allow from All
89
  </Directory>
90

  
91
  <DirectoryMatch /path/to/lx-office-erp/users>
92
    Order Deny,Allow
93
    Deny from All
94
  </DirectoryMatch>
95

  
96
Für mod_fcgid muss ein AddHandler ergänzt werden und die erste Zeile geändert werden:
97

  
98
  AddHandler fcgid-script .fpl
99
  AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
100

  
101
Seit mod_fcgid-Version 2.6.3 gelten sehr kleine Grenzen für die
102
maximale Größe eines Requests. Diese sollte wie folgt hochgesetzt werden:
103

  
104
  FcgidMaxRequestLen 10485760
105

  
106
Das ganze sollte dann so aussehen:
107

  
108
  AddHandler fcgid-script .fpl
109
  AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
110
  Alias       /web/path/to/lx-office-erp/          /path/to/lx-office-erp/
111
  FcgidMaxRequestLen 10485760
112

  
113
  <Directory /path/to/lx-office-erp>
114
    AllowOverride All
115
    Options ExecCGI Includes FollowSymlinks
116
    Order Allow,Deny
117
    Allow from All
118
  </Directory>
119

  
120
  <DirectoryMatch /path/to/lx-office-erp/users>
121
    Order Deny,Allow
122
    Deny from All
123
  </DirectoryMatch>
124

  
125
Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle Zugriffe
126
auf die einzelnen Scripte werden auf diesen umgeleitet. Dadurch, dass
127
zur Laufzeit öfter mal Scripte neu geladen werden, gibt es hier kleine
128
Performance-Einbußen.
129

  
130

  
131
Es ist möglich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu
132
betreiben. Dafür bleiben die Directorydirektiven wie oben beschrieben, die URLs
133
werden aber umgeleitet:
134

  
135
  # Zugriff über cgi
136
  Alias       /web/path/to/lx-office-erp                /path/to/lx-office-erp
137

  
138
  # Zugriff mit mod_fcgid:
139
  AliasMatch ^/web/path/to/lx-office-erp-fcgid/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
140
  Alias       /web/path/to/lx-office-erp-fcgid/          /path/to/lx-office-erp/
141

  
142
  # Zugriff mit mod_fastcgi:
143
  AliasMatch ^/web/path/to/lx-office-erp-fastcgi/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi
144
  Alias       /web/path/to/lx-office-erp-fastcgi/          /path/to/lx-office-erp/
145

  
146
Dann ist unter C</web/path/to/lx-office-erp/> die normale Version erreichbar,
147
und unter C</web/path/to/lx-office-erp-fcgid/> bzw.
148
C</web/path/to/lx-office-erp-fastcgi/> die FastCGI Version.
149

  
150
=head2 Entwicklungsaspekte
151

  
152
Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, muss der
153
Webserver neu gestartet werden.
154

  
155
Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu achten. Dadurch
156
dass das Programm in einer Endlosschleife läuft, müssen folgende Aspekte
157
geachtet werden:
158

  
159
=head3 Programmende und Ausnahmen: C<warn>, C<die>, C<exit>, C<carp>, C<confess>
160

  
161
Fehler, die dass Programm normalerweise sofort beenden (fatale Fehler), werden
162
mit dem FastCGI Dispatcher abgefangen, um das Programm am Laufen zu halten. Man
163
kann mit C<die>, C<confess> oder C<carp> Fehler ausgeben, die dann vom Dispatcher
164
angezeigt werden. Die Lx-Office eigene C<$::form->error()> tut im Prinzip das
165
Gleiche, mit ein paar Extraoptionen. C<warn> und C<exit> hingegen werden nicht
166
abgefangen. C<warn> wird direkt nach STDERR, also in Server Log eine Nachricht
167
schreiben (sofern in der Konfiguration nicht die Warnungen in das Lx-Office Log
168
umgeleitet wurden), und C<exit> wird die Ausführung beenden.
169

  
170
Prinzipiell ist es kein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn
171
sofort neu starten. Allerdings sollte das die Ausnahme sein. Quintessenz: Bitte
172
kein C<exit> benutzen, alle anderen Exceptionmechanismen sind ok.
173

  
174
=head3 Globale Variablen
175

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

  
181
In C<SL::Dispatcher> gibt es einen sauber abgetrennten Block der alle
182
kanonischen globalen Variablen listet und erklärt. Bitte keine anderen
183
einführen ohne das sauber zu dokumentieren.
184

  
185
Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sicher geht,
186
dass man die richtige erwischt.
187

  
188
=head2 Performance und Statistiken
189

  
190
Die kritischen Pfade des Programms sind die Belegmasken, und unter diesen ganz
191
besonders die Verkaufsrechnungsmaske. Ein Aufruf der Rechnungsmaske in
192
Lx-Office 2.4.3 stable dauert auf einem Core2duo mit 4GB Arbeitsspeicher und
193
Ubuntu 9.10 eine halbe Sekunde. In der 2.6.0 sind es je nach Menge der
194
definierten Variablen 1-2s. Ab der Moose/Rose::DB Version sind es 5-6s.
195

  
196
Mit FastCGI ist die neuste Version auf 0,26 Sekunden selbst in den kritischen
197
Pfaden, unter 0,15 sonst.
198

  
199
=head2 Bekannte Probleme
200

  
201
=head3 Encoding Awareness
202

  
203
UTF-8 kodierte Installationen sind sehr anfällig gegen fehlerhfate Encodings
204
unter FCGI. latin9 Installationen behandeln falsch kodierte Zeichen eher
205
unwissend, und geben sie einfach weiter. UTF-8 verweigert bei fehlerhaften
206
Programmpfaden kurzerhand das Ausliefern. Es wird noch daran gearbeitet, alle
207
Fehler da zu beseitigen.
208

  
doc/INSTALL.html
1
<html lang="en">
2
<head>
3
<title>Lx-Office Installationsanleitung</title>
4
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
<meta name="description" content="Lx-Office Installationsanleitung">
6
<meta name="generator" content="makeinfo 4.11">
7
<link title="Top" rel="top" href="#Top">
8
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
9
<meta http-equiv="Content-Style-Type" content="text/css">
10
<style type="text/css"><!--
11
  pre.display { font-family:inherit }
12
  pre.format  { font-family:inherit }
13
  pre.smalldisplay { font-family:inherit; font-size:smaller }
14
  pre.smallformat  { font-family:inherit; font-size:smaller }
15
  pre.smallexample { font-size:smaller }
16
  pre.smalllisp    { font-size:smaller }
17
  span.sc    { font-variant:small-caps }
18
  span.roman { font-family:serif; font-weight:normal; } 
19
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
20
--></style>
21
</head>
22
<body>
23
<h1 class="settitle">Lx-Office Installationsanleitung</h1>
24
   <div class="contents">
25
<h2>Table of Contents</h2>
26
<ul>
27
<li><a name="toc_Top" href="#Top">Inhalt der Anleitung</a>
28
<li><a name="toc_Aktuelle-Hinweise" href="#Aktuelle-Hinweise">1 Aktuelle Hinweise</a>
29
<li><a name="toc_Ben_00c3_00b6tigte-Software-und-Pakete" href="#Ben_00c3_00b6tigte-Software-und-Pakete">2 Benötigte Software und Pakete</a>
30
<ul>
31
<li><a href="#Betriebssystem">2.1 Betriebssystem</a>
32
<li><a href="#Pakete">2.2 Pakete</a>
33
</li></ul>
34
<li><a name="toc_Manuelle-Installation-des-Programmpaketes" href="#Manuelle-Installation-des-Programmpaketes">3 Manuelle Installation des Programmpaketes</a>
35
<li><a name="toc_Anpassung-der-PostgreSQL_002dKonfiguration" href="#Anpassung-der-PostgreSQL_002dKonfiguration">4 Anpassung der PostgreSQL-Konfiguration</a>
36
<ul>
37
<li><a href="#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">4.1 Zeichensätze/die Verwendung von UTF-8</a>
38
<li><a href="#_00c3_0084nderungen-an-Konfigurationsdateien">4.2 Änderungen an Konfigurationsdateien</a>
39
<li><a href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">4.3 Erweiterung für servergespeicherte Prozeduren</a>
40
<li><a href="#Datenbankbenutzer-anlegen">4.4 Datenbankbenutzer anlegen</a>
41
</li></ul>
42
<li><a name="toc_Apache_002dKonfiguration" href="#Apache_002dKonfiguration">5 Apache-Konfiguration</a>
43
<li><a name="toc_Der-Task_002dServer" href="#Der-Task_002dServer">6 Der Task-Server</a>
44
<ul>
45
<li><a href="#Konfiguration-des-Task_002dServers">6.1 Verfügbare und notwendige Konfigurationsoptionen</a>
46
<li><a href="#Einbinden-in-den-Boot_002dProzess">6.2 Automatisches Starten des Task-Servers beim Booten</a>
47
<ul>
48
<li><a href="#Einbinden-in-den-Boot_002dProzess">6.2.1 SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)</a>
49
<li><a href="#Einbinden-in-den-Boot_002dProzess">6.2.2 Upstart-basierende Systeme (z.B. Ubuntu)</a>
50
</li></ul>
51
<li><a href="#Prozesskontrolle">6.3 Wie der Task-Server gestartet und beendet wird</a>
52
</li></ul>
53
<li><a name="toc_Benutzerauthentifizierung-und-Administratorpasswort" href="#Benutzerauthentifizierung-und-Administratorpasswort">7 Benutzerauthentifizierung und Administratorpasswort</a>
54
<ul>
55
<li><a href="#Grundlagen-zur-Benutzerauthentifizierung">7.1 Grundlagen zur Benutzerauthentifizierung</a>
56
<li><a href="#Administratorpasswort">7.2 Administratorpasswort</a>
57
<li><a href="#Authentifizierungsdatenbank">7.3 Authentifizierungsdatenbank</a>
58
<li><a href="#Passwort_00c3_00bcberpr_00c3_00bcfung">7.4 Passwortüberprüfung</a>
59
<li><a href="#Name-des-Session_002dCookies">7.5 Name des Session-Cookies</a>
60
<li><a href="#Anlegen-der-Authentifizierungsdatenbank">7.6 Anlegen der Authentifizierungsdatenbank</a>
61
</li></ul>
62
<li><a name="toc_Benutzer_002d-und-Gruppenverwaltung" href="#Benutzer_002d-und-Gruppenverwaltung">8 Benutzer- und Gruppenverwaltung</a>
63
<ul>
64
<li><a href="#Zusammenh_00c3_00a4nge">8.1 Zusammenhänge</a>
65
<li><a href="#Datenbanken-anlegen">8.2 Datenbanken anlegen</a>
66
<li><a href="#Gruppen-anlegen">8.3 Gruppen anlegen</a>
67
<li><a href="#Benutzer-anlegen">8.4 Benutzer anlegen</a>
68
<li><a href="#Gruppenmitgliedschaften-verwalten">8.5 Gruppenmitgliedschaften verwalten</a>
69
<li><a href="#Migration-alter-Installationen">8.6 Migration alter Installationen</a>
70
</li></ul>
71
<li><a name="toc_Drucken-mit-Lx_002dOffice" href="#Drucken-mit-Lx_002dOffice">9 Drucken mit Lx-Office</a>
72
<li><a name="toc_OpenDocument_002dVorlagen" href="#OpenDocument_002dVorlagen">10 OpenDocument-Vorlagen</a>
73
<li><a name="toc_Lx_002dOffice-ERP-verwenden" href="#Lx_002dOffice-ERP-verwenden">11 Lx-Office ERP verwenden</a>
74
</li></ul>
75
</div>
76

  
77

  
78

  
79
<div class="node">
80
<p><hr>
81
<a name="Top"></a>
82
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
83
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#dir">(dir)</a>
84

  
85
</div>
86

  
87
<h2 class="unnumbered">Inhalt der Anleitung</h2>
88

  
89
<ul class="menu">
90
<li><a accesskey="1" href="#Aktuelle-Hinweise">Aktuelle Hinweise</a>:  Andere Informationsquellen als diese Anleitung
91
<li><a accesskey="2" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>:  Vorraussetzungen zum Betrieb von Lx-Office
92
<li><a accesskey="3" href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>:  Installationsort, Berechtigungen
93
<li><a accesskey="4" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>:  Verschiedene Aspekte der Datenbankkonfiguration
94
<li><a accesskey="5" href="#Apache_002dKonfiguration">Apache-Konfiguration</a>:  Einrichtung eines Aliases und Optionen für das Ausführen von CGI-Scripten
95
<li><a accesskey="6" href="#Der-Task_002dServer">Der Task-Server</a>:  Konfiguration und Einrichtung des Task-Server-Dämonen
96
<li><a accesskey="7" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>:  Einrichtung der Authentifizierungsdatenbank und der Passwortüberprüfung
97
<li><a accesskey="8" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>:  Einrichten von Benutzern, Gruppen und Datenbanken
98
<li><a accesskey="9" href="#Drucken-mit-Lx_002dOffice">Drucken mit Lx-Office</a>:  Voraussetzungen, Einrichtung und Fehlerdiagnose
99
<li><a href="#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>:  Wichtige Hinweise zum Erstellen und zur Verwendung von Dokumentenvorlagen
100
<li><a href="#Lx_002dOffice-ERP-verwenden">Lx-Office ERP verwenden</a>:  Die URLs zur Anmeldung und Administration
101
</ul>
102

  
103
<!--  -->
104
<div class="node">
105
<p><hr>
106
<a name="Aktuelle-Hinweise"></a>
107
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
108
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Top">Top</a>,
109
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
110

  
111
</div>
112

  
113
<h2 class="chapter">1 Aktuelle Hinweise</h2>
114

  
115
<p>Aktuelle Installations- und Konfigurationshinweise gibt es:
116

  
117
     <ul>
118
<li>auf der Lx-Office Homepage unter <a href="http://lx-office.org/index.php?id=dokumentation">http://lx-office.org/index.php?id=dokumentation</a>
119

  
120
     <li>im Lx-Office-Wiki unter Dokumentation (<a href="http://wiki.lx-office.org/index.php/Lx-Office_ERP">http://wiki.lx-office.org/index.php/Lx-Office_ERP</a>)
121

  
122
     <li>im Lx-Office-Forum: <a href="http://www.lx-office.org/forum/">http://www.lx-office.org/forum/</a>
123
</ul>
124

  
125
<!--  -->
126
<div class="node">
127
<p><hr>
128
<a name="Ben%c3%b6tigte-Software-und-Pakete"></a>
129
<a name="Ben_00c3_00b6tigte-Software-und-Pakete"></a>
130
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
131
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
132
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
133

  
134
</div>
135

  
136
<h2 class="chapter">2 Benötigte Software und Pakete</h2>
137

  
138
<ul class="menu">
139
<li><a accesskey="1" href="#Betriebssystem">Betriebssystem</a>:  Unterstützte Betriebsysteme und Hinweise für ältere Systeme
140
<li><a accesskey="2" href="#Pakete">Pakete</a>:  Benötigte Software und Perlpakete sowie deren Quellen
141
</ul>
142

  
143
<div class="node">
144
<p><hr>
145
<a name="Betriebssystem"></a>
146
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Pakete">Pakete</a>,
147
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
148

  
149
</div>
150

  
151
<h3 class="section">2.1 Betriebssystem</h3>
152

  
153
<p>Lx-Office ist für Linux konzipiert, und sollte auf jedem unixoiden
154
Betriebssystem zum Laufen zu kriegen sein. Getestet ist diese Version im
155
speziellen auf Debian und Ubuntu, grundsätzlich wurde bei der Auswahl der
156
Pakete aber darauf Rücksicht genommen, dass es ohne große Probleme auf den
157
derzeit aktuellen verbreiteten Distributionen läuft.
158

  
159
   <p>Anfang 2011 sind das folgende Systeme:
160

  
161
     <ul>
162
<li>Ubuntu 8.04 LTS Hardy Heron
163
<li>Ubuntu 9.10 Karmic Koala
164
<li>Ubuntu 10.04 Lucid Lynx
165
<li>Ubuntu 10.10 Maverick Meerkat
166
<li>Debian 5.0 Lenny
167
<li>Debian 6.0 Squeeze
168
<li>openSUSE 11.2
169
<li>openSUSE 11.3
170
<li>SuSE Linux Enterprice Server 11
171
<li>Fedora 13
172
<li>Fedora 14
173
</ul>
174

  
175
   <p>Für die debianoiden Betriebssysteme existiert ein .deb, das deutlich einfacher
176
zu installieren ist.
177

  
178
   <p>Ubuntu 8.04 LTS hat zusätzlich die Schwierigkeit, dass die Module im Archiv
179
recht alt sind, und das viele der benötigten Module nicht einfach zu
180
installieren sind. Dafür sollte es kurz nach dem Release ein eigenes .deb
181
geben.
182

  
183
   <p>Alternativ dazu kann die normale Installation durchgeführt werden
184
(siehe <a href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), wenn vorher ein
185
Kompatibilitätspaket installiert wird, das die fehlenden Pakete bereitstellt. 
186
Das Paket ist auf <a href="https://sourceforge.net/projects/lx-office/files/Lx-Office%20ERP/2.6.2/">Sourceforge</a> unter dem Namen <code>lx-erp-perl-libs-compat-v2.tar.gz</code> hinterlegt.
187

  
188
   <p>Zur Installation das Paket in das entpackte Lx-Office Verzeichnis entpacken:
189

  
190
   <p><code>tar xzf lx-erp-perl-libs-compat-v2.tar.gz /path/to/lx-office/</code>
191

  
192
   <p>Zusätzlich müssen dann noch die folgenden Pakete installiert weerden
193

  
194
   <p><code>libbit-vector-perl libsub-exporter-perl libclone-perl libclass-factory-util-perl</code>
195

  
196
   <p>Danach sollte der Installationscheck (siehe <a href="#Pakete">Pakete</a>) die enthaltenen Pakete erkennen.
197

  
198
<div class="node">
199
<p><hr>
200
<a name="Pakete"></a>
201
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Betriebssystem">Betriebssystem</a>,
202
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
203

  
204
</div>
205

  
206
<h3 class="section">2.2 Pakete</h3>
207

  
208
<p>Zum Betrieb von Lx-Office werden zwingend ein Webserver (meist Apache)
209
und ein Datenbankserver (PostgreSQL, mindestens v8.2) benötigt.
210

  
211
   <p>Zusätzlich benötigt Lx-Office die folgenden Perl-Pakete, die nicht Bestandteil
212
einer Standard-Perl-Installation sind:
213

  
214
     <ul>
215
<li>parent
216
<li>Archive::Zip
217
<li>Config::Std
218
<li>DateTime
219
<li>DBI
220
<li>DBD::Pg
221
<li>Email::Address
222
<li>JSON
223
<li>List::MoreUtils
224
<li>Params::Validate
225
<li>PDF::API2
226
<li>Rose::Object
227
<li>Rose::DB
228
<li>Rose::DB::Object
229
<li>Template
230
<li>Text::CSV_XS
231
<li>Text::Iconv
232
<li>URI
233
<li>XML::Writer
234
<li>YAML
235
</ul>
236

  
237
   <p>Gegenüber Version 2.6.0 sind zu dieser Liste 2 Pakete hinzugekommen, <code>URI</code>
238
und <code>XML::Writer</code> sind notwendig. Ohne startet Lx-Office nicht.
239

  
240
   <p>Gegenüber Version 2.6.1 sind <code>parent</code>, <code>DateTime</code>,
241
<code>Rose::Object</code>, <code>Rose::DB</code> und <code>Rose::DB::Object</code> neu
242
hinzugekommen. <code>IO::Wrap</code> wurde entfernt.
243

  
244
   <p>Gegenüber Version 2.6.3 ist <code>JSON</code> neu hinzugekommen.
245

  
246
   <p><code>Email::Address</code> und <code>List::MoreUtils</code> sind schon länger feste
247
Abhängigkeiten, wurden aber bisher mit Lx-Office mitgeliefert.  Beide sind auch
248
in 2.6.1 weiterhin mit ausgeliefert, wurden in einer zukünftigen Version aber
249
aus dem Paket entfernt werden. Es wird empfohlen diese Module zusammen mit den
250
anderen als Bibliotheken zu installieren.
251

  
252
   <p>Die zu installierenden Pakete können in den verschiedenen Distributionen unterschiedlich heißen.
253

  
254
   <p>Für Debian oder Ubuntu benötigen Sie diese Pakete:
255

  
256
   <p><code>apache2 postgresql libparent-perl libarchive-zip-perl libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl libemail-address-perl liblist-moreutils-perl libpdf-api2-perl librose-object-perl librose-db-perl librose-db-object-perl libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl libconfig-std-perl libparams-validate-perl libjson-perl</code>
257

  
258
   <p>Für Fedora Core benötigen Sie diese Pakete:
259

  
260
   <p><code>httpd postgresql-server perl-parent perl-DateTime perl-DBI perl-DBD-Pg perl-Email-Address perl-List-MoreUtils perl-PDF-API2 perl-Rose-Object perl-Rose-DB perl-Rose-DB-Object perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI perl-XML-Writer perl-YAML</code>
261

  
262
   <p>Für OpenSuSE benötigen Sie diese Pakete:
263

  
264
   <p><code>apache2 postgresql-server perl-Archive-Zip perl-DateTime perl-DBI perl-DBD-Pg perl-MailTools perl-List-MoreUtils perl-PDF-API2 perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI perl-XML-Writer perl-YAML</code>
265

  
266
   <p>Bei openSuSE 11 ist <code>parent</code> bereits enthalten, und braucht nicht nachinstalliert werden. Die <code>Rose::*</code> Pakete sind derzeit nicht für SuSE gepackt, und müssen anderweitig nachinstalliert werden.
267

  
268
   <p>Lx-Office enthält ein Script, mit dem überprüft werden kann, ob alle
269
benötigten Perl-Module installiert sind. Der Aufruf lautet wie folgt:
270

  
271
   <p><code>./scripts/installation_check.pl</code>
272

  
273
<!--  -->
274
<div class="node">
275
<p><hr>
276
<a name="Manuelle-Installation-des-Programmpaketes"></a>
277
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
278
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
279
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
280

  
281
</div>
282

  
283
<h2 class="chapter">3 Manuelle Installation des Programmpaketes</h2>
284

  
285
<p>Die Lx-Office ERP Installationsdatei (lxoffice-erp-2.6.2.tgz) wird im
286
Dokumentenverzeichnis des Webservers (z.B. <code>/var/www/html/</code>,
287
<code>/srv/www/htdocs</code> oder <code>/var/www/</code>) entpackt:
288

  
289
   <p><code>cd /var/www
290
<br>
291
tar xvzf lxoffice-erp-2.6.2.tgz</code>
292

  
293
   <p>Verändern Sie evtl. noch den Namen des Verzeichnisses mit
294

  
295
   <p><code>mv lxoffice-erp/ lx-erp/</code>
296

  
297
   <p>Alternativ können Sie auch einen Alias in der Webserverkonfiguration
298
benutzen, um auf das tatsächliche Installationsverzeichnis zu
299
verweisen.
300

  
301
   <p>Die Verzeichnisse <code>users</code>, <code>spool</code> und <code>webdav</code> müssen
302
für den Benutzer beschreibbar sein, unter dem der Webserver läuft. Die
303
restlichen Dateien müssen für diesen Benutzer lesbar sein. Der
304
Benutzername ist bei verschiedenen Distributionen unterschiedlich
305
(z.B. bei Debian/Ubuntu <code>www-data</code>, bei Fedora core <code>apache</code>
306
oder bei OpenSuSE <code>wwwrun</code>).
307

  
308
   <p>Der folgende Befehl ändert den Besitzer für die oben genannten
309
Verzeichnisse auf einem Debian/Ubuntu-System:
310

  
311
   <p><code>chown -R www-data lx-office-erp/users lx-office-erp/spool lx-office-erp/webdav</code>
312

  
313
   <p>Weiterhin muss der Webserver-Benutzer im Verzeichnis <code>templates</code> Verzeichnisse für
314
jeden neuen Benutzer, der in lx-office angelegt wird, anlegen dürfen:
315

  
316
   <p><code>chgrp www-data lx-office-erp/templates; chmod g+w lx-office-erp/templates</code>
317

  
318
<!--  -->
319
<div class="node">
320
<p><hr>
321
<a name="Anpassung-der-PostgreSQL-Konfiguration"></a>
322
<a name="Anpassung-der-PostgreSQL_002dKonfiguration"></a>
323
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Apache_002dKonfiguration">Apache-Konfiguration</a>,
324
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
325
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
326

  
327
</div>
328

  
329
<h2 class="chapter">4 Anpassung der PostgreSQL-Konfiguration</h2>
330

  
331
<p>PostgreSQL muss auf verschiedene Weisen angepasst werden.
332

  
333
<ul class="menu">
334
<li><a accesskey="1" href="#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">Zeichensätze/die Verwendung von UTF-8</a>:  Was bei der Verwendung von UTF-8 zu beachten ist
335
<li><a accesskey="2" href="#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>:  Anpassungen für Anmeldung am Server und Featureunterstützung
336
<li><a accesskey="3" href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>:  Lx-Office benutzt servergespeicherte Prozeduren
337
<li><a accesskey="4" href="#Datenbankbenutzer-anlegen">Datenbankbenutzer anlegen</a>:  Um den Zugriff besser zu reglementieren
338
</ul>
339

  
340
<div class="node">
341
<p><hr>
342
<a name="Zeichens%c3%a4tze%2fdie-Verwendung-von-UTF-8"></a>
343
<a name="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8"></a>
344
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
345
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
346

  
347
</div>
348

  
349
<h3 class="section">4.1 Zeichensätze/die Verwendung von UTF-8</h3>
350

  
351
<p>Lx-Office kann komplett mit UTF-8 als Zeichensatz verwendet
352
werden. Dabei gibt es zwei Punkte zu beachten: PostgreSQL muss in
353
Version 8.0 oder neuer benutzt werden, und der
354
PostgreSQL-Datenbankcluster muss ebenfalls mit UTF-8 als Locale
355
angelegt worden sein.
356

  
357
   <p>Dieses ist kann überprüft werden: ist das Encoding der Datenbank
358
&ldquo;template1&rdquo; &ldquo;UTF8&rdquo;, so kann auch Lx-Office mit UTF-8 betrieben
359
werden. Andernfalls ist es notwendig, einen neuen Datenbankcluster mit
360
UTF-8-Encoding anzulegen und diesen zu verwenden. Unter Debian und
361
Ubuntu kann dies z.B. mit dem folgenden Befehl getan werden:
362

  
363
   <p><code>pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername</code>
364

  
365
   <p>Die Datenbankversionsnummer muss an die tatsächlich verwendete
366
Versionsnummer angepasst werden.
367

  
368
   <p>Unter anderen Distributionen gibt es ähnliche Methoden.
369

  
370
   <p>Wurde PostgreSQL nicht mit UTF-8 als Encoding initialisiert und ist
371
ein Neuanlegen eines weiteren Clusters nicht möglich, so kann
372
Lx-Office mit ISO-8859-15 als Encoding betrieben werden.
373

  
374
   <p>Das Encoding einer Datenbank kann in <code>psql</code> mit <code>\l</code> geprüft werden.
375

  
376
<div class="node">
377
<p><hr>
378
<a name="%c3%84nderungen-an-Konfigurationsdateien"></a>
379
<a name="g_t_00c3_0084nderungen-an-Konfigurationsdateien"></a>
380
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
381
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">Zeichensätze/die Verwendung von UTF-8</a>,
382
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
383

  
384
</div>
385

  
386
<h3 class="section">4.2 Änderungen an Konfigurationsdateien</h3>
387

  
388
<p>In der Datei <code>postgresql.conf</code>, die je nach Distribution in
389
verschiedenen Verzeichnissen liegen kann
390
(z.B. <code>/var/lib/pgsql/data/</code> oder <code>/etc/postgresql/</code>, muss
391
sichergestellt werden, dass TCP/IP-Verbindungen aktiviert sind. Das
392
Verhalten wird über den Parameter <code>listen_address</code>
393
gesteuert. Laufen PostgreSQL und Lx-Office auf demselben Rechner, so
394
kann dort der Wert <code>localhost</code> verwendet werden. Andernfalls
395
müssen Datenbankverbindungen auch von anderen Rechnern aus zugelassen
396
werden, was mit dem Wert \<code>*</code> geschieht.
397

  
398
   <p>In der Datei <code>pg_hba.conf</code>, die im gleichen Verzeichnis wie die
399
<code>postgresql.conf</code> zu finden sein sollte, müssen die
400
Berichtigungen für den Zugriff geändert werden. Hier gibt es mehrere
401
Möglichkeiten. Eine besteht darin, lokale Verbindungen immer
402
zuzulassen
403

  
404
   <p><code>local all all trust
405
<br>
406
host all all 127.0.0.1 255.0.0.0 trust</code>
407

  
408
   <p>Besser ist es, für eine bestimmte Datenbank Zugriff nur per Passwort
409
zuzulassen. Beispielsweise:
410

  
411
   <p><code>local   all         lxoffice                                           password
412
<br>
413
host    all         lxoffice      127.0.0.1         255.255.255.255    password</code>
414

  
415
<!--  -->
416
<div class="node">
417
<p><hr>
418
<a name="Erweiterung-f%c3%bcr-servergespeicherte-Prozeduren"></a>
419
<a name="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren"></a>
420
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Datenbankbenutzer-anlegen">Datenbankbenutzer anlegen</a>,
421
voriges:&nbsp;<a rel="previous" accesskey="p" href="#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
422
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
423

  
424
</div>
425

  
426
<h3 class="section">4.3 Erweiterung für servergespeicherte Prozeduren</h3>
427

  
428
<p>In der Datenbank <code>template1</code> muss die Unterstützung für servergespeicherte
429
Prozeduren eingerichet werden. Melden Sie sich dafür als Benutzer &ldquo;postgres&rdquo;
430
an der Datenbank an, und führen Sie die folgenden Kommandos aus:
431

  
432
   <p><code>create language 'plpgsql';</code>
433

  
434
   <p>Achtung: In älteren Postgresversionen (vor 8.0) muss der Handler für die
435
Sprache manuell anlelegt werden, diese Versionen werden aber nicht mehr
436
offiziell von Lx-Office unterstützt. Dafür dann die folgenden Kommandos:
437

  
438
   <p><code>create function plpgsql_call_handler () returns opaque as '/usr/lib/pgsql/plpgsql.so' language 'c';
439
<br>
440
create language 'plpgsql' handler plpgsql_call_handler lancompiler 'pl/pgsql';</code>
441

  
442
   <p>Bitte beachten Sie, dass der Pfad zur Datei <code>plpgsql.so</code> von Distribution
443
zu Distribution verschiedlich sein kann. Bei Debian/Ubuntu befindet sie sich
444
unter <code>/usr/lib/postgresql/lib/plpgsql.so</code>.
445

  
446
<!--  -->
447
<div class="node">
448
<p><hr>
449
<a name="Datenbankbenutzer-anlegen"></a>
450
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
451
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
452

  
453
</div>
454

  
455
<h3 class="section">4.4 Datenbankbenutzer anlegen</h3>
456

  
457
<p>Wenn Sie nicht den Datenbanksuperuser &ldquo;postgres&rdquo; zum Zugriff
458
benutzen wollen, so sollten Sie bei PostgreSQL einen neuen Benutzer
459
anlegen. Ein Beispiel, wie Sie einen neuen Benutzer anlegen können:
460

  
461
   <p><code>su - postgres
462
<br>
463
createuser -d -P lxoffice</code>
464

  
465
   <p>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern Sie
466
den evtl. voreingestellten Benutzer &ldquo;postgres&rdquo; auf &ldquo;lxoffice&rdquo;
467
bzw. den hier gewählten Benutzernamen.
468

  
469
<!--  -->
470
<div class="node">
471
<p><hr>
472
<a name="Apache-Konfiguration"></a>
473
<a name="Apache_002dKonfiguration"></a>
474
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Der-Task_002dServer">Der Task-Server</a>,
475
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
476
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
477

  
478
</div>
479

  
480
<h2 class="chapter">5 Apache-Konfiguration</h2>
481

  
482
<p>Hinweis: Für einen deutlichen Performanceschub sorgt die Ausführung
483
mittels FCGI. Die Einrichtung wird ausführlich in der Datei
484
<code>INSTALL.fcgi</code> beschrieben.
485

  
486
   <p>Der Zugriff auf das Programmverzeichnis muss in der Apache
487
Webserverkonfigurationsdatei <code>httpd.conf</code> eingestellt
488
werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
489
anderen Datei hinzu, die beim Starten des Webservers eingelesen wird:
490

  
491
   <p><code><br>
492
AddHandler cgi-script .pl
493
<br>
494
Alias /lx-erp/ /var/www/lx-erp/
495
<br>
496
&lt;Directory /var/www/lx-erp&gt;
497
<br>
498
  Options ExecCGI Includes FollowSymlinks
499
<br>
500
&lt;/Directory&gt;
501
<br>
502
<br>
503
&lt;Directory /var/www/lx-erp/users&gt;
504
<br>
505
  Order Deny,Allow
506
<br>
507
  Deny from All
508
<br>
509
&lt;/Directory&gt;
510
<br>
511
</code>
512

  
513
   <p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher das
514
Lx-Office-Archiv entpacket haben.
515

  
516
   <p>Achtung: Vor den einzelnen Optionen muss bei einigen Distributionen ein
517
Plus &lsquo;<samp><span class="samp">+</span></samp>&rsquo; gesetzt werden.
518

  
519
   <p>Auf einigen Webservern werden manchmal die Grafiken und Style-Sheets
520
nicht ausgeliefert. In solchen Fällen hat es oft geholfen, die
521
folgende Option in die Konfiguration aufzunehmen:
522

  
523
   <p><code>EnableSendfile Off</code>
524

  
525
<!--  -->
526
<div class="node">
527
<p><hr>
528
<a name="Der-Task-Server"></a>
529
<a name="Der-Task_002dServer"></a>
530
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
531
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Apache_002dKonfiguration">Apache-Konfiguration</a>,
532
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
533

  
534
</div>
535

  
536
<h2 class="chapter">6 Der Task-Server</h2>
537

  
538
<p>Der Task-Server ist ein Prozess, der im Hintergrund läuft, in
539
regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und diese
540
zu festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser
541
Prozess wird bisher nur für die Erzeugung der wiederkehrenden
542
Rechnungen benutzt, wird aber in Zukunft deutlich mehr Aufgaben
543
übertragen bekommen.
544

  
545
<ul class="menu">
546
<li><a accesskey="1" href="#Konfiguration-des-Task_002dServers">Konfiguration des Task-Servers</a>:  Verfügbare und notwendige Konfigurationsoptionen
547
<li><a accesskey="2" href="#Prozesskontrolle">Prozesskontrolle</a>:  Wie der Task-Server gestartet und beendet wird
548
<li><a accesskey="3" href="#Einbinden-in-den-Boot_002dProzess">Einbinden in den Boot-Prozess</a>:  Automatisches Starten des Task-Servers beim Booten
549
</ul>
550

  
551
<div class="node">
552
<p><hr>
553
<a name="Konfiguration-des-Task-Servers"></a>
554
<a name="Konfiguration-des-Task_002dServers"></a>
555
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Prozesskontrolle">Prozesskontrolle</a>,
556
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Der-Task_002dServer">Der Task-Server</a>
557

  
558
</div>
559

  
560
<h3 class="section">6.1 Verfügbare und notwendige Konfigurationsoptionen</h3>
561

  
562
<p>Die Konfiguration erfolgt über den Abschnitt <code>[task_server]</code> in
563
der Datei <samp><span class="file">config/lx_office.conf</span></samp>. Die dort verfügbaren Optionen
564
sind:
565

  
566
     <ul>
567
<li><code>login</code>: gültiger Lx-Office-Benutzername, der benutzt wird, um die zu verwendende Datenbankverbindung auszulesen. Der Benutzer muss in der Administration angelegt werden. Diese Option muss angegeben werden. 
568
<li><code>run_as</code>: Wird der Server vom Systembenutzer <code>root</code> gestartet, so wechselt er auf den mit <code>run_as</code> angegebenen Systembenutzer. Der Systembenutzer muss dieselben Lese- und Schreibrechte haben, wie auch der Webserverbenutzer (siehe siehe <a href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>). Daher ist es sinnvoll, hier denselben Systembenutzer einzutragen, unter dem auch der Webserver läuft. 
569
<li><code>debug</code>: Schaltet Debug-Informationen an und aus. 
570
</ul>
571

  
572
<div class="node">
573
<p><hr>
574
<a name="Einbinden-in-den-Boot-Prozess"></a>
575
<a name="Einbinden-in-den-Boot_002dProzess"></a>
576
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Prozesskontrolle">Prozesskontrolle</a>,
577
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Der-Task_002dServer">Der Task-Server</a>
578

  
579
</div>
580

  
581
<h3 class="section">6.2 Automatisches Starten des Task-Servers beim Booten</h3>
582

  
583
<p>Der Task-Server verhält sich von seinen Optionen her wie ein reguläres
584
SystemV-kompatibles Boot-Script. Außerdem wechselt er beim Starten
585
automatisch in das Lx-Office-Installationsverzeichnis.
586

  
587
   <p>Deshalb ist es möglich, ihn durch Setzen eines symbolischen Links aus
588
einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
589
einzubinden. Da das bei neueren Linux-Distributionen aber nicht
590
zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
591
anstelle eines symbolischen Links verwendet werden können.
592

  
593
<h4 class="subsection">6.2.1 SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)</h4>
594

  
595
<p>Kopieren Sie die Datei
596
<samp><span class="file">scripts/boot/system-v/lx-office-task-server</span></samp> nach
597
<samp><span class="file">/etc/init.d/lx-office-task-server</span></samp>. Passen Sie in der kopierten
598
Datei den Pfad zum Task-Server an (Zeile <code>DAEMON=....</code>). Binden
599
Sie das Script in den Boot-Prozess ein. Dies ist distributionsabhängig:
600

  
601
     <ul>
602
<li>Debian-basierende Systeme:
603
<br>
604
<code>update-rc.d lx-office-task-server defaults
605
<br>
606
# Nur bei Debian Squeeze und neuer:
607
<br>
608
insserv lx-office-task-server</code>
609
<li>OpenSuSE und Fedora Core:
610
<br>
611
<code>chkconfig --add lx-office-task-server</code>
612
</ul>
613

  
614
   <p>Danach kann der Task-Server mit dem folgenden Befehl gestartet werden:
615
<code>/etc/init.d/lx-office-task-server start</code>
616

  
617
<h4 class="subsection">6.2.2 Upstart-basierende Systeme (z.B. Ubuntu)</h4>
618

  
619
<p>Kopieren Sie die Datei
620
<samp><span class="file">scripts/boot/upstart/lx-office-task-server.conf</span></samp> nach
621
<samp><span class="file">/etc/init/lx-office-task-server.conf</span></samp>. Passen Sie in der kopierten
622
Datei den Pfad zum Task-Server an (Zeile <code>exec ....</code>).
623

  
624
   <p>Danach kann der Task-Server mit dem folgenden Befehl gestartet werden:
625
<code>service lx-office-task-server start</code>
626

  
627
<div class="node">
628
<p><hr>
629
<a name="Prozesskontrolle"></a>
630
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Einbinden-in-den-Boot_002dProzess">Einbinden in den Boot-Prozess</a>,
631
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Konfiguration-des-Task_002dServers">Konfiguration des Task-Servers</a>,
632
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Der-Task_002dServer">Der Task-Server</a>
633

  
634
</div>
635

  
636
<h3 class="section">6.3 Wie der Task-Server gestartet und beendet wird</h3>
637

  
638
<p>Der Task-Server wird wie folgt kontrolliert:
639

  
640
   <p><code>./scripts/task_server.pl Befehl</code>
641

  
642
   <p><code>Befehl</code> ist dabei eine der folgenden Optionen:
643

  
644
     <ul>
645
<li><code>start</code> startet eine neue Instanz des Task-Servers. Die Prozess-ID wird innerhalb des <samp><span class="file">users</span></samp>-Verzeichnisses abgelegt. 
646
<li><code>stop</code> beendet einen laufenden Task-Server. 
647
<li><code>restart</code> beendet und startet ihn neu. 
648
<li><code>status</code> berichtet, ob der Task-Server läuft. 
649
</ul>
650

  
651
   <p>Der Task-Server wechselt beim Starten automatisch in das Lx-Office-Installationsverzeichnis.
652

  
653
   <p>Dieselben Optionen können auch für die SystemV-basierenden
654
Runlevel-Scripte benutzt werden (siehe oben).
655

  
656
<!--  -->
657
<div class="node">
658
<p><hr>
659
<a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>
660
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
661
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Der-Task_002dServer">Der Task-Server</a>,
662
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
663

  
664
</div>
665

  
666
<h2 class="chapter">7 Benutzerauthentifizierung und Administratorpasswort</h2>
667

  
668
<p>Informationen über die Einrichtung der Benutzerauthentifizierung, über
669
die Verwaltung von Gruppen und weitere Einstellungen
670

  
671
<ul class="menu">
672
<li><a accesskey="1" href="#Grundlagen-zur-Benutzerauthentifizierung">Grundlagen zur Benutzerauthentifizierung</a>:  Verfügbare Methoden, Name der Konfigurationsdatei
673
<li><a accesskey="2" href="#Administratorpasswort">Administratorpasswort</a>:  Wo das Administratorpasswort gesetzt werden kann
674
<li><a accesskey="3" href="#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>:  Verbindungseinstellungen zur Authentifizierungsdatenbank
675
<li><a accesskey="4" href="#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>:  Einstellungen zur Überprüfung der Benutzerpasswörter
676
<li><a accesskey="5" href="#Name-des-Session_002dCookies">Name des Session-Cookies</a>:  Ändern des Cookie-Namens bei Verwendung mehrerer Lx-Office-Installationen auf einem Server
677
<li><a accesskey="6" href="#Anlegen-der-Authentifizierungsdatenbank">Anlegen der Authentifizierungsdatenbank</a>:  Wie die Authentifizierungsdatenbank angelegt wird
678
</ul>
679

  
680
<!--  -->
681
<div class="node">
682
<p><hr>
683
<a name="Grundlagen-zur-Benutzerauthentifizierung"></a>
684
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Administratorpasswort">Administratorpasswort</a>,
685
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
686

  
687
</div>
688

  
689
<h3 class="section">7.1 Grundlagen zur Benutzerauthentifizierung</h3>
690

  
691
<p>Lx-Office verwaltet die Benutzerinformationen in einer Datenbank, die
692
im folgenden &ldquo;Authentifizierungsdatenbank&rdquo; genannt wird. Für jeden
693
Benutzer kann dort eine eigene Datenbank für die eigentlichen
694
Finanzdaten hinterlegt sein. Diese beiden Datenbanken können, müssen
695
aber nicht unterschiedlich sein.
696

  
697
   <p>Im einfachsten Fall gibt es für Lx-Office nur eine einzige Datenbank,
698
in der sowohl die Benutzerinformationen als auch die Daten abgelegt
699
werden.
700

  
701
   <p>Zusätzlich ermöglicht es Lx-Office, dass die Benutzerpasswörter
702
entweder gegen die Authentifizierungsdatenbank oder gegen einen
703
LDAP-Server überprüft werden.
704

  
705
   <p>Welche Art der Passwortüberprüfung Lx-Office benutzt und wie Lx-Office
706
die Authentifizierungsdatenbank erreichen kann, wird in der
707
Konfigurationsdatei <samp><span class="file">config/lx_office.conf</span></samp> festgelegt. Diese
708
muss bei der Installation und bei einem Upgrade von einer Version vor
709
v2.6.0 angelegt werden. Eine Beispielkonfigurationsdatei
710
<samp><span class="file">config/lx_office.conf.default</span></samp> existiert, die als Vorlage
711
benutzt werden kann.
712

  
713
<div class="node">
714
<p><hr>
715
<a name="Administratorpasswort"></a>
716
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
717
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Grundlagen-zur-Benutzerauthentifizierung">Grundlagen zur Benutzerauthentifizierung</a>,
718
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
719

  
720
</div>
721

  
722
<h3 class="section">7.2 Administratorpasswort</h3>
723

  
724
<p>Das Passwort, das zum Zugriff auf das Aministrationsinterface benutzt wird,
725
wird ebenfalls in dieser Datei gespeichert. Es kann auch nur dort und nicht
726
mehr im Administrationsinterface selber geändert werden. Der Parameter dazu
727
heißt <code>$self-&gt;{admin_password}</code>.
728

  
729
<div class="node">
730
<p><hr>
731
<a name="Authentifizierungsdatenbank"></a>
732
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
733
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Administratorpasswort">Administratorpasswort</a>,
734
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
735

  
736
</div>
737

  
738
<h3 class="section">7.3 Authentifizierungsdatenbank</h3>
739

  
740
<p>Die Verbindung zur Authentifizierungsdatenbank wird mit den Parametern
741
in <code>$self-&gt;{DB_config}</code> konfiguriert. Hier sind die folgenden
742
Parameter anzugeben:
743

  
744
     <ul>
745
<li>&lsquo;<samp><span class="samp">host</span></samp>&rsquo; &ndash; Der Rechnername oder die IP-Adresse des Datenbankservers
746
<li>&lsquo;<samp><span class="samp">port</span></samp>&rsquo; &ndash; Die Portnummer des Datenbankservers, meist 5432
747
<li>&lsquo;<samp><span class="samp">db</span></samp>&rsquo; &ndash; Der Name der Authentifizierungsdatenbank
748
<li>&lsquo;<samp><span class="samp">user</span></samp>&rsquo; &ndash; Der Benutzername, mit dem sich Lx-Office beim Datenbankserver anmeldet (z.B. &ldquo;postgres&rdquo;)
749
<li>&lsquo;<samp><span class="samp">password</span></samp>&rsquo; &ndash; Das Passwort für den Datenbankbenutzer
750
</ul>
751

  
752
   <p>Die Datenbank muss noch nicht existieren. Lx-Office kann sie
753
automatisch anlegen (mehr dazu siehe unten).
754

  
755
<div class="node">
756
<p><hr>
757
<a name="Passwort%c3%bcberpr%c3%bcfung"></a>
758
<a name="Passwort_00c3_00bcberpr_00c3_00bcfung"></a>
759
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
760
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
761
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
762

  
763
</div>
764

  
765
<h3 class="section">7.4 Passwortüberprüfung</h3>
766

  
767
<p>Lx-Office unterstützt Passwortüberprüfung auf zwei Arten: gegen die
768
Authentifizierungsdatenbank und gegen einen externen LDAP- oder
769
Active-Directory-Server. Welche davon benutzt wird, regelt der
770
Parameter <code>$self-&gt;{module}</code>.
771

  
772
   <p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank
773
gespeichert werden, so muss der Parameter <code>$self-&gt;{module}</code> den
774
Wert &lsquo;<samp><span class="samp">DB</span></samp>&rsquo; enthalten. In diesem Fall können sowohl der
775
Administrator als auch die Benutzer selber ihre Psaswörter in
776
Lx-Office ändern.
777

  
778
   <p>Soll hingegen ein externer LDAP- oder Active-Directory-Server benutzt
779
werden, so muss der Parameter <code>$self-&gt;{module}</code> auf &lsquo;<samp><span class="samp">LDAP</span></samp>&rsquo;
780
gesetzt werden. In diesem Fall müssen zusätzliche Informationen über
781
den LDAP-Server in <code>$self-&gt;{LDAP_config}</code> angegeben werden:
782

  
783
     <ul>
784
<li>&lsquo;<samp><span class="samp">host</span></samp>&rsquo; &ndash; Der Rechnername oder die IP-Adresse des LDAP- oder Active-Directory-Servers. Diese Angabe ist zwingend erforderlich. 
785
<li>&lsquo;<samp><span class="samp">port</span></samp>&rsquo; &ndash; Die Portnummer des LDAP-Servers; meist 389. 
786
<li>&lsquo;<samp><span class="samp">tls</span></samp>&rsquo; &ndash; Wenn Verbindungsverschlüsselung gewünscht ist, so diesen Wert auf &lsquo;<samp><span class="samp">1</span></samp>&rsquo; setzen, andernfalls auf &lsquo;<samp><span class="samp">0</span></samp>&rsquo; belassen
787
<li>&lsquo;<samp><span class="samp">attribute</span></samp>&rsquo; &ndash; Das LDAP-Attribut, in dem der Benutzername steht, den der Benutzer eingegeben hat. Für Active-Directory-Server
788
  ist dies meist &lsquo;<samp><span class="samp">sAMAccountName</span></samp>&rsquo;, für andere LDAP-Server hingegen &lsquo;<samp><span class="samp">uid</span></samp>&rsquo;. Diese Angabe ist zwingend erforderlich. 
789
<li>&lsquo;<samp><span class="samp">base_dn</span></samp>&rsquo; &ndash; Der Abschnitt des LDAP-Baumes, der durchsucht werden soll. Diese Angabe ist zwingend erforderlich. 
790
<li>&lsquo;<samp><span class="samp">filter</span></samp>&rsquo; &ndash; Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort <code>&lt;%login%&gt;</code>, so wird dieses durch den vom Benutzer
791
  eingegebenen Benutzernamen ersetzt. Andernfalls wird der LDAP-Baum nach einem Element durchsucht, bei dem das oben angegebene Attribut
792
  mit dem Benutzernamen identisch ist. 
793
<li>&lsquo;<samp><span class="samp">bind_dn</span></samp>&rsquo; und &lsquo;<samp><span class="samp">bind_password</span></samp>&rsquo; &ndash; Wenn der LDAP-Server eine Anmeldung erfordert, bevor er durchsucht werden kann (z.B. ist dies bei
794
  Active-Directory-Servern der Fall), so kann diese hier angegeben werden. Für Active-Directory-Server kann als &lsquo;<samp><span class="samp">bind_dn</span></samp>&rsquo; entweder eine
795
  komplette LDAP-DN wie z.B. &lsquo;<samp><span class="samp">cn=Martin Mustermann,cn=Users,dc=firmendomain</span></samp>&rsquo; auch nur der volle Name des Benutzers
796
  eingegeben werden; in diesem Beispiel also &lsquo;<samp><span class="samp">Martin Mustermann</span></samp>&rsquo;. 
797
</ul>
798

  
799
<div class="node">
800
<p><hr>
801
<a name="Name-des-Session-Cookies"></a>
802
<a name="Name-des-Session_002dCookies"></a>
803
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Anlegen-der-Authentifizierungsdatenbank">Anlegen der Authentifizierungsdatenbank</a>,
804
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
805
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
806

  
807
</div>
808

  
809
<h3 class="section">7.5 Name des Session-Cookies</h3>
810

  
811
<p>Sollen auf einem Server mehrere Lx-Office-Installationen aufgesetzt
812
werden, so müssen die Namen der Session-Cookies für alle
813
Installationen unterschiedlich sein. Der Name des Cookies wird mit dem
814
Parameter <code>$self-&gt;{cookie_name}</code> gesetzt.
815

  
816
   <p>Diese Angabe ist optional, wenn nur eine Installation auf dem Server
817
existiert.
818

  
819
<div class="node">
820
<p><hr>
821
<a name="Anlegen-der-Authentifizierungsdatenbank"></a>
822
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
823
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
824

  
825
</div>
826

  
827
<h3 class="section">7.6 Anlegen der Authentifizierungsdatenbank</h3>
828

  
829
<p>Nachdem alle Einstellungen in <samp><span class="file">config/lx_office.conf</span></samp>
830
vorgenommen wurden, muss Lx-Office die Authentifizierungsdatenbank
831
anlegen. Dieses geschieht automatisch, wenn Sie sich im
832
Administrationsmodul anmelden, das unter der folgenden URL erreichbar
833
sein sollte:
834

  
835
   <p><a href="http://localhost/lx-erp/admin.pl">http://localhost/lx-erp/admin.pl</a>
836

  
837
<!--  -->
838
<div class="node">
839
<p><hr>
840
<a name="Benutzer--und-Gruppenverwaltung"></a>
841
<a name="Benutzer_002d-und-Gruppenverwaltung"></a>
842
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Drucken-mit-Lx_002dOffice">Drucken mit Lx-Office</a>,
843
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
844
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
845

  
846
</div>
847

  
848
<h2 class="chapter">8 Benutzer- und Gruppenverwaltung</h2>
849

  
850
<p>Nach der Installation müssen Benutzer, Gruppen und Datenbanken
851
angelegt werden.  Dieses geschieht im Administrationsmenü, das Sie
852
unter folgender URL finden:
853

  
854
   <p><a href="http://localhost/lx-erp/admin.pl">http://localhost/lx-erp/admin.pl</a>
855

  
856
   <p>Verwenden Sie zur Anmeldung das Password, dass Sie in der Datei
857
<samp><span class="file">config/lx_office.conf</span></samp> eingetragen haben.
858

  
859
<ul class="menu">
860
<li><a accesskey="1" href="#Zusammenh_00c3_00a4nge">Zusammenhänge</a>:  Übersicht über Benutzer, Gruppen, Berechtigungen und Datenbanken
861
<li><a accesskey="2" href="#Datenbanken-anlegen">Datenbanken anlegen</a>:  Hinweise zum Anlegen von Datenbanken
862
<li><a accesskey="3" href="#Gruppen-anlegen">Gruppen anlegen</a>:  Hinweise zum Anlegen von Gruppen
863
<li><a accesskey="4" href="#Benutzer-anlegen">Benutzer anlegen</a>:  Hinweise zum Anlegen von Benutzern
864
<li><a accesskey="5" href="#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>:  Wie man Gruppen Benutzer zuordnet
865
<li><a accesskey="6" href="#Migration-alter-Installationen">Migration alter Installationen</a>:  Automatische Übernahme bei Update von einer älteren Version
866
</ul>
867

  
868
<div class="node">
869
<p><hr>
870
<a name="Zusammenh%c3%a4nge"></a>
871
<a name="Zusammenh_00c3_00a4nge"></a>
872
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Datenbanken-anlegen">Datenbanken anlegen</a>,
873
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
874

  
875
</div>
876

  
877
<h3 class="section">8.1 Zusammenhänge</h3>
878

  
879
<p>Lx-Office verwendet eine Datenbank zum Speichern all seiner
880
Informationen wie Kundendaten, Artikel, Angebote, Rechnungen etc. Um
881
mit Lx-Office arbeiten zu können, muss eine Person einen
882
Benutzeraccount haben. Jedem Benutzeraccount wiederum wird genau eine
883
Datenbank zugewiesen, mit der dieser Benutzer arbeiten kann. Es ist
884
möglich und normal, dass mehreren Benutzern die selbe Datenbank
885
zugewiesen wird, sodass sie alle mit den selben Daten arbeiten können.
886

  
887
   <p>Die Basisdaten der Benutzer, die in der Administration eingegeben
888
werden können, werden in einer zweiten Datenbank gespeichert, der
889
bereits erwähnten Authentifizierungsdatenbank. Diese ist also den
890
Produktivdaten enthaltenden Datenbanken vorgeschaltet. Pro
891
Lx-Office-Installation gibt es nur eine Authentifizierungsdatenbank,
892
aber beliebig viele Datenbanken mit Firmendaten.
893

  
894
   <p>Lx-Office kann seinen Benutzern Zugriff auf bestimmte
895
Funktionsbereiche erlauben oder verbieten. Wird der Zugriff nicht
896
gestattet, so werden der entsprechenden Menüpunkte auch nicht
897
angezeigt. Diese Rechte werden ebenfalls in der
898
Authentifizierungsdatenbank gespeichert.
899

  
900
   <p>Um Rechte verteilen zu können, verwendet Lx-Office ein
901
Gruppen-Prinzip. Einer Gruppe kann der Zugriff auf bestimmte Bereiche
902
erlaubt werden. Ein Benutzer wiederum kann Mitglied in einer oder
903
mehrerer Gruppen sein. Der Benutzer hat Zugriff auf alle diejenigen
904
Funktionen, die mindestens einer Gruppe erlaubt sind, in der der
905
Benutzer Mitglied ist.
906

  
907
   <p>Die allgemeine Reihenfolge, in der Datenbanken, Gruppen und Benutzer
908
angelegt werden sollten, lautet:
909

  
910
     <ol type=1 start=1>
911
<li>Datenbank anlegen
912
<li>Gruppen anlegen
913
<li>Benutzer anlegen
914
<li>Benutzer den Gruppen zuordnen
915
        </ol>
916

  
917
<div class="node">
918
<p><hr>
919
<a name="Datenbanken-anlegen"></a>
920
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Gruppen-anlegen">Gruppen anlegen</a>,
921
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Zusammenh_00c3_00a4nge">Zusammenhänge</a>,
922
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
923

  
924
</div>
925

  
926
<h3 class="section">8.2 Datenbanken anlegen</h3>
927

  
928
<p>Zuerst muss eine Datenbank angelegt werden. Verwenden Sie für den
929
Datenbankzugriff den vorhin angelegten Benutzer (in unseren Beispielen
930
ist dies &lsquo;<samp><span class="samp">lxoffice</span></samp>&rsquo;).
931

  
932
   <p>Wenn Sie für die Lx-Office-Installation nicht den europäischen
933
Schriftsatz ISO-8859-15 sondern UTF-8 (Unicode) benutzen wollen, so
934
müssen Sie vor dem Anlegen der Datenbank in der Datei
935
<samp><span class="file">config/lx_office.conf</span></samp> die Variable <code>dbcharset</code> im
936
Abschnitt <code>system</code> auf den Wert &lsquo;<samp><span class="samp">UTF-8</span></samp>&rsquo; setzen. Zusätzlich
937
muss beim Anlegen der Datenbank &lsquo;<samp><span class="samp">UTF-8 Unicode</span></samp>&rsquo; als Schriftsatz
938
ausgewählt werden.
939

  
940
   <p>Bitte beachten Sie, dass alle Datenbanken den selben Zeichensatz
941
verwenden müssen, da diese Einstellungen momentan global in Lx-Office
942
vorgenommen wird und nicht nach Datenbank unterschieden werden
943
kann. Auch die Authentifizierungsdatenbank muss mit diesem Zeichensatz
944
angelegt worden sein.
945

  
946
<div class="node">
947
<p><hr>
948
<a name="Gruppen-anlegen"></a>
949
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Benutzer-anlegen">Benutzer anlegen</a>,
950
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Datenbanken-anlegen">Datenbanken anlegen</a>,
951
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
952

  
953
</div>
954

  
955
<h3 class="section">8.3 Gruppen anlegen</h3>
956

  
957
<p>Eine Gruppe wird in der Gruppenverwaltung angelegt. Ihr muss ein Name
958
gegeben werden, eine Beschreibung ist hingegen optional. Nach dem
959
Anlegen können Sie die verschiedenen Bereiche wählen, auf die
960
Mitglieder dieser Gruppe Zugriff haben sollen.
961

  
962
   <p>Benutzergruppen sind unabhängig von Datenbanken, da sie in der
963
Authentifizierungsdatenbank gespeichert werden. Sie gelten für alle
964
Datenbanken, die in dieser Installation verwaltet werden.
965

  
966
<div class="node">
967
<p><hr>
968
<a name="Benutzer-anlegen"></a>
969
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
970
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Gruppen-anlegen">Gruppen anlegen</a>,
971
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
972

  
973
</div>
974

  
975
<h3 class="section">8.4 Benutzer anlegen</h3>
976

  
977
<p>Beim Anlegen von Benutzern werden für viele Parameter
978
Standardeinstellungen vorgenommen, die den Gepflogenheiten des
979
deutschen Raumes entsprechen.
980

  
981
   <p>Zwingend anzugeben sind der Loginname sowie die komplette
982
Datenbankkonfiguration. Wenn die Passwortauthentifizierung über die
983
Datenbank eingestellt ist, so kann hier auch das Benutzerpasswort
984
gesetzt bzw. geändert werden. Ist hingegen die LDAP-Authentifizierung
985
aktiv, so ist das Passwort-Feld deaktiviert.
986

  
987
   <p>In der Datenbankkonfiguration müssen die Zugriffsdaten einer der eben
988
angelegten Datenbanken eingetragen werden.
989

  
990
<div class="node">
991
<p><hr>
992
<a name="Gruppenmitgliedschaften-verwalten"></a>
993
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Migration-alter-Installationen">Migration alter Installationen</a>,
994
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Benutzer-anlegen">Benutzer anlegen</a>,
995
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
996

  
997
</div>
998

  
999
<h3 class="section">8.5 Gruppenmitgliedschaften verwalten</h3>
1000

  
1001
<p>Nach dem Anlegen von Benutzern und Gruppen müssen Benutzer den Gruppen
1002
zugewiesen werden. Dazu gibt es zwei Möglichkeiten:
1003

  
1004
     <ol type=1 start=1>
1005
<li>In der Gruppenverwaltung wählt man eine Gruppe aus. Im folgenden
1006
Dialog kann man dann einzeln die Benutzer der Gruppe hinzufügen. 
1007
<li>In der Gruppenverwaltung wählt man das Tool zur Verwaltung der
1008
Gruppenmitgliedschaft. Hier wird eine Matrix angezeigt, die alle im
1009
System angelegten Gruppen und Benutzer enthält. Durch Setzen der
1010
Häkchen wird der Benutzer in der ausgewählten Zeile der Gruppe in der
1011
ausgewählten Spalte hinzugefügt.
1012
        </ol>
1013

  
1014
<div class="node">
1015
<p><hr>
1016
<a name="Migration-alter-Installationen"></a>
1017
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
1018
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
1019

  
1020
</div>
... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.

Auch abrufbar als: Unified diff