Mit einer "Multisite"- oder "Farm"-Installation ist hier gemeint, dass DokuWiki selbst (und alle Plugins und Templates) nur einmal installiert wird/werden, aber durch viele verschiedene Wikis - mit jeweils unterschiedlicher Konfiguration, unterschiedlichen Benutzeraccounts und natürlich unterschiedlichen Inhalten - genutzt werden.

"Multisite"-Installation von DokuWiki

Vorteil einer Multisite-Installation ist, dass DokuWiki selbst und alle Plugins und Templates nur einmal installiert, bei Neuerungen nur einmal geupdatet und ggf. nur an einer Stelle angepasst werden müssen, aber von beliebig vielen Wikis - auf derselben Maschine - genutzt werden können.

Nachteile einer Multisite-Installation sind, dass

  • alle Wikis über dieselben Plugins und Templates verfügen (die aber natürlich in der jeweiligen Konfiguration deaktiviert werden können!) und Plugins und Templates nur im "Master"-Wiki installiert werden können, und
  • alle Wikis sich in Unterverzeichnissen unter demselben Stammverzeichnis befinden müssen, deren Namen zudem dem Hostname (der "Domain") entsprechen müssen, unter dem (der) das Wiki aufgerufen wird.

Eine Installation, bei der DokuWiki-Code, Plugins und Templates nur einmal installiert, aber von vielen Wikis genutzt werden, wird als "Multisite"-Installation oder "Wikifarm" (bzw. "Farm") bezeichnet.

Das Haupt-Wiki - also die einmalige Installation von DokuWiki, Plugins und Templates - bezeichne ich als "Master"-Wiki; in der Dokumentation ist - im Sprachbild der "Farm" - in der Regel vom "Farmer"" die Rede.

Die nachgeordneten, unselbständigen Wiki-Installationen, die nur aus Konfiguration und Daten bestehen, aber nicht aus dem eigentlichen DokuWiki-Code, Plugins und Templates, werden im Sprachbild der "Farm" als "Animals" bezeichnet; ich nenne sie auch Wiki-Instanzen oder nachgeordnete Wikis.

Beschrieben wird hier eine Multisite-Installation, bei der jedes Wiki unter einem eigenen Hostnamen (bzw. einer "Domain") erreichbar ist, also ein eigener virtual host für jedes Wiki angelegt wird.

Als Webserver kommt ein Apache 2.2x unter Debian zum Einsatz; es wird aber nicht das Debian-Paket von DokuWiki verwendet.

Folgende Schritte sind durchzuführen:

  1. Installation und Konfiguration des "Master"-Wikis
  2. grundsätzliche "Multisite"-Konfiguration
  3. Einrichtung und Konfiguration der "nachgeordneten" Wiki-Instanzen

Der letzte Schritt ist dabei bei jeder Einrichtung eines neuen Wikis zu wiederholen.

Zunächst wird ein ganz normales DokuWiki eingerichtet und - wie üblich - gegen unbefugte Zugriffe gesichert und nach Wunsch konfiguriert.

Dieses Wiki kann als eigenständige Wiki-Instanz betrieben werden oder aber auch nur als "Gerüst" ("Master", "Farmer") für die "Multisite"-Installation oder "Wikifarm".

Die Installation und Deinstallation von Plugins und Templates im "Master"-Wiki wirkt sich auf alle anderen Wikis aus!

Wichtig ist es jedoch, bei seiner Konfiguration zu beachten, dass sich manche Änderungen hier auf alle anderen Wikis in der "Farm" bzw. "Multisite"-Installation auswirken. Wird bspw. ein Plugin hier installiert, steht es auch in allen anderen Wikis zur Verfügung; wird es wieder deinstalliert, fehlt es auch in allen anderen Wikis! Das gleiche gilt für Templates.

Auch muss bspw. eine für die Konfiguration des URL Rewritings via userewrite notwendige .htaccess-Datei im Verzeichnis des "Master"-Wikis angelegt werden und steht dann - und nur dann - für alle anderen Wikis gleichfalls zur Verfügung.

Die Konfiguration der Wikis - und der Templates und Plugins! - erfolgt dann hingegen wieder für jedes Wiki getrennt.

Dementsprechend sollten in einem zweiten Schritt alle in irgendeinem Wiki erforderlichen oder erwünschten Plugins und Templates im "Master"-Wiki über die üblichen Mechanismen installiert werden.

Die Vorbereitungen für die "Multiside"-Konfiguration sind recht einfach:

Stammverzeichnis anlegen

Zunächst muss ein Stammverzeichnis angelegt werden, unterhalb dessen später die einzelnen Verzeichnisse für die einzelnen Wiki-Instanzen angelegt werden. Dieses Verzeichnis kann bspw. /var/www/wikifarm/ heißen oder auch /home/user/websites/dokuwiki-multisite oder irgendwie anders. Entscheidend ist nur, dass zukünftig alle Wiki-Instanzen in Verzeichnissen unterhalb dieses Verzeichnisses angelegt werden.

Masterwiki für "Multisite"-Einsatz konfigurieren

Danach wird das "Master"-Wiki für den "Multisite"-Einsatz konfiguriert. Dazu wird im Verzeichnis inc/ des "Master"-Wikis zunächst die Datei preload.php.dist nach preload.php umkopiert oder verschoben.

Diese Datei wird danach folgendermaßen bearbeitet:

// set this to your farm directory
if(!defined('DOKU_FARMDIR')) define('DOKU_FARMDIR', '/var/www/wikifarm');
 
// include this after DOKU_FARMDIR if you want to use farms
include(fullpath(dirname(__FILE__)).'/farm.php');

Statt /var/www/wikifarm/ muss natürlich der Name des angelegten Stammverzeichniss eingetragen werden.

Für jede neue Wiki-Instanz ist folgendermaßen vorzugehen:

Instanzverzeichnis anlegen

Unterhalb des Stammverzeichnisses, bspw. /var/www/wikifarm/, wird ein neues Verzeichnis mit dem (Host-)Namen des neuen Wikis angelegt, bspw. wiki.domain.example:

cd /var/www/wikifarm/
mkdir wiki.domain.example

Instanzverzeichnis mit einem Template befüllen

Das leere Stammverzeichnis wird mit einem vorbereiteten "Template" gefüllt, das die notwendigen Unterverzeichnisse und eine Basiskonfiguration - mit dem Benutzernamen und Passwort admin - enthält.

Im Stammverzeichnis geht das bspw. folgendermaßen:

cd /var/www/wikifarm/
wget www.dokuwiki.org/_media/dokuwiki_farm_animal.zip
unzip dokuwiki_farm_animal.zip
cp -r _animal/* wiki.domain.example/

Das "Template" wird in das Verzeichnis _animal entpackt. Bei späterer Neuanlage weiterer Wiki-Instanzen kann man sich dann auf den letzten Befehl, also cp -r _animal/* wiki.domain.example/, beschränken. Außerdem ist es natürlich möglich, das "Template" entsprechend zu modifizieren und so eine eigene Basiskonfiguration für die Wiki-Instanzen vorzugeben.

Webserver konfigurieren

Nun muss noch die Webserver-Konfiguration erfolgen; dabei ist als DocumentRoot immer das Stammverzeichniss anzugeben, nicht das Verzeichnis der jeweiligen Wiki-Instanz! Die vhosts sind also alle identisch konfiguriert.

Für Apache unter Debian kann das folgendermaßen aussehen:

cd /etc/apache2/sites-available/
vim wiki.domain.example
# [vhost-Konfiguration]
a2ensite wiki.domain.example
service apache2 reload

Die Konfiguration des virtual hosts könnte bspw. so aussehen:

# wiki.domain.example
<VirtualHost *:80>
  ServerAdmin webmaster@domain.example
  ServerName wiki.domain.example
 
  # This is the master wiki/farmer, *not* the wiki instance/animal
  # Do *not* put /var/www/wikifarm/wiki.domain.example here!
  DocumentRoot /var/www/dokuwiki-master
 
  # mod_rewrite
  <Directory /var/www/dokuwiki-master/>
    Options +FollowSymLinks +SymLinksIfOwnerMatch
    AllowOverride All
  </Directory>
</VirtualHost>
 
# redirect http://www.wiki.domain.example/*
<VirtualHost *:80>
  ServerAdmin webmaster@domain.example
  ServerName www.wiki.domain.example
 
  Redirect / http://wiki.domain.example/
</VirtualHost>

Wiki konfigurieren

Das neu eingerichtete Wiki kann jetzt unter der URL http://wiki.domain.example/ aufgerufen und konfiguriert werden.

Achtung!
Benutzername und Passwort sofort ändern!

Das neue Wiki wird mit einem Standardaccount admin mit dem Passwort admin angelegt, der volle administrative Rechte hat! Das sollten Sie als allererstes ändern und diese Konfigurationsänderung auch sofort speichern! Alternativ können Sie bereits im einkopierten "Template" in der Datei /var/www/wikifarm/wiki.domain.example/conf/users.auth.php ein anderes Passwort vorgeben.

Danach nehmen Sie die von Ihnen gewünschten Einstellungen in der Konfiguration ganz wie gewohnt vor.

Dabei sollten Sie daran denken, diejenigen Plugins, die in dieser Instanz nicht benötigt werden, zu deaktivieren.

Die Übernahme der Daten aus einem alten Wiki ist trival möglich. Dazu ist es nur erforderlich, nach dem Einkopieren des Templates und vor der Konfiguration des Webservers die bisherigen Daten zu übernehmen. Zu diesem Zweck werden die kompletten Verzeichniss conf und data aus dem Bestand des bisherigen Wikis in das Verzeichnis des neuen Wikis kopiert.

Danach kann dann die Webserverkonfiguration geändert werden. Die alten Benutzer bleiben aktiv; ggf. sind nur noch unnötige Plugins zu deaktivieren.

Ganz zu Anfang sollten freilich im "Master"-Wiki alle Plugins und Templates installiert worden sein, die das konvertierte alte Wiki benötigt.

Weitere Tips und Tricks gibt es auch im DokuWiki-Wiki unter Advanced Farm Setups and Tips.

Lizenz und Kommentare

Dieser Text steht, wie angegeben, unter der CC-Lizenz CC-by-nc-sa 4.0.

Nachfragen, Hinweise und Ergänzungen können Sie gerne per E-Mail an mich richten, oder Sie tun dies als Kommentar bei dem zugehörigen Blogbeitrag.

Orginalbeitrag: www.wiki.th-h.de/doku:dokuwiki-multisite