OpenGroupware auf SME Server 7 installieren, Teil 1

Sonntag, 06. August 2006

SMEDen Groupware-Server OpenGroupware setzt man am Besten mit Debian Sarge auf. Zum einen ist Sarge die primäre Entwicklungsumgebung von OpenGroupware und wird auch entsprechend unterstützt, zum anderen schwören Administratoren nicht zu Unrecht auf Sarge als Serverplattform.

Im konkreten Fall verwenden wir jedoch als Basis den SME-Server 7, ehemals e-Smith Server and Gateway, auf dessen erweiterte Arbeitsgruppenfunktionalität wir es eigentlich abgesehen haben, während die Groupware nur als Zusatzmodul zur Zeitplanung sowie zur Adreß- und Projektverwaltung eingesetzt werden soll. Ein Datenbestand für OpenGroupware liegt bereits aus einer früheren Sarge-Installation vor (als PostgreSQL-Dump sowie als Backup des Verzeichnisses /var/lib/opengroupware.org – wir hatten unter Sarge die Projektablage im Dateisystem eingerichtet).

Für das Aufsetzen von OpenGroupware hat man zwei Möglichkeiten: Selbst backen aus den Sourcen oder passende Pakete finden. Source fällt erfahrungsgemäß aus, da diese Mischung aus Objective C und vielen internen Abhängigkeiten relativ fies zu kompilieren ist (es soll sich zwar einiges getan haben, aber wenn man nicht unbedingt muß…). Bleibt also die Hoffnung auf fertige Pakete.

Der SME Server 7 basiert inzwischen auf CentOS 4.3, was wiederum ein Klon des Rothut Enterprise Servers (RHEL4) ist. Ein Blick in den Downloadbereich auf opengroupware.org zeigt, daß RHEL4 unterstützt wird. Nun kommt der Haken: Welche Version der Groupware nehmen? Was bedeutet dort „Trunk“ oder Release? Daneben gibt’s im Downloadbereich noch „nightly builds“ aus dem CVS sowie stable und unstable. Die etwas veraltete Installationsübersicht empfiehlt nach der eher verwirrenden Erklärung schlußendlich: „Summary: use some release, unless you know what you are doing :-)“.

Und daran wollen wir uns auch halten. Beim Stöbern im Downloadbereich auf opengroupware.org fiel auf, daß es unter den nightly builds, allerdings unter „release“, ein OGo-Repository für CentOS 4.3 und „yum“ gibt. Also nehmen wir dieses, und zwar die letzte stabile OGo-Version (1.0beta2-rock) vom November 2005.

Der SME Server hat abweichend von CentOS eine Besonderheit bei der Konfiguration von Systemdiensten und den stardardmäßig installierten Servern. Die Konfig-Dateien werden generiert aus Templates mit festen Voreinstellungen für die Konfigurationsdateien sowie aus editierbaren Templates für abweichende oder ergänzende Konfigurationen. Beide liegen in getrennten Verzeichnisbäumen unter /etc/e-smith. Die eigentlichen Konfig-Dateien werden dann von Perl-Skripten aus diesen beiden Bestandteilen zusammengebaut.

Das heißt aber auch, daß ein manuelles Ändern „normaler“ regulärer Konfigurationsdateien nur bis zur nächsten Rekonfiguration des Systems Gültigkeit hat. Man hat sowas Ähnliches ja noch aus alten SuSEs in Erinnerung, wenn Yast alles überbügelte. ;-) Im Gegensatz dazu ist dieses Prinzip beim SME Server weitaus mächtiger, was wir weiter unten noch sehen werden. Von diesem Mechanismus ist leider auch die Liste der Repositorien der Paketverwaltung  Yum in /etc/yum.conf betroffen. Dort sind standardmäßig die SME-Repositories aktiviert, die für CentOS zuständigen Einträge aber deaktiviert.

PostgreSQL installieren

Tipp: Für alle Schraubarbeiten in den tief verschachtelten Verzeichnisbäumen des SME empfiehlt sich der Midnight Commander, der dankenswerter Weise bereits standardmäßig installiert ist und durch ein „mc“ aufgerufen wird. Mit „F4“ läßt sich eine Datei bearbeiten, mit F5 kopieren und F6 verschieben.

Alle weiteren Arbeiten sind als root-User auszuführen! Das Paßwort ist identisch mit dem Paßwort des „admin“-Users für die SME Frontend-Konfiguration.

In der /etc/yum.conf setzen wir das Basis-Repository von CentOS vorübergehend auf „enabled=1“, denn wir brauchen zunächst die PostgreSQL-Datenbank. Dann machen wir ein

yum install postgresql
yum install postgresql-server

Nach der Installation kommt das SME-Special:

signal-event post-upgrade; signal-event reboot

womit die Systemkonfiguration nach dem Reboot neu generiert wird. Damit die PostgreSQL-Datenbanken und Konfig-Dateien angelegt werden, starten wir PostgreSQL nach dem Reboot erstmals mit

/etc/init.d/postgresql start

PostgreSQL soll über TCP erreicht werden. Dazu setzen wir in der Datei /var/lib/pgsql/data/postgresql.conf den Eintrag tcpip_socket = true. Damit wir von localhost auch Zugriff haben, kommentieren wir im selben Verzeichnis in der pg_hba.conf die Zeile

host all all 127.0.0.1 255.255.255.255 trust

aus. Danach die Datenbank neu starten mit /etc/init.d/postgresql restart.

Runlevel-Link setzen

Damit PostgreSQL bei jedem Systemstart hochgefahren wird, muß das Startskript in das passende /etc/rc.d-Verzeichnis verlinkt werden. Wir erreichen das durch Eingabe von

chkconfig postgresql on

Der SME Server hat bei Startskripten eine kleine Spezialität, nämlich einen eigenen Runlevel 7(!), in den beim Booten gewechselt wird. Folglich kopieren wir schlicht den Link aus Runlevel 3 nach Runlevel 7 (/etc/rc.d/rc7.d).

ngobjweb installieren

Jetzt benötigen wir das Apache-Modul mod_ngobjweb, die Schnittstelle zur Groupware, und hier wird es leider kritisch: Weder CentOS noch das ausgewählte CentOS-Repository auf OpenGroupware.org hat es! Wir behelfen uns hier mit dem Modul aus dem RHEL4-Repository und machen ganz unfein als root in /root ein

wget http://download.opengroupware.org/nightly/packages/rhel4/
releases/opengroupware-1.0beta.2-rock/
mod_ngobjweb-2.0.52-r1173.0.i386.rpm

Obiges in einer(!) Zeile eingeben. Ein rpm -i mod_ngobjweb installiert das Apache-Modul.

ngobjweb in Apache-Konfiguration integrieren

Wichtig: Da der Apache im Gegensatz zu PostgreSQL und OpenGroupware zur Installation des SME Servers gehört, müssen alle Konfigurationen, die Änderungen an der Apache-Konfig vornehmen wollen, an die spezielle Konfigurationsweise des SME angepaßt werden. Andernfalls werden sie bei der nächsten System-Rekonfiguration des SME überschrieben.

Die Konfigurationsdatei des Apachen httpd.conf wird beim SME Server aus mehreren Templates unter /etc/e-smith/templates generiert. Dort wird der Dateibaum nachgebildet, jede Konfigurationsdatei hat zusätzlich ein eigenes Verzeichnis für die Templates – aus mehreren Template-Schnippseln werden schließlich die fertigen Konfigurationsdateien generiert. Die diversen Bestandteile der httpd.conf des Apachen liegen z.B. im Verzeichnis

/etc/e-smith/templates/etc/httpd/conf/httpd.conf

Das ist ein Verzeichnis, keine Datei. Im Verzeichnis(!) httpd.conf liegen alle Templates für die Standard-Konfiguration des Apachen. Will man diese Konfiguration durch eigene Einträge ergänzen oder ersetzen, beutzt man dafür eigene Templates unter /etc/e-smith/templates-custom. Für den Apachen müßte man also eine neue Verzeichnisebene anlegen:

/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf

Dort abgelegte eigene Templates ergänzen oder ggf. überschreiben (falls der Dateiname des Templates identisch mit dem SME-Template ist) dann die Standard SME-Konfiguration. Beim Zusammenbau der Datei httpd.conf werden die Templates in alphabetischer Reihenfolge abgearbeitet, Benutzer-Templates haben dabei Vorrang. An welcher Stelle die Perl-Skripte beim Rebuild die Template-Schnippsel in die fertige httpd.conf-Datei einbauen, wird also durch den Dateinamen bestimmt (sowas ähnliches kennen wir ja bereits bspw. durch die Einträge in /etc/rc.d o.ä.).

Die ngobjweb.conf aus der rpm-Installation kopieren wir als Datei 20LoadModule99ngobjweb ins Verzeichnis  /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf, rufen anschließend die Rekonfiguration des SME auf mit

signal-event post-upgrade; signal-event reboot

und betrachten uns nach dem Reboot die neue Datei /etc/httpd/httpd.conf. Das ngobjweb-Modul sollte nun unter den anderen Apache-Modulen auftauchen.

Mit den Apache-Konfigurationsdateien des OpenGroupware-Servers wird später im zweiten Teil ähnlich verfahren.

Im zweiten Teil: OpenGroupware via yum downloaden, installieren und konfigurieren.

Tags: | Drucken Drucken
Artikel vom Sonntag, 06. August 2006, 23:35 Uhr in der Kategorie Docs. Sie können Kommentare zu diesen Eintrag durch den RSS-Feed verfolgen. Wenn Sie möchten, können Sie einen Kommentar hinterlassen oder einen Trackback von Ihrem Weblog senden.

«  –  »

2 Comments »

  1. just a little spelling error:
    Eintrag tcpip_tocket = true. Damit wir von
    should be
    Eintrag tcpip_socket = true. Damit wir von

    Comment: Franz – 09. November 2006 @ 07:46

  2. Uuuups! Fixed, thank you.

    Comment: Thomas Schramm – 09. November 2006 @ 13:35

Leave a comment