MediaWiki #

Mediawiki ist eine sehr erfolgreiche Wiki-Software, die unter anderem von Wikipedia benutzt wird. Ihre starke Verbreitung resultiert hauptsächlich daraus, das viele Menschen heutzutage über Wikipedia Ihren ersten Kontakt zu einem Wiki haben. Insbesondere haben es andere Wiki-Engines natürlich schwer, wenn sie dann noch eine andere Syntax als den "Wikipedia-Standard" benutzen (wie z.B. das JPSWiki hier in der LUG Krefeld, das wir jedoch mit einem eigenen Plugin etwas gezähmt haben).

Installation auf einem Debian-System #

Ich habe einen dedizierten Server im Internet, auf dem ich neben anderen Dingen, die dort bereits liefen, ein Mediawiki für mein FreiBier-Projekt aufsetzen wollte.

Meine Umgebung: Ich bevorzuge Debian-Pakete, weil diese sich normalerweise besser aktualisieren lassen als eine händische Installation. Da auf dem Server bereits andere Applikationen laufen, die eine PostgreSQL Datenbank voraussetzen, wollte ich die Option wählen, Mediawiki auf Postgres zugreifen zu lassen. Außerdem wollte ich mir die Option offenhalten, eventuell später weitere Wikis unter anderem Namen laufen zu lassen.

Auf dem Server habe ich folgendes installiert:

  aptitude install postgresql-contrib
  aptitude install mediawiki php5-pgsql
  aptitude install mediawiki-extensions

Durch die Angabe der beiden postgres-Pakete habe ich dafür gesorgt, das Mediawiki automatisch den Postgres-Server benutz hat. Das ging eigentlich danach komplett von alleine. :-) Das Extensions-Paket ist nicht dringend nötig, ich wollte es allerdings so haben - wer will, kann sich auch die einzelnen Erweiterungen Paket für PAket installieren, die für Debian vorliegen.

Da ich vorher den Apache Webserver bereits installiert hatte, wurde bei mir apache-mpm-worker deinstalliert (und durch apache-mpm-prefork ersetzt). Hierbei handelt es sich um eine andere Variante des Apache Binaries, die ihre Threads anders organisiert. Das liegt am phpmod-Modul, das nicht threadsafe ist und sollte im praktischen Betrieb keinen grossen Unterschied machen, wenn man nicht wirklich grosse Mengen an Web-Anfragen bedienen möchte.

Um zu sehen, wie ich am besten vorgehe, habe ich mir http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Debian_GNU/Linux durchgelesen.

Danach war dann noch http://www.mediawiki.org/wiki/Manual:Short_URL wichtig. Ich habe das Problem der "Short URLs" von Anfang an richtig lösen wollen, um nicht später wieder alles umbauen zu müssen. "Short URL" bedeutet, das man auf eine Wikiseite "Blablabla" mit der URL http://www.meinserver.net/wiki/Blablabla zugreifen kann. Da intern ein PHP-Skript mit Parametern aufgerufen wird, das unter einem ganz anderen Pfad liegt, muss das extra eingerichtet werden. Dieses URL-Schema hat aber den Vorteil, das die URLs für einen außenstehenden Anwender gut und logisch aussehen. Sollte man später aus irgendeinem Grunde die Domain oder die Wiki-Software wechseln, so können die einfachen URLs leicht auf das neue System gemappt werden.

In /etc/mediawiki/apache.conf habe ich nun eingefügt:

  Alias /wiki /var/lib/mediawiki/index.php

Hierdurch wird die vorne angegebene URL auf den hinten angegebenen Dateipfad gemappt.

Hat man das gemacht, kann auch schon auf die URL http://www.meinserver.org/wiki zugegriffen werden. Die eigentliche Konfiguration geschieht dort per Weboberfläche und erzeugt eine Datei namens LocalSettings.php. Diese kopiere ich wie in der Anleitung beschrieben nach /etc/mediawiki/

Damit funktioniert das Wiki erstmal, hat aber keine hübschen Short URLs. Um das umzusetzen, bin ich nach http://www.mediawiki.org/wiki/Manual:Short_URL vorgegangen:

Im www-Verzeichnis dieses Hosts wird ein Symlink "w" eingerichtet:

cd /var/www ln -s /var/lib/mediawiki/ w

Dann habe ich folgende Einstellungen in LocalSettings.php gemacht.

$wgScriptPath = "/w"; $wgScriptExtension = ".php";

    1. -TB- $wgArticlePath = "/wiki/$1"; $wgUsePathInfo = true;

Wiki mit eigenem Benutzer und virtuellem Host #

Da ich später vielleicht verschiedene Wikis haben möchte (und da die vorhandenen Dateien einen eigenen Benutzer haben sollten), habe ich einen neuen Benutzer "freibier" angelegt. In dessen Home-Verzeichnis habe ich nun ein Unterverzeichnis "public_html" angelegt und dort sowohl eine Datei index.php als auch einen Symlink w (nach /usr/share/mediawiki) angelegt.

index.php enthält einen HTTP-Redirect wie in http://www.mywebsolution.de/tipps/13/show_PHP-redirect.html erklärt (In SelfHTML steht, warum ein HTTP-Redirect besser ist als ein HTML-Redirect und das das nur als CGI möglich ist - also in diesem Falle als PHP-Skript).

Ein virtueller Server wird im Apache durch eine Datei /etc/apache2/sites-available/www_frei-bier_org konfiguriert, die bei mir so aussieht:

  <VirtualHost *:80>
        ServerName www.frei-bier.org
        ServerAdmin webmaster@localhost

        DocumentRoot /home/freibier/public_html/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/freibier/public_html/>
                Options Indexes FollowSymLinks MultiViews ExecCGI
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        
        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined

  </VirtualHost>

Dieser virtuelle Server wird dann mittels

  a2ensite www_frei-bier_org

und einem folgenden Apache-reload (wie angegeben) aktiviert.

Mehrere Wikis auf einem Server #

Das habe ich bis jetzt noch nicht gemacht, aber im Grunde geht es darum, dem Wiki beim Starten eine jeweils andere LocalSettings.php unterzuschieben. Dort stehen dann entsprechend Einstellungen für ein anderes Upload-Verzeichnis und andere Datenbank-Zugangsdaten. Hierzu liest man am besten:

Es ist übrigens auch möglich, das Upload-Verzeichnis zwischen mehreren Wikis zu teilen.

Welche Daten machen das Wiki aus? #

Um meine Datensicherung zu planen stellt sich nun die Frage: Was macht diese Wiki-Installation denn nun aus? Hier ist zu nennen:

  • Die Apache-Konfiguration, ohne die das Wiki nicht zu erreichen ist (das könnte man von Hand wiederherstellen)
  • Die Datei LocalSettings.php, die alle Grundeinstellungen des Wiki enthält (auch das könnte man von Hand wieder herstellen)
  • Das Images-Verzeichnis (in der Standard-Installation /var/lib/mediawiki/images), das alle Uploads (also insbesondere Bilder) enthält.
  • Die Datenbank (das ist der wichtigste Teil)

Alternative #

Wer (wie ich) so komplexe PHP-Anwendungen nicht mag, aber seinen Nutzern ein MediaWiki-kompatibles Wiki anbieten möchte sollte sich JAMWiki ansehen.

JAMWiki ist ein in Java programmierter Clone des MediaWiki unter LGPL.

Lines of Code

MediaWiki 850.000 Zeilen PHP
JAMWiki 35.000 Zeilen Java
JSPWiki 85.000 Zeilen Java
Zahlen lt. Ohloh (10.5.2012)


Tags:  Wiki