Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 7ee506b3

Von Moritz Bunkus vor etwa 13 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
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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Top">Top</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Aktuelle-Hinweise">Aktuelle Hinweise</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Pakete">Pakete</a>,
aufw&auml;rts:&nbsp;<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:&nbsp;<a rel="previous" accesskey="p" href="#Betriebssystem">Betriebssystem</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Ben_00c3_00b6tigte-Software-und-Pakete">Benötigte Software und Pakete</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Apache_002dKonfiguration">Apache-Konfiguration</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Manuelle-Installation-des-Programmpaketes">Manuelle Installation des Programmpaketes</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
aufw&auml;rts:&nbsp;<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
&ldquo;template1&rdquo; &ldquo;UTF8&rdquo;, 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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Zeichens_00c3_00a4tze_002fdie-Verwendung-von-UTF_002d8">Zeichensätze/die Verwendung von UTF-8</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Datenbankbenutzer-anlegen">Datenbankbenutzer anlegen</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#g_t_00c3_0084nderungen-an-Konfigurationsdateien">Änderungen an Konfigurationsdateien</a>,
aufw&auml;rts:&nbsp;<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 &ldquo;postgres&rdquo;
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:&nbsp;<a rel="previous" accesskey="p" href="#Erweiterung-f_00c3_00bcr-servergespeicherte-Prozeduren">Erweiterung für servergespeicherte Prozeduren</a>,
aufw&auml;rts:&nbsp;<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 &ldquo;postgres&rdquo; 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 &ldquo;postgres&rdquo; auf &ldquo;lxoffice&rdquo;
bzw. den hier gewählten Benutzernamen.
<!-- -->
<div class="node">
<p><hr>
<a name="Apache-Konfiguration"></a>
<a name="Apache_002dKonfiguration"></a>
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Der-Task_002dServer">Der Task-Server</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Anpassung-der-PostgreSQL_002dKonfiguration">Anpassung der PostgreSQL-Konfiguration</a>,
aufw&auml;rts:&nbsp;<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>
&lt;Directory /var/www/lx-erp&gt;
<br>
Options ExecCGI Includes FollowSymlinks
<br>
&lt;/Directory&gt;
<br>
<br>
&lt;Directory /var/www/lx-erp/users&gt;
<br>
Order Deny,Allow
<br>
Deny from All
<br>
&lt;/Directory&gt;
<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 &lsquo;<samp><span class="samp">+</span></samp>&rsquo; 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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Apache_002dKonfiguration">Apache-Konfiguration</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Prozesskontrolle">Prozesskontrolle</a>,
aufw&auml;rts:&nbsp;<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:&nbsp;<a rel="previous" accesskey="p" href="#Prozesskontrolle">Prozesskontrolle</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Einbinden-in-den-Boot_002dProzess">Einbinden in den Boot-Prozess</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Konfiguration-des-Task_002dServers">Konfiguration des Task-Servers</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Der-Task_002dServer">Der Task-Server</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Administratorpasswort">Administratorpasswort</a>,
aufw&auml;rts:&nbsp;<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 &ldquo;Authentifizierungsdatenbank&rdquo; 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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Grundlagen-zur-Benutzerauthentifizierung">Grundlagen zur Benutzerauthentifizierung</a>,
aufw&auml;rts:&nbsp;<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-&gt;{admin_password}</code>.
<div class="node">
<p><hr>
<a name="Authentifizierungsdatenbank"></a>
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Administratorpasswort">Administratorpasswort</a>,
aufw&auml;rts:&nbsp;<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-&gt;{DB_config}</code> konfiguriert. Hier sind die folgenden
Parameter anzugeben:
<ul>
<li>&lsquo;<samp><span class="samp">host</span></samp>&rsquo; &ndash; Der Rechnername oder die IP-Adresse des Datenbankservers
<li>&lsquo;<samp><span class="samp">port</span></samp>&rsquo; &ndash; Die Portnummer des Datenbankservers, meist 5432
<li>&lsquo;<samp><span class="samp">db</span></samp>&rsquo; &ndash; Der Name der Authentifizierungsdatenbank
<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;)
<li>&lsquo;<samp><span class="samp">password</span></samp>&rsquo; &ndash; 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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Authentifizierungsdatenbank">Authentifizierungsdatenbank</a>,
aufw&auml;rts:&nbsp;<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-&gt;{module}</code>.
<p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank
gespeichert werden, so muss der Parameter <code>$self-&gt;{module}</code> den
Wert &lsquo;<samp><span class="samp">DB</span></samp>&rsquo; 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-&gt;{module}</code> auf &lsquo;<samp><span class="samp">LDAP</span></samp>&rsquo;
gesetzt werden. In diesem Fall müssen zusätzliche Informationen über
den LDAP-Server in <code>$self-&gt;{LDAP_config}</code> angegeben werden:
<ul>
<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.
<li>&lsquo;<samp><span class="samp">port</span></samp>&rsquo; &ndash; Die Portnummer des LDAP-Servers; meist 389.
<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
<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
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.
<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.
<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
eingegebenen Benutzernamen ersetzt. Andernfalls wird der LDAP-Baum nach einem Element durchsucht, bei dem das oben angegebene Attribut
mit dem Benutzernamen identisch ist.
<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
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
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
eingegeben werden; in diesem Beispiel also &lsquo;<samp><span class="samp">Martin Mustermann</span></samp>&rsquo;.
</ul>
<div class="node">
<p><hr>
<a name="Name-des-Session-Cookies"></a>
<a name="Name-des-Session_002dCookies"></a>
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Anlegen-der-Authentifizierungsdatenbank">Anlegen der Authentifizierungsdatenbank</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Passwort_00c3_00bcberpr_00c3_00bcfung">Passwortüberprüfung</a>,
aufw&auml;rts:&nbsp;<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-&gt;{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:&nbsp;<a rel="previous" accesskey="p" href="#Name-des-Session_002dCookies">Name des Session-Cookies</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Drucken-mit-Lx_002dOffice">Drucken mit Lx-Office</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Benutzerauthentifizierung-und-Administratorpasswort">Benutzerauthentifizierung und Administratorpasswort</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Datenbanken-anlegen">Datenbanken anlegen</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Gruppen-anlegen">Gruppen anlegen</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Zusammenh_00c3_00a4nge">Zusammenhänge</a>,
aufw&auml;rts:&nbsp;<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 &lsquo;<samp><span class="samp">lxoffice</span></samp>&rsquo;).
<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 &lsquo;<samp><span class="samp">UTF-8</span></samp>&rsquo; setzen. Zusätzlich
muss beim Anlegen der Datenbank &lsquo;<samp><span class="samp">UTF-8 Unicode</span></samp>&rsquo; 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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Benutzer-anlegen">Benutzer anlegen</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Datenbanken-anlegen">Datenbanken anlegen</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Gruppen-anlegen">Gruppen anlegen</a>,
aufw&auml;rts:&nbsp;<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&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="#Migration-alter-Installationen">Migration alter Installationen</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="#Benutzer-anlegen">Benutzer anlegen</a>,
aufw&auml;rts:&nbsp;<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:&nbsp;<a rel="previous" accesskey="p" href="#Gruppenmitgliedschaften-verwalten">Gruppenmitgliedschaften verwalten</a>,
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="#Benutzer_002d-und-Gruppenverwaltung">Benutzer- und Gruppenverwaltung</a>
</div>
... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.

Auch abrufbar als: Unified diff