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.
if (!empty($_GET['w'])) {Die .htaccess hat folgenden Aufbau:
$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;
RewriteEngine OnIn den einzelnen wikispezifischen LocalSettings-Dateien befinden sich die Datenbank Parameter usw.
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php?w=%1&%{QUERY_STRING} [L]
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