Mehrere Mediawiki-Instanzen trotz Debian-Paket
Warnung: Dieser Artikel beschäftigt sich nicht mit der grundlegenden Installation und Konfiguration von Mediawiki, lediglich mit der Aufsplittung in mehrere Instanzen! |
Idee
Manchmal kommt es vor, dass man auf einem Webserver mehrere Wikis hosten möchte. Hierzu sind mehrere Instanzen einer Wiki-Software, in diesem Beispiel Mediawiki, nötig.
Das Problem daran ist, dass damit, ohne ein bisschen Kreativität, nur die Möglichkeit bleibt, Mediawiki mehrmals getrennt von Hand zu installieren. Das ist aufwendig und nimmt vor allem die Möglichkeit, über das Debian-Paketsystem auf dem aktuellen Stand zu bleiben.
Doch dank der Struktur des mediawiki-Paketes in Debian ist es, mit ein bisschen Magie, möglich, mehrere Instanzen auch mit dem Debian-Paket zu betreiben.
Im Abschnitt [#Automatisches_Management-Skript Automatisches Management-Skript] wird ein Skript vorgestellt, das die Verwaltung von beliebig vielen Instanzen mit nur wenigen Kommandos inkl. semi-automatischer Updates ermöglicht.
Basisinstallation
Zunächst installieren wir das mediawiki-Paket sowie einige nette Extras:
root@debian:~# apt-get install mediawiki mediawiki-extensions mysql-server
Mehrere Instanzen
Analyse und Annahmen
Schauen wir uns einmal an, was das Paket installiert. Im Wesentlichen drei wichtige Dinge:
- /usr/share/mediawiki - Hier liegen alle statischen Dateien und der Mediawiki-Code. All das teilen sich alle Instanzen.
- /var/lib/mediawiki - Hier liegt eine Instanz des Wikis, mit Symlinks auf die statischen Daten und einigen lokalen Verzeichnissen
- /etc/mediawiki - Hier ist Platz für die Konfiguration der Instanzen und hier liegt die Apache-Konfiguration
Im Folgenden werden wir zwei Mediawiki-Instanzen anlegen. Hierfür benutzen wir die Pfade /var/www/wikis/wiki1 und /var/www/wiki2. Die entsprechende Mediawiki-Konfiguration dazu legen wir in /etc/mediawiki ab, so dass dort folgende Struktur entsteht:
/etc/mediawiki/ |- wiki1/ |- LocalSettings.php |- AdminSettings.php |- wiki2/ |- LocalSettings.php |- AdminSettings.php
Wiki-Instanzen anlegen
Die Wiki-Instanzen legen wir an, indem wir einfach den Inhalt von /var/lib/mediawiki in unsere Wiki-Verzeichnisse kopieren:
root@debian:~# mkdir -p /var/www/wikis
root@debian:~# cp -pra /var/lib/mediawiki /var/www/wikis/wiki1
root@debian:~# cp -pra /var/lib/mediawiki /var/www/wikis/wiki2
Danach legen wir die Konfigurations-Verzeichnisse an:
root@debian:~# mkdir -p /etc/mediawiki/wiki1
root@debian:~# mkdir -p /etc/mediawiki/wiki2
Hierin werden dann die Dateien AdminSettings.php und LocalSettings.php entsprechend der Mediawiki-Installationsanleitung angelegt. Diese müssen dann in die Wiki-Instanzen gelinkt werden:
root@debian:~# ln -fs /etc/mediawiki/wiki1/* /var/www/wikis/wiki1
root@debian:~# ln -fs /etc/mediawiki/wiki2/* /var/www/wikis/wiki2
ACHTUNG: Wenn das MediaWiki-Installationstool ausgibt ...
Installation successful! Move /var/lib/mediawiki/config/LocalSettings.php to /etc/mediawiki, then follow this link to your wiki.
... muss natürlich die Konfiguration aus dem entsprechenden Verzeichnis, z.B. /var/www/wiki1/config/LocalSettings.php kopiert werden, nicht aus /var/lib/mediawiki!
Apache-Konfig anpassen
Das Konfigurations-Fragment für den Apache-Webserver liegt in /etc/mediawiki/apache.conf und geht von einer einzelnen Instanz aus. Mit Hilfe von regulären Ausdrücken können wir es recht universell anpassen:
<Directory ~ "^/var/www/wikis/.*"> Options +FollowSymLinks AllowOverride All order allow,deny allow from all </Directory> # some directories must be protected <Directory ~ "^/var/www/wikis/.*/config"> Options -FollowSymLinks AllowOverride None </Directory> <Directory ~ "^/var/www/wikis/.*/upload"> Options -FollowSymLinks AllowOverride None </Directory>
Nach einem
root@debian:~# /etc/init.d/apache2 reload
sollten die Wikis dann schon erreichbar sein!
Fazit
Dank der Trennung innerhalb des mediawiki-Pakets ist es recht einfach, mehrere Instanzen ausgehend vom Paket zu erzeugen. Ein bisschen Arbeit bleibt beim Update immer noch, denn die Instanzen müssen angepasst werden, falls sich in /var/lib/mediawiki etwas ändert.
Automatisches Management-Skript
Mit diesem Skript ist eine automatisierte Verwaltung der Instanzen möglich: mediawiki-multiinstance.
Warnung: Es sollte nicht zur Gewohnheit werden, fremde Skripts ohne nähere Prüfung als root auszuführen! |
Anleitung zur Installation von zwei Wikis
Zunächst wird das Skript im System installiert, z.B. mit
root@debian:~# wget -O/usr/local/bin/mediawiki-multiinstance http://shore.naturalnet.de/~nik/mediawiki-multiinstance
root@debian:~# chmod +x /usr/local/bin/mediawiki-multiinstance
Dann wird mit dem ersten Aufruf die Umgebung angelegt und das erste Wiki erstellt:
root@debian:~# mediawiki-multiinstance add wiki1
Das Skript stellt beim ersten Aufruf Fragen zu den gewünschten Orten. Die Frage nach der template instance ist Debian-Standard und soltle so übernommen werden!
Weiterhin wird die Mediawiki-Installation in das Verzeichnis des ersten Wikis kpiert. Danach ruft man im Browser das Installtool auf, z.B. unter http://example.com/wikis/wiki1 .
Nachdem das Installtool die Datei LocalSettings.php angelegt hat, kann diese mit dem Skript kopiert werden:
root@debian:~# mediawiki-multiinstance config wiki1
Danach ist das erste Wiki sofort einsatzfähig. Genau so wird dann mit allen weiteren Wikis verfahren.
Update der Instanzen nach einem MediaWiki-Update
Nach einem Media-Wiki-Update aus dem Debian-Paket können alle so angelegten Instanzen mit einem einzigen Kommando geupdatet werden:
root@debian:~# mediawiki-multiinstance update
Weitere Kommandos
Weiterhin gibt es die folgenden Kommandos:
root@debian:~# mediawiki-multiinstance delete wiki1
Dieser Aufruf löscht das Wiki wiki1.
root@debian:~# mediawiki-multiinstance apache
Dieser Aufruf gibt die Konfiguration für den Apache-Webserver aus, die dann z.B. in /etc/mediawiki/apache.conf geschrieben werden kann.
Credits
Diese Anleitung ist aus dem Thread Mediawiki mal 2 bitte!!!! im Forum in Zusammenarbeit mit ssc entstanden.
Fragen und Anregungen
Fragen udn Anregungen hierzu können gerne per Mail unter nik@naturalnet.de gestellt werden, oder eben im Forum!