Home       Servicebereich  Projekte  Kontakt  

Getrennte Instanzen


Konfigurationsmöglichkeiten

Die Architektur von OpenGroupware ermöglicht es, mehrere vollständig voneinander getrennt arbeitende OGo Instanzen auf einem System zu installieren. Die Konfiguration der Systeme ist nicht ganz einfach. Es müssen Anpassungen auf mehreren Ebenen vorgenommen werden. Alle Eingriffe sind jedoch von den Möglichkeiten des Systems abgedeckt, so das das System auch weiterhin einfach zu pflegen ist.

Alle Instanzen können völlig getrennt voneinander betrieben werden, so daß keine Gefahr besteht, daß die Benuzter einer Instanz aufgrund unglücklicher Rechtevergabe im OGo System auf die Daten einer anderen Instanz zugreifen können.

Jedes Sytem greift auf einen eigenen Datenbank-Tablespace mit einem eigenen Benutzer zu. Die hochgeladenen Dateien liegen an völlig unterschiedlichen Orten im Filesytem des Hosts.

Installation

Im Beispiel wird OGo aus Binärpaketen installiert. Hier werden zuerst die rpm bzw. deb Pakete installiert. Für die einzelnen OGo Instanzen werden die relevanten Verzeichnisbäume in die jeweiligen Zielverzeichnisse kopiert. Das Beispiel basiert auf einer Debian Installation.

Aufbau der Filesystemstruktur

Das neue System wird nach $PREFIX/ogo-<instanz> installiert. Im Beispiel wird $PREFIX auf /opt gesetzt.

Die Dateien und Verzeichnisse unterhalb des Verzeichnisses /usr/lib/opengroupware.org werden nach /opt/ogo-mw kopiert.

    cp -a /usr/lib/opengroupware.org /opt/ogo-mw

Pfade anpassen

Im Script /opt/ogo-mw/OpenGroupware.org.sh wird die Variable FORCED_USER_ROOT auf den neuen Pfad gesetzt (hier /opt/ogo-mw). Zusätzlich werden in diesem Script die Umgebungsvariablen $HOME und $PATH an das neue Verzeichnis angepaßt.

Datenbank initialisieren

Bei der Initialisierung der Datenbank ist nur zu beachten, daß zur Trennung auf Datenbankebene für diese Instanz ein eigener Tablespace (Datenbank) vorgesehen wird.

    root@bauhaus# createdb -U postgres -W ogo-mw
    root@bauhaus# createuser -U postgres -W -A -D -P ogo-mw

Jetzt ist das Datenbanksystem einschließliche eines Datenbankusers mit Schreibzugriff vorbereitet. Als nächsts wird das Datenbankschema eingespielt. Dieses liegt als SQL-Dump in der Datei $PREFIX/ogo/Database/PostgreSQL/pg-build-schema.psql vor und muß in PostgreSQL importiert werden. Dazu meldet sich der eben erstellte Datenbankuser am System an und importiert die Datei.

    root@bauhaus# psql -U ogo-mw -W ogo-mw
    ogo=# \i /opt/ogo-mw/ogo/Database/PostgreSQL/pg-build-schema.psql
    ogo=# \q

Datenbankanbindung konfigurieren

Die Datenbankeinstellungen werden in speziellen Konfigurationsdateien gespeichert (siehe auch Defaults). Die Konfiguration wird mit Hilfe des Befehls Defaults gesetzt. Der Befehl befindet nach Aufruf des Scriptes /opt/ogo-mw/ogo/OpenGroupware.org.sh im Pfad des jeweiligen Benutzers.

    root@bauhaus# su - ogo-mw
    ogo-mw@bauhaus$ Defaults write NSGlobalDomain \
    LSConnectionDictionary '{ \
      databaseName = ogo-mw; \
      hostName = localhost; \
      password = YOUR_PASSWORD; \
      port = 5432; \
      userName = ogo-mw; \
    }'
Der gesamte Befehl muß in einer Zeile abgesetzt werden. Beim Aufruf von Defaults kann der "\" nicht zum Escapen von "\n" angegeben werden.

Mit Defaults read können die Einstellungen noch einmal geprüft werden.

    ogo-mw@bauhaus$ Defaults Read \
    NSGlobalDomain LSConnectionDictionary
    {
        databaseName = "ogo-mw";
        hostName = localhost;
        password = "YOUR_PASSWORD";
        port = 5432;
        userName = "ogo-mw";
     }

Mit Defaults read werden alle Einstellungen angezeigt. Dieses sollte auf jeden Fall durchgeführt werden, um sicherzustellen, daß alle Einstellungen (z.B. Pfade) auf das korrekte Verzeichnis der Instanz zeigen.

Initscript ür die Instanz erstellen

Die einzelnen Instanzen sollen automatisch per init-Script gestartet werden. Jede einzelne Instanz bekommt ein eigenes Script um diese getrennt starten und stoppen zu können.

Die Daemons OpenGroupware, xmlrpcd und zidestore werden jetzt beim Systemstart so ausgeführt, daß sich sich für jede Instanz jeweils an einen eigenen Port binden. Aus Sicherheitsgründen binden sie sich ausschließlich an das Loopback Device. Eine alternative Lösung könnte die Daemons an unterschiedliche IP-Adressen binden.

Das Script wird jetzt nach /etc/init.d kopiert. Das Startscript für die Instanz wird an die lokalen Gegebenheiten mittels der Variablen INSTANCE_ROOT, INSTANCE_NAME und BASEPORT angepaßt.

Das Script wird dann mit update-rc.d (Debian) oder dem jeweils bevorzugten Tool die Startprozedur des Systems eingebunden werden.

Apache Konfiguration

Der zugriff auf die einzelnen OpenGroupware.org Instanzen erfolgt über unterschiedliche Hostnames. Die Konfiguration des VirtualHosts für die Instanz ist relativ einfach. Hier müssen nur die Alias-Direktive für das Mapping auf "WebServerResources" und die Port-Direktive fü die jeweilige Instanz angepaßt werden.

    <LocationMatch "^/OpenGroupware/*">
        SetHandler ngobjweb-adaptor
        SetAppPort 21000
    </LocationMatch>


    Alias /OpenGroupware.woa/WebServerResources/ \
          /opt/ogo-mw/WebServerResources/





< zurück  | weiter >