Archiv der Kategorie: Internet

Horde Groupware Webmail Edition webgehostet

Mit der Horde Groupware Webmail Edition kann man, wenn man ein IMAP-Mail-Konto hat, über eine Web-Schnittstelle von überall aus auf seine Mails zugreifen. Für Besitzer eigener Domains und zugehöriger E-Mail-Adressen bietet das gegenüber etwa Google Mail den Vorteil, diese Adressen als Absender-Adressen nutzen zu können und E-Mails dabei auch über den SMTP-Server zu verschicken, an den die Adressen ggf. per SPF gekettet sind.

Die Horde-Entwickler haben Leute im Blick, die wirklich über einen eigenen Server gebieten. Eine Installation bei einem Webhoster, bei dem man nur einen FTP-Zugang hat, ist nicht vorgesehen. Das wollte ich aber. Und es geht. Zum Glück beinhaltet mein Webhosting-Paket all die PHP-Erweiterungen, die Horde verlangt.

Für die Art von Installation, die mir gelungen ist, braucht man außer dem entfernten Webserver mit FTP-Zugang und einer Möglichkeit, MySQL zu verwalten (z.B. phpMyAdmin), auch noch eine lokal laufende MySQL-Datenbank, „gegen“ die man Horde erst mal vorkonfigurieren kann. Das geschieht nämlich mit Hilfe des Skripts scripts/setup.php, das man von der Kommandozeile aus ausführen muss. Man benötigt also auch eine lokale PHP-Installation mit Kommandozeileninterpreter. Die muss aber nicht all die von Horde geforderten Erweiterungen aufweisen.

Man lädt sich also Horde runter, geht in das Horde-Verzeichnis, tippt…

php scripts/setup.php

und sieht:

Configuration Menu
(0) Exit
(1) Configure database settings
(2) Create database or tables
(3) Configure administrator settings

Der Trick ist jetzt, diese Punkte in der Reihenfolge 1, 2, 1, 3, 0 abzuarbeiten. Also:

  1. (1) Die Datenbankeinstellungen für die lokale Datenbank vornehmen. Das UNIX-Socket, das man angeben muss, kann man bei entsprechend konfiguriertem PHP z.B. per phpinfo() herausfinden, dort ist es unter der Überschrift mysql aufgeführt.
  2. (2) Die von Horde benötigten Tabellen in der lokalen Datenbank erzeugen lassen.
  3. (1) Die Datenbankeinstellungen auf die für die Datenbank auf dem Zielserver benötigten Werte ändern. Wie man das UNIX-Socket herausfindet, siehe unter 1.
  4. (3) Den zum eigenen IMAP-Postfach gehörigen Benutzernamen als Administrator-Benutzernamen angeben.
  5. (0) Das Konfigurationsskript verlassen.
  6. Die unter 2 in der lokalen Datenbank erzeugten Tabellen exportieren und auf dem Zielserver importieren. Das geht z.B. mit phpMyAdmin.
  7. Das Horde-Verzeichnis mitsamt der unter 3 erzeugten config/conf.php auf den Zielserver hochladen.
  8. Von hier ab reicht die offizielle Horde-Installationsanleitung wieder.

Server-Umzug mit MediaWiki

Seit März habe ich auf dem eigenen localhost eine MediaWiki-Installation gestylt, mit Inhalt gefüllt und mit Erweiterungen versehen (Spezialseiten und Parser-Hooks, teilweise selbst zusammengehackt). Jetzt ist das Wiki fast bereit für das Licht der Öffentlichkeit. Daher habe ich es jetzt auf meinen Webserver „migriert“. Davor hatte ich ein bisschen Angst gehabt, es ging aber ganz gut. Zum Glück sind die PHP-Konfigurationen auf beiden Servern ziemlich ähnlich. So war nur Folgendes zu tun:

  • Dateien hochladen
  • Einige aus Faulheit hartkodierte URLs im Style-Skript aktualisieren
  • Datenbank-Tabellen per phpMyAdmin exportieren und importieren – hier musste ich die Riesentabelle mw_text in zwei Teilen hochladen.
  • In LocalSettings.php den $wgScriptPath anpassen. Für das „Wurzelverzeichnis“ einer Domain ist das nicht etwa "/", sondern "".
  • MediaWiki unterstützt die Kommunikation mit der Datenbank in UTF8 bisher nur experimentell und optional. Die Inhalte von Wiki-Seiten werden binär, also als BLOBs gespeichert. Die Seitentitel dagegen werden UTF8-kodiert in Feldern gespeichert, die als latin1_bin gekennzeichnet sind. Das führt – aufgrund einer Fehlfunktion phpMyAdmins? – bei jedem Import/Export dazu, dass die Seitentitel um eine Stufe weiter hieroglyphisiert werden. Aus Menü wird Menü, beim nächsten mal würde daraus etwas mit vier komischen Zeichen, und so weiter. Zwei Lösungen habe ich ausprobiert:
    • Quickfix: Die experimentelle Unterstützung für kodierungsbewusste Kommunikation mit der Datenbank ausschalten (LocalSettings.php: $wgDBmysql5 = false), sodass MediaWiki die Zeichen selbst richtig rechnet. Funktionierte, war aber keine gute Idee, da ich die Unterstützung eigentlich eingeschaltet hatte, um in Erweiterungen UTF8-Strings ohne zeitraubendes Konvertieren aus meinen eigenen Tabellen holen und ausgeben zu können. Meine Erweiterungen produzierten jetzt UTF8-ungültige Strings und übergaben sie dem Parser, worauf dieser mit kommentarloser Arbeitsverweigerung reagierte. Ich habe sehr lange gebraucht, um herauszufinden, wieso meine Spezialseiten plötzlich leer waren. Also schnell wieder $wgDBmysql5 = true und…
    • …in Handarbeit alle Seiten mit Sonderzeichen im Titel „verschieben“. :-(

In der Hoffnung, dass diese Notizen mal jemandem helfen, der vor einer ähnlichen Aufgabe steht.