Dienstag, 16. August 2011

Mediawiki - Eine Installation, mehrere Wikis

Im Moment bin ich bei einem Kunden in Nürnberg. Dieser hat ca. 45 Wikis am Laufen und möchte diese nun von Version 1.11 auf die aktuelle Version 1.17 umstellen. Jedes dieser Wikis ist in einem Unterverzeichnis unterhalb des DocumentRoot installiert, aber mit jeweils einer eigenen Datenbank.
Nun stellte sich mir die Frage: 45 Wikis einzeln aktualisieren oder die Architektur so umbauen, dass nur einmal der Source Code vorhanden ist.

Ich habe mich für die letzte Variante entschieden. Folgendes System ist nun vorhanden:
  • Unter /srv/www/ ist ein komplettes MediaWiki installiert. Hier wurde bei der Installation das erste Wiki schon mit einer eigenen Datenbank installiert.
  • Danach habe ich die LocalSettings.php umbenannt in LocalSettings_wiki1.php.
  • Die einzelnen Wikis werden durch die Pfade an der URL unterschieden.
  • Hierzu wurde eine .htaccess Datei angelegt, welche die entsprechenden RewriteRules enthält.
  • Für jedes weitere Wiki gibt es nun eine eigene LocalSettings_XXX.php.
Die zentrale LocalSettings.php sieht so aus:
if (!empty($_GET['w'])) {
    $wiki = htmlentities(strip_tags($_GET['w']));
    $wiki = str_replace('/','',$wiki);
}   
else
    $wiki = '';
   
if (empty($_SESSION['wiki']) || $_SESSION['wiki'] != $wiki) {
    $_SESSION['wiki'] = $wiki;
} else {
    $wiki = $_SESSION['wiki'];
}
include('LocalSettings_'.$wiki.'.php');

$wgUsePathInfo = false;
$wgScript      = $wgScriptPath.'/'.$wiki;
$wgArticlePath = "{$wgScript}?title=$1";
$wgLoadScript  = $wgScriptPath.'/load'.$wgScriptExtension.'?w='.$wiki;
Die .htaccess hat folgenden Aufbau:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php?w=%1&%{QUERY_STRING} [L]
In den einzelnen wikispezifischen LocalSettings-Dateien befinden sich die Datenbank Parameter usw.

Die nächste Aufgabe ist die Realisierung eines Single-Sign-Ons für diese Wikis aus dem Active Directory und Zuordnung eines Wikis zu einer speziellen AD-Gruppe.

Ich berichte demnächst weiter...

0 Kommentare:

Kommentar veröffentlichen