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. ===== Begrifflichkeiten ===== 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**. ===== Offizielle Dokumentation ===== * [[https://www.dokuwiki.org/farms|Beschreibung und Installationsanleitung]] * [[https://www.dokuwiki.org/tips:farm|Übersichtsseite mit Links zu verschiedenen aktuellen und überholten Ansätzen]] ===== Vorgehensweise ===== 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: - Installation und Konfiguration des "Master"-Wikis - grundsätzliche "**Multisite**"-Konfiguration - Einrichtung und Konfiguration der "nachgeordneten" Wiki-Instanzen Der letzte Schritt ist dabei bei jeder Einrichtung eines neuen Wikis zu wiederholen. ==== Installation und Konfiguration des "Master"-Wikis ==== 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 ''[[https://www.dokuwiki.org/config:userewrite|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. ==== "Multisite"-Konfiguration ==== 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. ==== Einrichtung und Konfiguration einzelner Wiki-Instanzen ==== 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 [[https://www.dokuwiki.org/_media/dokuwiki_farm_animal.zip|"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 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 Options +FollowSymLinks +SymLinksIfOwnerMatch AllowOverride All # redirect http://www.wiki.domain.example/* ServerAdmin webmaster@domain.example ServerName www.wiki.domain.example Redirect / http://wiki.domain.example/ === 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. ===== Altes Wiki konvertieren ===== 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. ===== Fortgeschrittene Lösungen ===== Weitere Tips und Tricks gibt es auch im //DokuWiki//-Wiki unter [[https://www.dokuwiki.org/farms:advanced|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 [[nrr>1727|Blogbeitrag]].