Archiv der Kategorie: Internet

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.