Revision 7ee506b3
Von Moritz Bunkus vor etwa 13 Jahren hinzugefügt
doc/20111013_globale_variablen.txt | ||
---|---|---|
nachdem Holger heute den Bug eingestellt hat den ich schon lange befürchtet
|
||
habe, bin ich heute mal die globalen Variablen angegangen. Das ganze ist über
|
||
die Jahre leider recht komfus geworden, deshalb hier ne Erklärung, die
|
||
hoffentlich sowas in Zukunft vermeidet.
|
||
|
||
|
||
Wie sehen globale Variablen in Perl aus?
|
||
----------------------------------------
|
||
|
||
Globale Variablen liegen in einem speziellen namespace namens "main", der von
|
||
überall erreichbar ist. Darüber hinaus sind bareword globs global und die
|
||
meisten speziellen Variablen sind... speziell.
|
||
|
||
Daraus ergeben sich folgende Formen:
|
||
|
||
$main::form - expliziter namespace main
|
||
$::form - impliziter namespace main
|
||
open FILE, "file.txt" - FILE ist global
|
||
$_ - speziell.
|
||
|
||
(Ja, da fehlen noch ein paar Sachen, ich weiß)
|
||
|
||
Im Gegensatz zu PHP gibt es kein Schlüsselwort wir "global" mit dem man
|
||
importieren kann, my, our und local machen was anderes.
|
||
|
||
my $form - lexikalische Variable, gültig bis zum Ende des scopes
|
||
our $form - $form referenziert ab hier $PACKAGE::form.
|
||
local $form - Alle Änderungen an $form werden am Ende des scopes zurückgesetzt
|
||
|
||
Warum ist das ein Problem?
|
||
--------------------------
|
||
|
||
Das erste Problem ist FCGI.
|
||
|
||
sql-ledger hat fast alles im globalen namespace abgelegt, und erwartet, dass es
|
||
da auch wiederzufinden ist. Unter FCGI müssen diese Sachen auch wieder
|
||
aufgeräumt werden, damit sie nicht in den nächsten Request kommen. Einige
|
||
Sachen wiederum sollen nicht gelöscht werden, wie zum Beispiel
|
||
Datenbankverbindungen, weil die ne Ewigkeit zum initialisieren brauchen.
|
||
|
||
Das zweite Problem ist strict.
|
||
|
||
Unter strict werden alle Variablen die nicht explizit mit Package, my oder our
|
||
angegeben werden als Tippfehler angemarkert, was einen vor so mancher Stunde
|
||
suchen nach einem Bug erspart. Da globale Variablen aber implizit mit Package
|
||
angegeben werden, werden die nicht geprüft, und ein Tippfehler da fällt
|
||
niemandem auf.
|
||
|
||
Kanonische globale Variablen
|
||
----------------------------
|
||
|
||
Um dieses Problem im Griff zu halten gibt es einige wenige globale Variablen,
|
||
die kanonisch sind, und alles andere sollte anderweitig umhergereicht werden.
|
||
|
||
Diese Variablen sind im Moment die folgenden neun:
|
||
|
||
$::form
|
||
%::myconfig
|
||
$::locale
|
||
$::lxdebug
|
||
$::auth
|
||
$::lx_office_conf
|
||
$::instance_conf
|
||
$::dispatcher
|
||
$::request
|
||
|
||
Damit diese nicht als Müllhalde misbrauch werden, im Folgenden eine kurze
|
||
Erläuterung was man von denn erwarten kann.
|
||
|
||
|
||
$::form
|
||
|
||
- Ist ein Objekt der Klasse "Form"
|
||
- Wird nach jedem Request gelöscht
|
||
- Muss auch in Tests und Konsolenscripts vorhanden sein.
|
||
- Enthält am Anfang eines Requests die Requestparameter vom User
|
||
- Kann zwar intern über Requestgrenzen ein Datenbankhandle cachen, das wird
|
||
aber momentan absichtlich zerstört
|
||
|
||
$::form wurde unter sql ledger als Gottobjekt für alles misbraucht. Sämtliche alten
|
||
Funktionen unter SL/ mutieren $::form, das heißt, alles was einem lieb ist,
|
||
sollte man vor einem Aufruf von zum Beispiel IS->retrieve_customer in Sicherheit bringen.
|
||
|
||
Das Objekt der Klasse Form hat leider im Moment noch viele zentrale Funktionen
|
||
Gdie vom internen Zustand abhängen, deshalb bitte nie einfach zerstören oder
|
||
überschreiben. Es geht ziemlich sicher etwas kaputt.
|
||
|
||
$::form ist gleichzeitig der Standard Scope in den Template::Toolkit Templates
|
||
ausserhalb der Controller, der Ausdruck [% var %] greift auf $::form->{var} zu.
|
||
Unter Controllern ist der Standard Scope anders, da lautet der Zugriff [%
|
||
FORM.var %]. In Druckvorlagen sind normale Variablen ebenfall im $::form Scope,
|
||
d.h. <%var%> zeigt auf $::form->{var}. Innerhalb von Schleifen
|
||
wird $::form->{TEMPLATE_ARRAYS}{var}[$index] bevorzugt wenn vorhanden.
|
||
|
||
|
||
%::myconfig
|
||
|
||
- Das einzige Hash unter den globalen Variablen
|
||
- Wird spätestens benötigt wenn auf die Datenbank zugegriffen wird
|
||
- Wird bei jedem Request neu erstellt.
|
||
- Enthält die Userdaten des aktuellen Logins
|
||
- Sollte nicht ohne Filterung irgendwo gedumpt werden oder extern serialisiert
|
||
werden, weil da auch der Datenbankzugriff für diesen user drinsteht.
|
||
- Enthält unter anderem Listenbegrenzung vclimit, Datumsformat dateformat und
|
||
Nummernformat numberformat
|
||
- Enthält Datenbankzugriffinformationen
|
||
|
||
%::myconfig ist im Moment der Ersatz für ein Userobjekt. Die meisten Funktionen,
|
||
die etwas anhand des aktuellen Users entscheiden müssen befragen %::myconfig.
|
||
|
||
|
||
$::locale
|
||
|
||
- Objekt der Klasse "Locale"
|
||
- Wird pro Request erstellt
|
||
- Muss auch für Tests und Scripte immer verfügbar sein.
|
||
- Cached intern über Requestgrenzen hinweg benutzte Locales
|
||
|
||
Lokalisierung für den aktuellen User. Alle Übersetzungen, Zahlen- und
|
||
Datumsformatierungen laufen über dieses Objekt.
|
||
|
||
|
||
$::lxdebug
|
||
|
||
- Objekt der Klasse "LXDebug"
|
||
- Wird global gecached
|
||
- Muss immer verfügbar sein, in nahezu allen Funktionen
|
||
|
||
$::lxdebug stellt Debuggingfunktionen bereit, wie "enter_sub" und "leave_sub",
|
||
mit denen in den alten Modulen ein brauchbares Tracing gebaut ist, "log_time",
|
||
mit der man die Wallclockzeit seit Requeststart loggen kann, und "message" und
|
||
"dump" mit denen man flott Informationen ins Log packen kann.
|
||
|
||
|
||
$::auth
|
||
|
||
- Objekt der Klasse "SL::Auth"
|
||
- Wird global gecached
|
||
- Hat eine permanente DB Verbindung zur Authdatenbank
|
||
- Wird nach jedem Request resettet.
|
||
|
||
$::auth stellt Funktionen bereit um die Rechte des aktuellen Users abzufragen.
|
||
Obwohl diese Informationen vom aktuellen User abhängen wird das Objekt aus
|
||
Geschwindigkeitsgründen nur einmal angelegt und dann nach jedem Request kurz
|
||
resettet.
|
||
|
||
|
||
$::lx_office_conf
|
||
|
||
- Objekt der Klasse "SL::LxOfficeConf"
|
||
- Global gecached
|
||
- Repräsentation der config/lx_office.conf[.default] Dateien
|
||
|
||
Globale Konfiguration.
|
||
|
||
Configdateien werden zum Start gelesen, und nicht mehr angefasst. Es ist
|
||
derzeit nicht geplant, dass das Programm die Konfiguration ändern kann oder
|
||
sollte.
|
||
|
||
Der Konfigurationskey
|
||
|
||
[Debug]
|
||
|
||
file = /tmp/lxoffice_debug_log.txt
|
||
|
||
ist im Programm als $::lx_office_conf->{Debug}{file} erreichbar.
|
||
|
||
Warnung: Zugriff auf die Konfiguration erfolgt im Moment über Hashkeys, sind
|
||
also nicht gegen Tippfehler abgesichert.
|
||
|
||
|
||
$::instance_conf
|
||
|
||
- Objekt der Klasse "SL::InstanceConfiguration"
|
||
- wird pro Request neu erstellt.
|
||
|
||
Funktioniert wie $::lx_office_conf, speichert aber Daten die von der Instanz
|
||
abhängig sind. Eine Instanz ist hier eine Mandantendatenbank. Prominentestes
|
||
Datum ist "eur", die Information ob Bilanz oder Einnahmenüberschussrechnung
|
||
gemacht wird.
|
||
|
||
|
||
|
||
$::dispatcher
|
||
|
||
- Objekt der Klasse "SL::Dispatcher"
|
||
- wird pro Serverprozess erstellt.
|
||
- enthält Informationen über die technische Verbindung zum Server
|
||
|
||
Der dritte Punkt ist auch der einzige Grund warum das Objekt global gespeichert
|
||
wird. Wird vermutlich irgendwann in einem anderen Objekt untergebracht.
|
||
|
||
|
||
|
||
$::request
|
||
|
||
- Hashref (evtl später Objekt)
|
||
- Wird pro Request neu initialisiert.
|
||
- Keine Unterstruktur garantiert.
|
||
|
||
$::request ist ein generischer Platz um Daten "für den aktuellen Request"
|
||
abzulegen. Sollte nicht für action at a distance benutzt werden, sondern um
|
||
lokales memoizing zu ermöglichen, das garantiert am Ende des Requests zerstört
|
||
wird.
|
||
|
||
Vieles von dem was im moment in $::form liegt sollte eigentlich hier liegen.
|
||
Die groben Differentialkriterien sind:
|
||
|
||
- Kommt es vom User, und soll unverändert wieder an den User?
|
||
=> $::form, steht da eh schon
|
||
|
||
- Sind es Daten aus der Datenbank, die nur bis zum Ende des Requests gebraucht werden?
|
||
=> $::request
|
||
|
||
- Muss ich von anderen Teilen des Programms lesend drauf zugreifen?
|
||
=> $::request, aber Zugriff über Wrappermethode
|
||
|
||
|
||
|
||
|
||
Ehemalige globale Variablen
|
||
---------------------------
|
||
|
||
Die folgenden Variablen waren einmal im Programm, und wurden entfernt.
|
||
|
||
|
||
$::cgi
|
||
|
||
- war nötig, weil cookie Methoden nicht als Klassenfunktionen funktionieren
|
||
- Aufruf als Klasse erzeugt Dummyobjekt was im Klassennamespace gehalten wird
|
||
und über Requestgrenzen leaked
|
||
- liegt jetzt unter $::request->{cgi}
|
||
|
||
|
||
$::all_units
|
||
|
||
- war nötig, weil einige Funktionen in Schleifen zum Teil ein paar hundert mal
|
||
pro Request eine Liste der Einheiten brauchen, und die als Parameter durch
|
||
einen Riesenstack von Funktionen geschleift werden müssten.
|
||
- Liegt jetzt unter $::request->{cache}{all_units}
|
||
- Wird nur in AM->retrieve_all_units gesetzt oder gelesen.
|
||
|
||
|
||
%::called_subs
|
||
|
||
- wurde benutzt um callsub deep recursions abzufangen.
|
||
- Wurde entfernt, weil callsub nur einen Bruchteil der möglichen Rekursioenen
|
||
darstellt, und da nie welche auftreten.
|
||
- komplette recursion protection wurde entfernt.
|
doc/INSTALL.fcgi | ||
---|---|---|
|
||
Diese Datei ist in Plain Old Documentation geschrieben. Mit
|
||
|
||
> perldoc INSTALL.fcgi
|
||
|
||
ist sie deutlich leichter zu lesen.
|
||
|
||
=encoding utf8
|
||
|
||
=head1 FastCGI für Lx-Office
|
||
|
||
=head2 Was ist FastCGI?
|
||
|
||
Direkt aus L<http://de.wikipedia.org/wiki/FastCGI> kopiert:
|
||
|
||
FastCGI ist ein Standard für die Einbindung externer Software zur Generierung
|
||
dynamischer Webseiten in einem Webserver. FastCGI ist vergleichbar zum Common
|
||
Gateway Interface (CGI), wurde jedoch entwickelt, um dessen
|
||
Performance-Probleme zu umgehen.
|
||
|
||
|
||
=head2 Warum FastCGI?
|
||
|
||
Perl Programme (wie Lx-Office eines ist) werden nicht statisch kompiliert.
|
||
Stattdessen werden die Quelldateien bei jedem Start übersetzt, was bei kurzen
|
||
Laufzeiten einen Großteil der Laufzeit ausmacht. Während SQL Ledger einen
|
||
Großteil der Funktionalität in einzelne Module kapselt, um immer nur einen
|
||
kleinen Teil laden zu müssen, ist die Funktionalität von Lx-Office soweit
|
||
gewachsen, dass immer mehr Module auf den Rest des Programms zugreifen.
|
||
Zusätzlich benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
|
||
entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies führt dazu dass
|
||
ein Lx-Office Aufruf der Kernmasken mittlerweile deutlich länger dauert als
|
||
früher, und dass davon 90% für das Laden der Module verwendet wird.
|
||
|
||
Mit FastCGI werden nun die Module einmal geladen, und danach wird nur die
|
||
eigentliche Programmlogik ausgeführt.
|
||
|
||
=head2 Kombinationen aus Webservern und Plugin.
|
||
|
||
Folgende Kombinationen sind getestet:
|
||
|
||
* Apache 2.2.11 (Ubuntu) und mod_fcgid.
|
||
* Apache 2.2.11 (Ubuntu) und mod_fastcgi.
|
||
|
||
Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer Zeit
|
||
nicht mehr weiter entwickelt wird.
|
||
|
||
Als Perl Backend wird das Modul FCGI.pm verwendet. Vorsicht: FCGI 0.69 und
|
||
höher ist extrem strict in der Behandlung von Unicode, und verweigert bestimmte
|
||
Eingaben von Lx-Office. Solange diese Probleme nicht behoben sind, muss auf die
|
||
Vorgängerversion FCGI 0.68 ausgewichen werden.
|
||
|
||
Mit cpan lässt sie sich wie folgt installieren:
|
||
|
||
force install M/MS/MSTROUT/FCGI-0.68.tar.gz
|
||
|
||
=head2 Konfiguration des Webservers.
|
||
|
||
Bevor Sie versuchen eine Lx-Office Installation unter FCGI laufen zu lassen,
|
||
empfliehlt es sich die Installation ersteinmal unter CGI aufzusetzen. FCGI
|
||
macht es nicht einfach Fehler zu debuggen die beim ersten aufsetzen auftreten
|
||
können. Sollte die Installation schon funktionieren, lesen Sie weiter.
|
||
|
||
Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann unter
|
||
Debian/Ubuntu z.B. mit folgendem Befehl geschehen:
|
||
|
||
a2enmod fcgid
|
||
|
||
bzw.
|
||
|
||
a2enmod fastcgi
|
||
|
||
Die Konfiguration für die Verwendung von Lx-Office mit FastCGI erfolgt
|
||
durch Anpassung der vorhandenen Alias- und Directory-Direktiven. Dabei
|
||
wird zwischen dem Installationspfad von Lx-Office im Dateisystem
|
||
("/path/to/lx-office-erp") und der URL unterschieden, unter der
|
||
Lx-Office im Webbrowser erreichbar ist ("/web/path/to/lx-office-erp").
|
||
|
||
Folgendes Template funktioniert mit mod_fastcgi:
|
||
|
||
AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi
|
||
Alias /web/path/to/lx-office-erp/ /path/to/lx-office-erp/
|
||
|
||
<Directory /path/to/lx-office-erp>
|
||
AllowOverride All
|
||
Options ExecCGI Includes FollowSymlinks
|
||
Order Allow,Deny
|
||
Allow from All
|
||
</Directory>
|
||
|
||
<DirectoryMatch /path/to/lx-office-erp/users>
|
||
Order Deny,Allow
|
||
Deny from All
|
||
</DirectoryMatch>
|
||
|
||
Für mod_fcgid muss ein AddHandler ergänzt werden und die erste Zeile geändert werden:
|
||
|
||
AddHandler fcgid-script .fpl
|
||
AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
|
||
|
||
Seit mod_fcgid-Version 2.6.3 gelten sehr kleine Grenzen für die
|
||
maximale Größe eines Requests. Diese sollte wie folgt hochgesetzt werden:
|
||
|
||
FcgidMaxRequestLen 10485760
|
||
|
||
Das ganze sollte dann so aussehen:
|
||
|
||
AddHandler fcgid-script .fpl
|
||
AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
|
||
Alias /web/path/to/lx-office-erp/ /path/to/lx-office-erp/
|
||
FcgidMaxRequestLen 10485760
|
||
|
||
<Directory /path/to/lx-office-erp>
|
||
AllowOverride All
|
||
Options ExecCGI Includes FollowSymlinks
|
||
Order Allow,Deny
|
||
Allow from All
|
||
</Directory>
|
||
|
||
<DirectoryMatch /path/to/lx-office-erp/users>
|
||
Order Deny,Allow
|
||
Deny from All
|
||
</DirectoryMatch>
|
||
|
||
Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle Zugriffe
|
||
auf die einzelnen Scripte werden auf diesen umgeleitet. Dadurch, dass
|
||
zur Laufzeit öfter mal Scripte neu geladen werden, gibt es hier kleine
|
||
Performance-Einbußen.
|
||
|
||
|
||
Es ist möglich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu
|
||
betreiben. Dafür bleiben die Directorydirektiven wie oben beschrieben, die URLs
|
||
werden aber umgeleitet:
|
||
|
||
# Zugriff über cgi
|
||
Alias /web/path/to/lx-office-erp /path/to/lx-office-erp
|
||
|
||
# Zugriff mit mod_fcgid:
|
||
AliasMatch ^/web/path/to/lx-office-erp-fcgid/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
|
||
Alias /web/path/to/lx-office-erp-fcgid/ /path/to/lx-office-erp/
|
||
|
||
# Zugriff mit mod_fastcgi:
|
||
AliasMatch ^/web/path/to/lx-office-erp-fastcgi/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi
|
||
Alias /web/path/to/lx-office-erp-fastcgi/ /path/to/lx-office-erp/
|
||
|
||
Dann ist unter C</web/path/to/lx-office-erp/> die normale Version erreichbar,
|
||
und unter C</web/path/to/lx-office-erp-fcgid/> bzw.
|
||
C</web/path/to/lx-office-erp-fastcgi/> die FastCGI Version.
|
||
|
||
=head2 Entwicklungsaspekte
|
||
|
||
Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, muss der
|
||
Webserver neu gestartet werden.
|
||
|
||
Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu achten. Dadurch
|
||
dass das Programm in einer Endlosschleife läuft, müssen folgende Aspekte
|
||
geachtet werden:
|
||
|
||
=head3 Programmende und Ausnahmen: C<warn>, C<die>, C<exit>, C<carp>, C<confess>
|
||
|
||
Fehler, die dass Programm normalerweise sofort beenden (fatale Fehler), werden
|
||
mit dem FastCGI Dispatcher abgefangen, um das Programm am Laufen zu halten. Man
|
||
kann mit C<die>, C<confess> oder C<carp> Fehler ausgeben, die dann vom Dispatcher
|
||
angezeigt werden. Die Lx-Office eigene C<$::form->error()> tut im Prinzip das
|
||
Gleiche, mit ein paar Extraoptionen. C<warn> und C<exit> hingegen werden nicht
|
||
abgefangen. C<warn> wird direkt nach STDERR, also in Server Log eine Nachricht
|
||
schreiben (sofern in der Konfiguration nicht die Warnungen in das Lx-Office Log
|
||
umgeleitet wurden), und C<exit> wird die Ausführung beenden.
|
||
|
||
Prinzipiell ist es kein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn
|
||
sofort neu starten. Allerdings sollte das die Ausnahme sein. Quintessenz: Bitte
|
||
kein C<exit> benutzen, alle anderen Exceptionmechanismen sind ok.
|
||
|
||
=head3 Globale Variablen
|
||
|
||
Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen,
|
||
müssen alle globalen Variablen vor einem Request sauber initialisiert werden.
|
||
Das ist besonders wichtig im C<$::cgi> und C<$::auth> Objekt, weil diese nicht
|
||
gelöscht werden pro Instanz, sondern persistent gehalten werden.
|
||
|
||
In C<SL::Dispatcher> gibt es einen sauber abgetrennten Block der alle
|
||
kanonischen globalen Variablen listet und erklärt. Bitte keine anderen
|
||
einführen ohne das sauber zu dokumentieren.
|
||
|
||
Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sicher geht,
|
||
dass man die richtige erwischt.
|
||
|
||
=head2 Performance und Statistiken
|
||
|
||
Die kritischen Pfade des Programms sind die Belegmasken, und unter diesen ganz
|
||
besonders die Verkaufsrechnungsmaske. Ein Aufruf der Rechnungsmaske in
|
||
Lx-Office 2.4.3 stable dauert auf einem Core2duo mit 4GB Arbeitsspeicher und
|
||
Ubuntu 9.10 eine halbe Sekunde. In der 2.6.0 sind es je nach Menge der
|
||
definierten Variablen 1-2s. Ab der Moose/Rose::DB Version sind es 5-6s.
|
||
|
||
Mit FastCGI ist die neuste Version auf 0,26 Sekunden selbst in den kritischen
|
||
Pfaden, unter 0,15 sonst.
|
||
|
||
=head2 Bekannte Probleme
|
||
|
||
=head3 Encoding Awareness
|
||
|
||
UTF-8 kodierte Installationen sind sehr anfällig gegen fehlerhfate Encodings
|
||
unter FCGI. latin9 Installationen behandeln falsch kodierte Zeichen eher
|
||
unwissend, und geben sie einfach weiter. UTF-8 verweigert bei fehlerhaften
|
||
Programmpfaden kurzerhand das Ausliefern. Es wird noch daran gearbeitet, alle
|
||
Fehler da zu beseitigen.
|
||
|
doc/INSTALL.html | ||
---|---|---|
<html lang="en">
|
||
<head>
|
||
<title>Lx-Office Installationsanleitung</title>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
<meta name="description" content="Lx-Office Installationsanleitung">
|
||
<meta name="generator" content="makeinfo 4.11">
|
||
<link title="Top" rel="top" href="#Top">
|
||
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||
<style type="text/css"><!--
|
||
pre.display { font-family:inherit }
|
||
pre.format { font-family:inherit }
|
||
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||
pre.smallformat { font-family:inherit; font-size:smaller }
|
||
pre.smallexample { font-size:smaller }
|
||
pre.smalllisp { font-size:smaller }
|
||
span.sc { font-variant:small-caps }
|
||
span.roman { font-family:serif; font-weight:normal; }
|
||
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||
--></style>
|
||
</head>
|
||
<body>
|
||
<h1 class="settitle">Lx-Office Installationsanleitung</h1>
|
||
<div class="contents">
|
||
<h2>Table of Contents</h2>
|
||
<ul>
|
||
<li><a name="toc_Top" href="#Top">Inhalt der Anleitung</a>
|
||
<li><a name="toc_Aktuelle-Hinweise" href="#Aktuelle-Hinweise">1 Aktuelle Hinweise</a>
|
||
<li><a name="toc_Ben_00c3_00b6tigte-Software-und-Pakete" href="#Ben_00c3_00b6tigte-Software-und-Pakete">2 Benötigte Software und Pakete</a>
|
||
<ul>
|
||
<li><a href="#Betriebssystem">2.1 Betriebssystem</a>
|
||
<li><a href="#Pakete">2.2 Pakete</a>
|
||
</li></ul>
|
||
<li><a name="toc_Manuelle-Installation-des-Programmpaketes" href="#Manuelle-Installation-des-Programmpaketes">3 Manuelle Installation des Programmpaketes</a>
|
||
<li><a name="toc_Anpassung-der-PostgreSQL_002dKonfiguration" href="#Anpassung-der-PostgreSQL_002dKonfiguration">4 Anpassung der PostgreSQL-Konfiguration</a>
|
||
<ul>
|
||
<li><a href="#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">4.1 Zeichensätze/die Verwendung von UTF-8</a>
|
||
<li><a href="#_00c3_0084nderungen-an-Konfigurationsdateien">4.2 Änderungen an Konfigurationsdateien</a>
|
||
<li><a href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">4.3 Erweiterung für servergespeicherte Prozeduren</a>
|
||
<li><a href="#Datenbankbenutzer-anlegen">4.4 Datenbankbenutzer anlegen</a>
|
||
</li></ul>
|
||
<li><a name="toc_Apache_002dKonfiguration" href="#Apache_002dKonfiguration">5 Apache-Konfiguration</a>
|
||
<li><a name="toc_Der-Task_002dServer" href="#Der-Task_002dServer">6 Der Task-Server</a>
|
||
<ul>
|
||
<li><a href="#Konfiguration-des-Task_002dServers">6.1 Verfügbare und notwendige Konfigurationsoptionen</a>
|
||
<li><a href="#Einbinden-in-den-Boot_002dProzess">6.2 Automatisches Starten des Task-Servers beim Booten</a>
|
||
<ul>
|
||
<li><a href="#Einbinden-in-den-Boot_002dProzess">6.2.1 SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)</a>
|
||
<li><a href="#Einbinden-in-den-Boot_002dProzess">6.2.2 Upstart-basierende Systeme (z.B. Ubuntu)</a>
|
||
</li></ul>
|
||
<li><a href="#Prozesskontrolle">6.3 Wie der Task-Server gestartet und beendet wird</a>
|
||
</li></ul>
|
||
<li><a name="toc_Benutzerauthentifizierung-und-Administratorpasswort" href="#Benutzerauthentifizierung-und-Administratorpasswort">7 Benutzerauthentifizierung und Administratorpasswort</a>
|
||
<ul>
|
||
<li><a href="#Grundlagen-zur-Benutzerauthentifizierung">7.1 Grundlagen zur Benutzerauthentifizierung</a>
|
||
<li><a href="#Administratorpasswort">7.2 Administratorpasswort</a>
|
||
<li><a href="#Authentifizierungsdatenbank">7.3 Authentifizierungsdatenbank</a>
|
||
<li><a href="#Passwort_00c3_00bcberpr_00c3_00bcfung">7.4 Passwortüberprüfung</a>
|
||
<li><a href="#Name-des-Session_002dCookies">7.5 Name des Session-Cookies</a>
|
||
<li><a href="#Anlegen-der-Authentifizierungsdatenbank">7.6 Anlegen der Authentifizierungsdatenbank</a>
|
||
</li></ul>
|
||
<li><a name="toc_Benutzer_002d-und-Gruppenverwaltung" href="#Benutzer_002d-und-Gruppenverwaltung">8 Benutzer- und Gruppenverwaltung</a>
|
||
<ul>
|
||
<li><a href="#Zusammenh_00c3_00a4nge">8.1 Zusammenhänge</a>
|
||
<li><a href="#Datenbanken-anlegen">8.2 Datenbanken anlegen</a>
|
||
<li><a href="#Gruppen-anlegen">8.3 Gruppen anlegen</a>
|
||
<li><a href="#Benutzer-anlegen">8.4 Benutzer anlegen</a>
|
||
<li><a href="#Gruppenmitgliedschaften-verwalten">8.5 Gruppenmitgliedschaften verwalten</a>
|
||
<li><a href="#Migration-alter-Installationen">8.6 Migration alter Installationen</a>
|
||
</li></ul>
|
||
<li><a name="toc_Drucken-mit-Lx_002dOffice" href="#Drucken-mit-Lx_002dOffice">9 Drucken mit Lx-Office</a>
|
||
<li><a name="toc_OpenDocument_002dVorlagen" href="#OpenDocument_002dVorlagen">10 OpenDocument-Vorlagen</a>
|
||
<li><a name="toc_Lx_002dOffice-ERP-verwenden" href="#Lx_002dOffice-ERP-verwenden">11 Lx-Office ERP verwenden</a>
|
||
</li></ul>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Top"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#dir">(dir)</a>
|
||
|
||
</div>
|
||
|
||
<h2 class="unnumbered">Inhalt der Anleitung</h2>
|
||
|
||
<ul class="menu">
|
||
<li><a accesskey="1" href="#Aktuelle-Hinweise">Aktuelle Hinweise</a>: Andere Informationsquellen als diese Anleitung
|
||
<li><a accesskey="2" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>: Vorraussetzungen zum Betrieb von Lx-Office
|
||
<li><a accesskey="3" href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>: Installationsort, Berechtigungen
|
||
<li><a accesskey="4" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>: Verschiedene Aspekte der Datenbankkonfiguration
|
||
<li><a accesskey="5" href="#Apache_002dKonfiguration">Apache-Konfiguration</a>: Einrichtung eines Aliases und Optionen für das Ausführen von CGI-Scripten
|
||
<li><a accesskey="6" href="#Der-Task_002dServer">Der Task-Server</a>: Konfiguration und Einrichtung des Task-Server-Dämonen
|
||
<li><a accesskey="7" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>: Einrichtung der Authentifizierungsdatenbank und der Passwortüberprüfung
|
||
<li><a accesskey="8" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>: Einrichten von Benutzern, Gruppen und Datenbanken
|
||
<li><a accesskey="9" href="#Drucken-mit-Lx_002dOffice">Drucken mit Lx-Office</a>: Voraussetzungen, Einrichtung und Fehlerdiagnose
|
||
<li><a href="#OpenDocument_002dVorlagen">OpenDocument-Vorlagen</a>: Wichtige Hinweise zum Erstellen und zur Verwendung von Dokumentenvorlagen
|
||
<li><a href="#Lx_002dOffice-ERP-verwenden">Lx-Office ERP verwenden</a>: Die URLs zur Anmeldung und Administration
|
||
</ul>
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Aktuelle-Hinweise"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Top">Top</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Top">Top</a>
|
||
|
||
</div>
|
||
|
||
<h2 class="chapter">1 Aktuelle Hinweise</h2>
|
||
|
||
<p>Aktuelle Installations- und Konfigurationshinweise gibt es:
|
||
|
||
<ul>
|
||
<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>
|
||
|
||
<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>)
|
||
|
||
<li>im Lx-Office-Forum: <a href="http://www.lx-office.org/forum/">http://www.lx-office.org/forum/</a>
|
||
</ul>
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Ben%c3%b6tigte-Software-und-Pakete"></a>
|
||
<a name="Ben_00c3_00b6tigte-Software-und-Pakete"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Top">Top</a>
|
||
|
||
</div>
|
||
|
||
<h2 class="chapter">2 Benötigte Software und Pakete</h2>
|
||
|
||
<ul class="menu">
|
||
<li><a accesskey="1" href="#Betriebssystem">Betriebssystem</a>: Unterstützte Betriebsysteme und Hinweise für ältere Systeme
|
||
<li><a accesskey="2" href="#Pakete">Pakete</a>: Benötigte Software und Perlpakete sowie deren Quellen
|
||
</ul>
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Betriebssystem"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Pakete">Pakete</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">2.1 Betriebssystem</h3>
|
||
|
||
<p>Lx-Office ist für Linux konzipiert, und sollte auf jedem unixoiden
|
||
Betriebssystem zum Laufen zu kriegen sein. Getestet ist diese Version im
|
||
speziellen auf Debian und Ubuntu, grundsätzlich wurde bei der Auswahl der
|
||
Pakete aber darauf Rücksicht genommen, dass es ohne große Probleme auf den
|
||
derzeit aktuellen verbreiteten Distributionen läuft.
|
||
|
||
<p>Anfang 2011 sind das folgende Systeme:
|
||
|
||
<ul>
|
||
<li>Ubuntu 8.04 LTS Hardy Heron
|
||
<li>Ubuntu 9.10 Karmic Koala
|
||
<li>Ubuntu 10.04 Lucid Lynx
|
||
<li>Ubuntu 10.10 Maverick Meerkat
|
||
<li>Debian 5.0 Lenny
|
||
<li>Debian 6.0 Squeeze
|
||
<li>openSUSE 11.2
|
||
<li>openSUSE 11.3
|
||
<li>SuSE Linux Enterprice Server 11
|
||
<li>Fedora 13
|
||
<li>Fedora 14
|
||
</ul>
|
||
|
||
<p>Für die debianoiden Betriebssysteme existiert ein .deb, das deutlich einfacher
|
||
zu installieren ist.
|
||
|
||
<p>Ubuntu 8.04 LTS hat zusätzlich die Schwierigkeit, dass die Module im Archiv
|
||
recht alt sind, und das viele der benötigten Module nicht einfach zu
|
||
installieren sind. Dafür sollte es kurz nach dem Release ein eigenes .deb
|
||
geben.
|
||
|
||
<p>Alternativ dazu kann die normale Installation durchgeführt werden
|
||
(siehe <a href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>), wenn vorher ein
|
||
Kompatibilitätspaket installiert wird, das die fehlenden Pakete bereitstellt.
|
||
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.
|
||
|
||
<p>Zur Installation das Paket in das entpackte Lx-Office Verzeichnis entpacken:
|
||
|
||
<p><code>tar xzf lx-erp-perl-libs-compat-v2.tar.gz /path/to/lx-office/</code>
|
||
|
||
<p>Zusätzlich müssen dann noch die folgenden Pakete installiert weerden
|
||
|
||
<p><code>libbit-vector-perl libsub-exporter-perl libclone-perl libclass-factory-util-perl</code>
|
||
|
||
<p>Danach sollte der Installationscheck (siehe <a href="#Pakete">Pakete</a>) die enthaltenen Pakete erkennen.
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Pakete"></a>
|
||
voriges: <a rel="previous" accesskey="p" href="#Betriebssystem">Betriebssystem</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">2.2 Pakete</h3>
|
||
|
||
<p>Zum Betrieb von Lx-Office werden zwingend ein Webserver (meist Apache)
|
||
und ein Datenbankserver (PostgreSQL, mindestens v8.2) benötigt.
|
||
|
||
<p>Zusätzlich benötigt Lx-Office die folgenden Perl-Pakete, die nicht Bestandteil
|
||
einer Standard-Perl-Installation sind:
|
||
|
||
<ul>
|
||
<li>parent
|
||
<li>Archive::Zip
|
||
<li>Config::Std
|
||
<li>DateTime
|
||
<li>DBI
|
||
<li>DBD::Pg
|
||
<li>Email::Address
|
||
<li>JSON
|
||
<li>List::MoreUtils
|
||
<li>Params::Validate
|
||
<li>PDF::API2
|
||
<li>Rose::Object
|
||
<li>Rose::DB
|
||
<li>Rose::DB::Object
|
||
<li>Template
|
||
<li>Text::CSV_XS
|
||
<li>Text::Iconv
|
||
<li>URI
|
||
<li>XML::Writer
|
||
<li>YAML
|
||
</ul>
|
||
|
||
<p>Gegenüber Version 2.6.0 sind zu dieser Liste 2 Pakete hinzugekommen, <code>URI</code>
|
||
und <code>XML::Writer</code> sind notwendig. Ohne startet Lx-Office nicht.
|
||
|
||
<p>Gegenüber Version 2.6.1 sind <code>parent</code>, <code>DateTime</code>,
|
||
<code>Rose::Object</code>, <code>Rose::DB</code> und <code>Rose::DB::Object</code> neu
|
||
hinzugekommen. <code>IO::Wrap</code> wurde entfernt.
|
||
|
||
<p>Gegenüber Version 2.6.3 ist <code>JSON</code> neu hinzugekommen.
|
||
|
||
<p><code>Email::Address</code> und <code>List::MoreUtils</code> sind schon länger feste
|
||
Abhängigkeiten, wurden aber bisher mit Lx-Office mitgeliefert. Beide sind auch
|
||
in 2.6.1 weiterhin mit ausgeliefert, wurden in einer zukünftigen Version aber
|
||
aus dem Paket entfernt werden. Es wird empfohlen diese Module zusammen mit den
|
||
anderen als Bibliotheken zu installieren.
|
||
|
||
<p>Die zu installierenden Pakete können in den verschiedenen Distributionen unterschiedlich heißen.
|
||
|
||
<p>Für Debian oder Ubuntu benötigen Sie diese Pakete:
|
||
|
||
<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>
|
||
|
||
<p>Für Fedora Core benötigen Sie diese Pakete:
|
||
|
||
<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>
|
||
|
||
<p>Für OpenSuSE benötigen Sie diese Pakete:
|
||
|
||
<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>
|
||
|
||
<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.
|
||
|
||
<p>Lx-Office enthält ein Script, mit dem überprüft werden kann, ob alle
|
||
benötigten Perl-Module installiert sind. Der Aufruf lautet wie folgt:
|
||
|
||
<p><code>./scripts/installation_check.pl</code>
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Manuelle-Installation-des-Programmpaketes"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Top">Top</a>
|
||
|
||
</div>
|
||
|
||
<h2 class="chapter">3 Manuelle Installation des Programmpaketes</h2>
|
||
|
||
<p>Die Lx-Office ERP Installationsdatei (lxoffice-erp-2.6.2.tgz) wird im
|
||
Dokumentenverzeichnis des Webservers (z.B. <code>/var/www/html/</code>,
|
||
<code>/srv/www/htdocs</code> oder <code>/var/www/</code>) entpackt:
|
||
|
||
<p><code>cd /var/www
|
||
<br>
|
||
tar xvzf lxoffice-erp-2.6.2.tgz</code>
|
||
|
||
<p>Verändern Sie evtl. noch den Namen des Verzeichnisses mit
|
||
|
||
<p><code>mv lxoffice-erp/ lx-erp/</code>
|
||
|
||
<p>Alternativ können Sie auch einen Alias in der Webserverkonfiguration
|
||
benutzen, um auf das tatsächliche Installationsverzeichnis zu
|
||
verweisen.
|
||
|
||
<p>Die Verzeichnisse <code>users</code>, <code>spool</code> und <code>webdav</code> müssen
|
||
für den Benutzer beschreibbar sein, unter dem der Webserver läuft. Die
|
||
restlichen Dateien müssen für diesen Benutzer lesbar sein. Der
|
||
Benutzername ist bei verschiedenen Distributionen unterschiedlich
|
||
(z.B. bei Debian/Ubuntu <code>www-data</code>, bei Fedora core <code>apache</code>
|
||
oder bei OpenSuSE <code>wwwrun</code>).
|
||
|
||
<p>Der folgende Befehl ändert den Besitzer für die oben genannten
|
||
Verzeichnisse auf einem Debian/Ubuntu-System:
|
||
|
||
<p><code>chown -R www-data lx-office-erp/users lx-office-erp/spool lx-office-erp/webdav</code>
|
||
|
||
<p>Weiterhin muss der Webserver-Benutzer im Verzeichnis <code>templates</code> Verzeichnisse für
|
||
jeden neuen Benutzer, der in lx-office angelegt wird, anlegen dürfen:
|
||
|
||
<p><code>chgrp www-data lx-office-erp/templates; chmod g+w lx-office-erp/templates</code>
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Anpassung-der-PostgreSQL-Konfiguration"></a>
|
||
<a name="Anpassung-der-PostgreSQL_002dKonfiguration"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Apache_002dKonfiguration">Apache-Konfiguration</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Top">Top</a>
|
||
|
||
</div>
|
||
|
||
<h2 class="chapter">4 Anpassung der PostgreSQL-Konfiguration</h2>
|
||
|
||
<p>PostgreSQL muss auf verschiedene Weisen angepasst werden.
|
||
|
||
<ul class="menu">
|
||
<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
|
||
<li><a accesskey="2" href="#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>: Anpassungen für Anmeldung am Server und Featureunterstützung
|
||
<li><a accesskey="3" href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>: Lx-Office benutzt servergespeicherte Prozeduren
|
||
<li><a accesskey="4" href="#Datenbankbenutzer-anlegen">Datenbankbenutzer anlegen</a>: Um den Zugriff besser zu reglementieren
|
||
</ul>
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Zeichens%c3%a4tze%2fdie-Verwendung-von-UTF-8"></a>
|
||
<a name="Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">4.1 Zeichensätze/die Verwendung von UTF-8</h3>
|
||
|
||
<p>Lx-Office kann komplett mit UTF-8 als Zeichensatz verwendet
|
||
werden. Dabei gibt es zwei Punkte zu beachten: PostgreSQL muss in
|
||
Version 8.0 oder neuer benutzt werden, und der
|
||
PostgreSQL-Datenbankcluster muss ebenfalls mit UTF-8 als Locale
|
||
angelegt worden sein.
|
||
|
||
<p>Dieses ist kann überprüft werden: ist das Encoding der Datenbank
|
||
“template1” “UTF8”, so kann auch Lx-Office mit UTF-8 betrieben
|
||
werden. Andernfalls ist es notwendig, einen neuen Datenbankcluster mit
|
||
UTF-8-Encoding anzulegen und diesen zu verwenden. Unter Debian und
|
||
Ubuntu kann dies z.B. mit dem folgenden Befehl getan werden:
|
||
|
||
<p><code>pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername</code>
|
||
|
||
<p>Die Datenbankversionsnummer muss an die tatsächlich verwendete
|
||
Versionsnummer angepasst werden.
|
||
|
||
<p>Unter anderen Distributionen gibt es ähnliche Methoden.
|
||
|
||
<p>Wurde PostgreSQL nicht mit UTF-8 als Encoding initialisiert und ist
|
||
ein Neuanlegen eines weiteren Clusters nicht möglich, so kann
|
||
Lx-Office mit ISO-8859-15 als Encoding betrieben werden.
|
||
|
||
<p>Das Encoding einer Datenbank kann in <code>psql</code> mit <code>\l</code> geprüft werden.
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="%c3%84nderungen-an-Konfigurationsdateien"></a>
|
||
<a name="g_t_00c3_0084nderungen-an-Konfigurationsdateien"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">Zeichensätze/die Verwendung von UTF-8</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">4.2 Änderungen an Konfigurationsdateien</h3>
|
||
|
||
<p>In der Datei <code>postgresql.conf</code>, die je nach Distribution in
|
||
verschiedenen Verzeichnissen liegen kann
|
||
(z.B. <code>/var/lib/pgsql/data/</code> oder <code>/etc/postgresql/</code>, muss
|
||
sichergestellt werden, dass TCP/IP-Verbindungen aktiviert sind. Das
|
||
Verhalten wird über den Parameter <code>listen_address</code>
|
||
gesteuert. Laufen PostgreSQL und Lx-Office auf demselben Rechner, so
|
||
kann dort der Wert <code>localhost</code> verwendet werden. Andernfalls
|
||
müssen Datenbankverbindungen auch von anderen Rechnern aus zugelassen
|
||
werden, was mit dem Wert \<code>*</code> geschieht.
|
||
|
||
<p>In der Datei <code>pg_hba.conf</code>, die im gleichen Verzeichnis wie die
|
||
<code>postgresql.conf</code> zu finden sein sollte, müssen die
|
||
Berichtigungen für den Zugriff geändert werden. Hier gibt es mehrere
|
||
Möglichkeiten. Eine besteht darin, lokale Verbindungen immer
|
||
zuzulassen
|
||
|
||
<p><code>local all all trust
|
||
<br>
|
||
host all all 127.0.0.1 255.0.0.0 trust</code>
|
||
|
||
<p>Besser ist es, für eine bestimmte Datenbank Zugriff nur per Passwort
|
||
zuzulassen. Beispielsweise:
|
||
|
||
<p><code>local all lxoffice password
|
||
<br>
|
||
host all lxoffice 127.0.0.1 255.255.255.255 password</code>
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Erweiterung-f%c3%bcr-servergespeicherte-Prozeduren"></a>
|
||
<a name="Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Datenbankbenutzer-anlegen">Datenbankbenutzer anlegen</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">4.3 Erweiterung für servergespeicherte Prozeduren</h3>
|
||
|
||
<p>In der Datenbank <code>template1</code> muss die Unterstützung für servergespeicherte
|
||
Prozeduren eingerichet werden. Melden Sie sich dafür als Benutzer “postgres”
|
||
an der Datenbank an, und führen Sie die folgenden Kommandos aus:
|
||
|
||
<p><code>create language 'plpgsql';</code>
|
||
|
||
<p>Achtung: In älteren Postgresversionen (vor 8.0) muss der Handler für die
|
||
Sprache manuell anlelegt werden, diese Versionen werden aber nicht mehr
|
||
offiziell von Lx-Office unterstützt. Dafür dann die folgenden Kommandos:
|
||
|
||
<p><code>create function plpgsql_call_handler () returns opaque as '/usr/lib/pgsql/plpgsql.so' language 'c';
|
||
<br>
|
||
create language 'plpgsql' handler plpgsql_call_handler lancompiler 'pl/pgsql';</code>
|
||
|
||
<p>Bitte beachten Sie, dass der Pfad zur Datei <code>plpgsql.so</code> von Distribution
|
||
zu Distribution verschiedlich sein kann. Bei Debian/Ubuntu befindet sie sich
|
||
unter <code>/usr/lib/postgresql/lib/plpgsql.so</code>.
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Datenbankbenutzer-anlegen"></a>
|
||
voriges: <a rel="previous" accesskey="p" href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">4.4 Datenbankbenutzer anlegen</h3>
|
||
|
||
<p>Wenn Sie nicht den Datenbanksuperuser “postgres” zum Zugriff
|
||
benutzen wollen, so sollten Sie bei PostgreSQL einen neuen Benutzer
|
||
anlegen. Ein Beispiel, wie Sie einen neuen Benutzer anlegen können:
|
||
|
||
<p><code>su - postgres
|
||
<br>
|
||
createuser -d -P lxoffice</code>
|
||
|
||
<p>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern Sie
|
||
den evtl. voreingestellten Benutzer “postgres” auf “lxoffice”
|
||
bzw. den hier gewählten Benutzernamen.
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Apache-Konfiguration"></a>
|
||
<a name="Apache_002dKonfiguration"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Der-Task_002dServer">Der Task-Server</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Top">Top</a>
|
||
|
||
</div>
|
||
|
||
<h2 class="chapter">5 Apache-Konfiguration</h2>
|
||
|
||
<p>Hinweis: Für einen deutlichen Performanceschub sorgt die Ausführung
|
||
mittels FCGI. Die Einrichtung wird ausführlich in der Datei
|
||
<code>INSTALL.fcgi</code> beschrieben.
|
||
|
||
<p>Der Zugriff auf das Programmverzeichnis muss in der Apache
|
||
Webserverkonfigurationsdatei <code>httpd.conf</code> eingestellt
|
||
werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
|
||
anderen Datei hinzu, die beim Starten des Webservers eingelesen wird:
|
||
|
||
<p><code><br>
|
||
AddHandler cgi-script .pl
|
||
<br>
|
||
Alias /lx-erp/ /var/www/lx-erp/
|
||
<br>
|
||
<Directory /var/www/lx-erp>
|
||
<br>
|
||
Options ExecCGI Includes FollowSymlinks
|
||
<br>
|
||
</Directory>
|
||
<br>
|
||
<br>
|
||
<Directory /var/www/lx-erp/users>
|
||
<br>
|
||
Order Deny,Allow
|
||
<br>
|
||
Deny from All
|
||
<br>
|
||
</Directory>
|
||
<br>
|
||
</code>
|
||
|
||
<p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher das
|
||
Lx-Office-Archiv entpacket haben.
|
||
|
||
<p>Achtung: Vor den einzelnen Optionen muss bei einigen Distributionen ein
|
||
Plus ‘<samp><span class="samp">+</span></samp>’ gesetzt werden.
|
||
|
||
<p>Auf einigen Webservern werden manchmal die Grafiken und Style-Sheets
|
||
nicht ausgeliefert. In solchen Fällen hat es oft geholfen, die
|
||
folgende Option in die Konfiguration aufzunehmen:
|
||
|
||
<p><code>EnableSendfile Off</code>
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Der-Task-Server"></a>
|
||
<a name="Der-Task_002dServer"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Apache_002dKonfiguration">Apache-Konfiguration</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Top">Top</a>
|
||
|
||
</div>
|
||
|
||
<h2 class="chapter">6 Der Task-Server</h2>
|
||
|
||
<p>Der Task-Server ist ein Prozess, der im Hintergrund läuft, in
|
||
regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und diese
|
||
zu festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser
|
||
Prozess wird bisher nur für die Erzeugung der wiederkehrenden
|
||
Rechnungen benutzt, wird aber in Zukunft deutlich mehr Aufgaben
|
||
übertragen bekommen.
|
||
|
||
<ul class="menu">
|
||
<li><a accesskey="1" href="#Konfiguration-des-Task_002dServers">Konfiguration des Task-Servers</a>: Verfügbare und notwendige Konfigurationsoptionen
|
||
<li><a accesskey="2" href="#Prozesskontrolle">Prozesskontrolle</a>: Wie der Task-Server gestartet und beendet wird
|
||
<li><a accesskey="3" href="#Einbinden-in-den-Boot_002dProzess">Einbinden in den Boot-Prozess</a>: Automatisches Starten des Task-Servers beim Booten
|
||
</ul>
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Konfiguration-des-Task-Servers"></a>
|
||
<a name="Konfiguration-des-Task_002dServers"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Prozesskontrolle">Prozesskontrolle</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Der-Task_002dServer">Der Task-Server</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">6.1 Verfügbare und notwendige Konfigurationsoptionen</h3>
|
||
|
||
<p>Die Konfiguration erfolgt über den Abschnitt <code>[task_server]</code> in
|
||
der Datei <samp><span class="file">config/lx_office.conf</span></samp>. Die dort verfügbaren Optionen
|
||
sind:
|
||
|
||
<ul>
|
||
<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.
|
||
<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.
|
||
<li><code>debug</code>: Schaltet Debug-Informationen an und aus.
|
||
</ul>
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Einbinden-in-den-Boot-Prozess"></a>
|
||
<a name="Einbinden-in-den-Boot_002dProzess"></a>
|
||
voriges: <a rel="previous" accesskey="p" href="#Prozesskontrolle">Prozesskontrolle</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Der-Task_002dServer">Der Task-Server</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">6.2 Automatisches Starten des Task-Servers beim Booten</h3>
|
||
|
||
<p>Der Task-Server verhält sich von seinen Optionen her wie ein reguläres
|
||
SystemV-kompatibles Boot-Script. Außerdem wechselt er beim Starten
|
||
automatisch in das Lx-Office-Installationsverzeichnis.
|
||
|
||
<p>Deshalb ist es möglich, ihn durch Setzen eines symbolischen Links aus
|
||
einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
|
||
einzubinden. Da das bei neueren Linux-Distributionen aber nicht
|
||
zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
|
||
anstelle eines symbolischen Links verwendet werden können.
|
||
|
||
<h4 class="subsection">6.2.1 SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)</h4>
|
||
|
||
<p>Kopieren Sie die Datei
|
||
<samp><span class="file">scripts/boot/system-v/lx-office-task-server</span></samp> nach
|
||
<samp><span class="file">/etc/init.d/lx-office-task-server</span></samp>. Passen Sie in der kopierten
|
||
Datei den Pfad zum Task-Server an (Zeile <code>DAEMON=....</code>). Binden
|
||
Sie das Script in den Boot-Prozess ein. Dies ist distributionsabhängig:
|
||
|
||
<ul>
|
||
<li>Debian-basierende Systeme:
|
||
<br>
|
||
<code>update-rc.d lx-office-task-server defaults
|
||
<br>
|
||
# Nur bei Debian Squeeze und neuer:
|
||
<br>
|
||
insserv lx-office-task-server</code>
|
||
<li>OpenSuSE und Fedora Core:
|
||
<br>
|
||
<code>chkconfig --add lx-office-task-server</code>
|
||
</ul>
|
||
|
||
<p>Danach kann der Task-Server mit dem folgenden Befehl gestartet werden:
|
||
<code>/etc/init.d/lx-office-task-server start</code>
|
||
|
||
<h4 class="subsection">6.2.2 Upstart-basierende Systeme (z.B. Ubuntu)</h4>
|
||
|
||
<p>Kopieren Sie die Datei
|
||
<samp><span class="file">scripts/boot/upstart/lx-office-task-server.conf</span></samp> nach
|
||
<samp><span class="file">/etc/init/lx-office-task-server.conf</span></samp>. Passen Sie in der kopierten
|
||
Datei den Pfad zum Task-Server an (Zeile <code>exec ....</code>).
|
||
|
||
<p>Danach kann der Task-Server mit dem folgenden Befehl gestartet werden:
|
||
<code>service lx-office-task-server start</code>
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Prozesskontrolle"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Einbinden-in-den-Boot_002dProzess">Einbinden in den Boot-Prozess</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Konfiguration-des-Task_002dServers">Konfiguration des Task-Servers</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Der-Task_002dServer">Der Task-Server</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">6.3 Wie der Task-Server gestartet und beendet wird</h3>
|
||
|
||
<p>Der Task-Server wird wie folgt kontrolliert:
|
||
|
||
<p><code>./scripts/task_server.pl Befehl</code>
|
||
|
||
<p><code>Befehl</code> ist dabei eine der folgenden Optionen:
|
||
|
||
<ul>
|
||
<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.
|
||
<li><code>stop</code> beendet einen laufenden Task-Server.
|
||
<li><code>restart</code> beendet und startet ihn neu.
|
||
<li><code>status</code> berichtet, ob der Task-Server läuft.
|
||
</ul>
|
||
|
||
<p>Der Task-Server wechselt beim Starten automatisch in das Lx-Office-Installationsverzeichnis.
|
||
|
||
<p>Dieselben Optionen können auch für die SystemV-basierenden
|
||
Runlevel-Scripte benutzt werden (siehe oben).
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Der-Task_002dServer">Der Task-Server</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Top">Top</a>
|
||
|
||
</div>
|
||
|
||
<h2 class="chapter">7 Benutzerauthentifizierung und Administratorpasswort</h2>
|
||
|
||
<p>Informationen über die Einrichtung der Benutzerauthentifizierung, über
|
||
die Verwaltung von Gruppen und weitere Einstellungen
|
||
|
||
<ul class="menu">
|
||
<li><a accesskey="1" href="#Grundlagen-zur-Benutzerauthentifizierung">Grundlagen zur Benutzerauthentifizierung</a>: Verfügbare Methoden, Name der Konfigurationsdatei
|
||
<li><a accesskey="2" href="#Administratorpasswort">Administratorpasswort</a>: Wo das Administratorpasswort gesetzt werden kann
|
||
<li><a accesskey="3" href="#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>: Verbindungseinstellungen zur Authentifizierungsdatenbank
|
||
<li><a accesskey="4" href="#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>: Einstellungen zur Überprüfung der Benutzerpasswörter
|
||
<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
|
||
<li><a accesskey="6" href="#Anlegen-der-Authentifizierungsdatenbank">Anlegen der Authentifizierungsdatenbank</a>: Wie die Authentifizierungsdatenbank angelegt wird
|
||
</ul>
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Grundlagen-zur-Benutzerauthentifizierung"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Administratorpasswort">Administratorpasswort</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">7.1 Grundlagen zur Benutzerauthentifizierung</h3>
|
||
|
||
<p>Lx-Office verwaltet die Benutzerinformationen in einer Datenbank, die
|
||
im folgenden “Authentifizierungsdatenbank” genannt wird. Für jeden
|
||
Benutzer kann dort eine eigene Datenbank für die eigentlichen
|
||
Finanzdaten hinterlegt sein. Diese beiden Datenbanken können, müssen
|
||
aber nicht unterschiedlich sein.
|
||
|
||
<p>Im einfachsten Fall gibt es für Lx-Office nur eine einzige Datenbank,
|
||
in der sowohl die Benutzerinformationen als auch die Daten abgelegt
|
||
werden.
|
||
|
||
<p>Zusätzlich ermöglicht es Lx-Office, dass die Benutzerpasswörter
|
||
entweder gegen die Authentifizierungsdatenbank oder gegen einen
|
||
LDAP-Server überprüft werden.
|
||
|
||
<p>Welche Art der Passwortüberprüfung Lx-Office benutzt und wie Lx-Office
|
||
die Authentifizierungsdatenbank erreichen kann, wird in der
|
||
Konfigurationsdatei <samp><span class="file">config/lx_office.conf</span></samp> festgelegt. Diese
|
||
muss bei der Installation und bei einem Upgrade von einer Version vor
|
||
v2.6.0 angelegt werden. Eine Beispielkonfigurationsdatei
|
||
<samp><span class="file">config/lx_office.conf.default</span></samp> existiert, die als Vorlage
|
||
benutzt werden kann.
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Administratorpasswort"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Grundlagen-zur-Benutzerauthentifizierung">Grundlagen zur Benutzerauthentifizierung</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">7.2 Administratorpasswort</h3>
|
||
|
||
<p>Das Passwort, das zum Zugriff auf das Aministrationsinterface benutzt wird,
|
||
wird ebenfalls in dieser Datei gespeichert. Es kann auch nur dort und nicht
|
||
mehr im Administrationsinterface selber geändert werden. Der Parameter dazu
|
||
heißt <code>$self->{admin_password}</code>.
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Authentifizierungsdatenbank"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Administratorpasswort">Administratorpasswort</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">7.3 Authentifizierungsdatenbank</h3>
|
||
|
||
<p>Die Verbindung zur Authentifizierungsdatenbank wird mit den Parametern
|
||
in <code>$self->{DB_config}</code> konfiguriert. Hier sind die folgenden
|
||
Parameter anzugeben:
|
||
|
||
<ul>
|
||
<li>‘<samp><span class="samp">host</span></samp>’ – Der Rechnername oder die IP-Adresse des Datenbankservers
|
||
<li>‘<samp><span class="samp">port</span></samp>’ – Die Portnummer des Datenbankservers, meist 5432
|
||
<li>‘<samp><span class="samp">db</span></samp>’ – Der Name der Authentifizierungsdatenbank
|
||
<li>‘<samp><span class="samp">user</span></samp>’ – Der Benutzername, mit dem sich Lx-Office beim Datenbankserver anmeldet (z.B. “postgres”)
|
||
<li>‘<samp><span class="samp">password</span></samp>’ – Das Passwort für den Datenbankbenutzer
|
||
</ul>
|
||
|
||
<p>Die Datenbank muss noch nicht existieren. Lx-Office kann sie
|
||
automatisch anlegen (mehr dazu siehe unten).
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Passwort%c3%bcberpr%c3%bcfung"></a>
|
||
<a name="Passwort_00c3_00bcberpr_00c3_00bcfung"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">7.4 Passwortüberprüfung</h3>
|
||
|
||
<p>Lx-Office unterstützt Passwortüberprüfung auf zwei Arten: gegen die
|
||
Authentifizierungsdatenbank und gegen einen externen LDAP- oder
|
||
Active-Directory-Server. Welche davon benutzt wird, regelt der
|
||
Parameter <code>$self->{module}</code>.
|
||
|
||
<p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank
|
||
gespeichert werden, so muss der Parameter <code>$self->{module}</code> den
|
||
Wert ‘<samp><span class="samp">DB</span></samp>’ enthalten. In diesem Fall können sowohl der
|
||
Administrator als auch die Benutzer selber ihre Psaswörter in
|
||
Lx-Office ändern.
|
||
|
||
<p>Soll hingegen ein externer LDAP- oder Active-Directory-Server benutzt
|
||
werden, so muss der Parameter <code>$self->{module}</code> auf ‘<samp><span class="samp">LDAP</span></samp>’
|
||
gesetzt werden. In diesem Fall müssen zusätzliche Informationen über
|
||
den LDAP-Server in <code>$self->{LDAP_config}</code> angegeben werden:
|
||
|
||
<ul>
|
||
<li>‘<samp><span class="samp">host</span></samp>’ – Der Rechnername oder die IP-Adresse des LDAP- oder Active-Directory-Servers. Diese Angabe ist zwingend erforderlich.
|
||
<li>‘<samp><span class="samp">port</span></samp>’ – Die Portnummer des LDAP-Servers; meist 389.
|
||
<li>‘<samp><span class="samp">tls</span></samp>’ – Wenn Verbindungsverschlüsselung gewünscht ist, so diesen Wert auf ‘<samp><span class="samp">1</span></samp>’ setzen, andernfalls auf ‘<samp><span class="samp">0</span></samp>’ belassen
|
||
<li>‘<samp><span class="samp">attribute</span></samp>’ – Das LDAP-Attribut, in dem der Benutzername steht, den der Benutzer eingegeben hat. Für Active-Directory-Server
|
||
ist dies meist ‘<samp><span class="samp">sAMAccountName</span></samp>’, für andere LDAP-Server hingegen ‘<samp><span class="samp">uid</span></samp>’. Diese Angabe ist zwingend erforderlich.
|
||
<li>‘<samp><span class="samp">base_dn</span></samp>’ – Der Abschnitt des LDAP-Baumes, der durchsucht werden soll. Diese Angabe ist zwingend erforderlich.
|
||
<li>‘<samp><span class="samp">filter</span></samp>’ – Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort <code><%login%></code>, so wird dieses durch den vom Benutzer
|
||
eingegebenen Benutzernamen ersetzt. Andernfalls wird der LDAP-Baum nach einem Element durchsucht, bei dem das oben angegebene Attribut
|
||
mit dem Benutzernamen identisch ist.
|
||
<li>‘<samp><span class="samp">bind_dn</span></samp>’ und ‘<samp><span class="samp">bind_password</span></samp>’ – Wenn der LDAP-Server eine Anmeldung erfordert, bevor er durchsucht werden kann (z.B. ist dies bei
|
||
Active-Directory-Servern der Fall), so kann diese hier angegeben werden. Für Active-Directory-Server kann als ‘<samp><span class="samp">bind_dn</span></samp>’ entweder eine
|
||
komplette LDAP-DN wie z.B. ‘<samp><span class="samp">cn=Martin Mustermann,cn=Users,dc=firmendomain</span></samp>’ auch nur der volle Name des Benutzers
|
||
eingegeben werden; in diesem Beispiel also ‘<samp><span class="samp">Martin Mustermann</span></samp>’.
|
||
</ul>
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Name-des-Session-Cookies"></a>
|
||
<a name="Name-des-Session_002dCookies"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Anlegen-der-Authentifizierungsdatenbank">Anlegen der Authentifizierungsdatenbank</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">7.5 Name des Session-Cookies</h3>
|
||
|
||
<p>Sollen auf einem Server mehrere Lx-Office-Installationen aufgesetzt
|
||
werden, so müssen die Namen der Session-Cookies für alle
|
||
Installationen unterschiedlich sein. Der Name des Cookies wird mit dem
|
||
Parameter <code>$self->{cookie_name}</code> gesetzt.
|
||
|
||
<p>Diese Angabe ist optional, wenn nur eine Installation auf dem Server
|
||
existiert.
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Anlegen-der-Authentifizierungsdatenbank"></a>
|
||
voriges: <a rel="previous" accesskey="p" href="#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">7.6 Anlegen der Authentifizierungsdatenbank</h3>
|
||
|
||
<p>Nachdem alle Einstellungen in <samp><span class="file">config/lx_office.conf</span></samp>
|
||
vorgenommen wurden, muss Lx-Office die Authentifizierungsdatenbank
|
||
anlegen. Dieses geschieht automatisch, wenn Sie sich im
|
||
Administrationsmodul anmelden, das unter der folgenden URL erreichbar
|
||
sein sollte:
|
||
|
||
<p><a href="http://localhost/lx-erp/admin.pl">http://localhost/lx-erp/admin.pl</a>
|
||
|
||
<!-- -->
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Benutzer--und-Gruppenverwaltung"></a>
|
||
<a name="Benutzer_002d-und-Gruppenverwaltung"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Drucken-mit-Lx_002dOffice">Drucken mit Lx-Office</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Top">Top</a>
|
||
|
||
</div>
|
||
|
||
<h2 class="chapter">8 Benutzer- und Gruppenverwaltung</h2>
|
||
|
||
<p>Nach der Installation müssen Benutzer, Gruppen und Datenbanken
|
||
angelegt werden. Dieses geschieht im Administrationsmenü, das Sie
|
||
unter folgender URL finden:
|
||
|
||
<p><a href="http://localhost/lx-erp/admin.pl">http://localhost/lx-erp/admin.pl</a>
|
||
|
||
<p>Verwenden Sie zur Anmeldung das Password, dass Sie in der Datei
|
||
<samp><span class="file">config/lx_office.conf</span></samp> eingetragen haben.
|
||
|
||
<ul class="menu">
|
||
<li><a accesskey="1" href="#Zusammenh_00c3_00a4nge">Zusammenhänge</a>: Übersicht über Benutzer, Gruppen, Berechtigungen und Datenbanken
|
||
<li><a accesskey="2" href="#Datenbanken-anlegen">Datenbanken anlegen</a>: Hinweise zum Anlegen von Datenbanken
|
||
<li><a accesskey="3" href="#Gruppen-anlegen">Gruppen anlegen</a>: Hinweise zum Anlegen von Gruppen
|
||
<li><a accesskey="4" href="#Benutzer-anlegen">Benutzer anlegen</a>: Hinweise zum Anlegen von Benutzern
|
||
<li><a accesskey="5" href="#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>: Wie man Gruppen Benutzer zuordnet
|
||
<li><a accesskey="6" href="#Migration-alter-Installationen">Migration alter Installationen</a>: Automatische Übernahme bei Update von einer älteren Version
|
||
</ul>
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Zusammenh%c3%a4nge"></a>
|
||
<a name="Zusammenh_00c3_00a4nge"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Datenbanken-anlegen">Datenbanken anlegen</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">8.1 Zusammenhänge</h3>
|
||
|
||
<p>Lx-Office verwendet eine Datenbank zum Speichern all seiner
|
||
Informationen wie Kundendaten, Artikel, Angebote, Rechnungen etc. Um
|
||
mit Lx-Office arbeiten zu können, muss eine Person einen
|
||
Benutzeraccount haben. Jedem Benutzeraccount wiederum wird genau eine
|
||
Datenbank zugewiesen, mit der dieser Benutzer arbeiten kann. Es ist
|
||
möglich und normal, dass mehreren Benutzern die selbe Datenbank
|
||
zugewiesen wird, sodass sie alle mit den selben Daten arbeiten können.
|
||
|
||
<p>Die Basisdaten der Benutzer, die in der Administration eingegeben
|
||
werden können, werden in einer zweiten Datenbank gespeichert, der
|
||
bereits erwähnten Authentifizierungsdatenbank. Diese ist also den
|
||
Produktivdaten enthaltenden Datenbanken vorgeschaltet. Pro
|
||
Lx-Office-Installation gibt es nur eine Authentifizierungsdatenbank,
|
||
aber beliebig viele Datenbanken mit Firmendaten.
|
||
|
||
<p>Lx-Office kann seinen Benutzern Zugriff auf bestimmte
|
||
Funktionsbereiche erlauben oder verbieten. Wird der Zugriff nicht
|
||
gestattet, so werden der entsprechenden Menüpunkte auch nicht
|
||
angezeigt. Diese Rechte werden ebenfalls in der
|
||
Authentifizierungsdatenbank gespeichert.
|
||
|
||
<p>Um Rechte verteilen zu können, verwendet Lx-Office ein
|
||
Gruppen-Prinzip. Einer Gruppe kann der Zugriff auf bestimmte Bereiche
|
||
erlaubt werden. Ein Benutzer wiederum kann Mitglied in einer oder
|
||
mehrerer Gruppen sein. Der Benutzer hat Zugriff auf alle diejenigen
|
||
Funktionen, die mindestens einer Gruppe erlaubt sind, in der der
|
||
Benutzer Mitglied ist.
|
||
|
||
<p>Die allgemeine Reihenfolge, in der Datenbanken, Gruppen und Benutzer
|
||
angelegt werden sollten, lautet:
|
||
|
||
<ol type=1 start=1>
|
||
<li>Datenbank anlegen
|
||
<li>Gruppen anlegen
|
||
<li>Benutzer anlegen
|
||
<li>Benutzer den Gruppen zuordnen
|
||
</ol>
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Datenbanken-anlegen"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Gruppen-anlegen">Gruppen anlegen</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Zusammenh_00c3_00a4nge">Zusammenhänge</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">8.2 Datenbanken anlegen</h3>
|
||
|
||
<p>Zuerst muss eine Datenbank angelegt werden. Verwenden Sie für den
|
||
Datenbankzugriff den vorhin angelegten Benutzer (in unseren Beispielen
|
||
ist dies ‘<samp><span class="samp">lxoffice</span></samp>’).
|
||
|
||
<p>Wenn Sie für die Lx-Office-Installation nicht den europäischen
|
||
Schriftsatz ISO-8859-15 sondern UTF-8 (Unicode) benutzen wollen, so
|
||
müssen Sie vor dem Anlegen der Datenbank in der Datei
|
||
<samp><span class="file">config/lx_office.conf</span></samp> die Variable <code>dbcharset</code> im
|
||
Abschnitt <code>system</code> auf den Wert ‘<samp><span class="samp">UTF-8</span></samp>’ setzen. Zusätzlich
|
||
muss beim Anlegen der Datenbank ‘<samp><span class="samp">UTF-8 Unicode</span></samp>’ als Schriftsatz
|
||
ausgewählt werden.
|
||
|
||
<p>Bitte beachten Sie, dass alle Datenbanken den selben Zeichensatz
|
||
verwenden müssen, da diese Einstellungen momentan global in Lx-Office
|
||
vorgenommen wird und nicht nach Datenbank unterschieden werden
|
||
kann. Auch die Authentifizierungsdatenbank muss mit diesem Zeichensatz
|
||
angelegt worden sein.
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Gruppen-anlegen"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Benutzer-anlegen">Benutzer anlegen</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Datenbanken-anlegen">Datenbanken anlegen</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">8.3 Gruppen anlegen</h3>
|
||
|
||
<p>Eine Gruppe wird in der Gruppenverwaltung angelegt. Ihr muss ein Name
|
||
gegeben werden, eine Beschreibung ist hingegen optional. Nach dem
|
||
Anlegen können Sie die verschiedenen Bereiche wählen, auf die
|
||
Mitglieder dieser Gruppe Zugriff haben sollen.
|
||
|
||
<p>Benutzergruppen sind unabhängig von Datenbanken, da sie in der
|
||
Authentifizierungsdatenbank gespeichert werden. Sie gelten für alle
|
||
Datenbanken, die in dieser Installation verwaltet werden.
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Benutzer-anlegen"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Gruppen-anlegen">Gruppen anlegen</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">8.4 Benutzer anlegen</h3>
|
||
|
||
<p>Beim Anlegen von Benutzern werden für viele Parameter
|
||
Standardeinstellungen vorgenommen, die den Gepflogenheiten des
|
||
deutschen Raumes entsprechen.
|
||
|
||
<p>Zwingend anzugeben sind der Loginname sowie die komplette
|
||
Datenbankkonfiguration. Wenn die Passwortauthentifizierung über die
|
||
Datenbank eingestellt ist, so kann hier auch das Benutzerpasswort
|
||
gesetzt bzw. geändert werden. Ist hingegen die LDAP-Authentifizierung
|
||
aktiv, so ist das Passwort-Feld deaktiviert.
|
||
|
||
<p>In der Datenbankkonfiguration müssen die Zugriffsdaten einer der eben
|
||
angelegten Datenbanken eingetragen werden.
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Gruppenmitgliedschaften-verwalten"></a>
|
||
nächstes: <a rel="next" accesskey="n" href="#Migration-alter-Installationen">Migration alter Installationen</a>,
|
||
voriges: <a rel="previous" accesskey="p" href="#Benutzer-anlegen">Benutzer anlegen</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
|
||
|
||
</div>
|
||
|
||
<h3 class="section">8.5 Gruppenmitgliedschaften verwalten</h3>
|
||
|
||
<p>Nach dem Anlegen von Benutzern und Gruppen müssen Benutzer den Gruppen
|
||
zugewiesen werden. Dazu gibt es zwei Möglichkeiten:
|
||
|
||
<ol type=1 start=1>
|
||
<li>In der Gruppenverwaltung wählt man eine Gruppe aus. Im folgenden
|
||
Dialog kann man dann einzeln die Benutzer der Gruppe hinzufügen.
|
||
<li>In der Gruppenverwaltung wählt man das Tool zur Verwaltung der
|
||
Gruppenmitgliedschaft. Hier wird eine Matrix angezeigt, die alle im
|
||
System angelegten Gruppen und Benutzer enthält. Durch Setzen der
|
||
Häkchen wird der Benutzer in der ausgewählten Zeile der Gruppe in der
|
||
ausgewählten Spalte hinzugefügt.
|
||
</ol>
|
||
|
||
<div class="node">
|
||
<p><hr>
|
||
<a name="Migration-alter-Installationen"></a>
|
||
voriges: <a rel="previous" accesskey="p" href="#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
|
||
aufwärts: <a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
|
||
|
||
</div>
|
Auch abrufbar als: Unified diff
Migration der einzelnen Dokumentationsdateien in eine DocBook-Datei