Wikis - Technik und Administration

Aus THM-Wiki
Wechseln zu: Navigation, Suche

Welche Wiki-Geschmacksrichtungen gibt es?

Viele der verfügbaren Wikis bauen auf dem ursprünglichen MediaWiki auf, aber es gibt auch andere technische Entwicklungen.

So gibt es Wikis, die die Funktion eines Blogs übernehmen oder schlicht der Präsentation von Produkten dienen. Andere Wikis wurden geschrieben, um Content Management Systeme zu ersetzen. Ein weiterer Grund für eigene Ansätze eines Wikis sind andere technische Anforderungen: nicht auf jedem System ist z.B. PHP verfügbar oder das Ziel ist es ein möglichst kleines und ressourcenschonendes Wiki zu schreiben.

Ohne Anspruch auf Vollständigkeit gibt es unter http://c2.com/cgi/wiki?WikiEngines eine Übersicht der Wiki Engines.

Technik

Üblicherweise sind die Wikis in Skriptsprachen wie PHP, Perl, Python oder ASP geschrieben; grundsätzlich gibt es aber keine Beschränkung auf verwendete Sprachen. So gibt es z.B. das JSPWiki, welches als Java-Applikation Java Server Pages verwendet, und andere in der Shellsprache Bash, der Hochsprache C oder Ada geschriebene Wikis.

Datenspeicherung

Sowohl die Artikel als auch Benutzer- und Versionsinformationen sowie Zugriffsstatistiken werden in einer Datenbank gespeichert. Binärdaten wie Bilddateien etc. können entweder in der Datenbank oder im Dateisystem abgelegt werden. Abhängig vom verwendeten Wiki und dessen Anforderungen werden entweder SQL-basierende Datenbanksysteme mit separatem Server wie etwa MySQL oder PostgreSQL, direkt als Programmbibliothek eingebundene Datenbanksysteme wie SQLite oder einfache Text- oder Binärdateien, sogenannte flat files verwendet, um die Daten aufzunehmen.

Wikis, die nicht von externen Datenbanksystemen Gebrauch machen, sind vor allem bei sogenannten Wiki-on-a-stick beliebt. Hierbei wird eine Wikiumgebung auf einem austauschbaren Medium, etwa einer CD oder einem USB-Stick, installiert und vorgefertigte Artikel über Produkte beigelegt oder für Präsentationen verwendet.

Suchfunktionen

Die Suchfunktion wird unterschiedlich implementiert. Wo dies möglich ist, wird die Volltextsuche des Datenbanksystems verwendet, die als schnellste und lastschonendste Methode für große Datensätze gilt. Kleinere Wikis führen eine direkte Suche im Datenbestand aus, was bei SQL-basierenden Wikis über select .. from .. where ..-Statements und über Textabgleich oder reguläre Ausdrücke bei flat files realisiert wird.

Versionskontrolle

Um Änderungen verfolgen und ggf. auf ältere Versionen zurückgreifen zu können, verfügt jedes Wiki über eine Versionskontrolle.

Bei jeder Aktualisierung eines Artikels wird die neue Version, das Datum und die Urzeit der Änderung und der Autor und ggf. noch weitere Informationen in die Versionskontrolle eingepflegt. Dies kann unterschiedlich geschehen: die einfachste Methode ist, die neue Version inklusive aller Informationen als neuen Datensatz zu speichern und den Artikel auf die jeweils neueste Version zeigen lassen. Dies hat den Nachteil, dass der Datenbestand unnötig aufgebläht wird und die Datensätze teils stark redundant sind. Effektiver ist es, die Unterschiede mit den entsprechenden Informationen zu speichern und nur die aktuelle Version vollständig vorzuhalten. Einige Wikis verwenden dazu externe Werkzeuge wie diff oder Revisionskontrollsysteme wie cvs.

Sicherheit

Wenn das umgebende System nicht sicher ist, ist ein Wiki, genauso wie jeder andere Anwendung auch, anfällig für Attacken. Hier wird daher nicht auf die Sicherheit der verwendeten Programmier- und Skriptsprachen oder auf Programmfehlern eingegangen. Allerdings sollte an dieser Stelle erwähnt werden, dass Wikis durch die Möglichkeit eigenen Text einzugeben, anfällig für Cross-Site-Scripting und SQL-Injection-Angriffe sein können und Lücken dieser Art auch in der Vergangenheit mehrfach auftauchten.

Nahezu jedes Wiki bringt eine Benutzer- und Zugriffsverwaltung mit. Es kann festgelegt werden, welcher Artikel von wem bearbeitet werden kann, es können Artikel für die Bearbeitung gänzlich gesperrt oder auch für jeden nicht angemeldeten Benutzer freigegeben werden. In einigen Wikis ist es auch möglich, den Lesezugriff zu reglementieren, was man zur Not auch mittels .htaccess und einem Wrapper realisieren kann.

Üblicherweise werden Benutzer über die Wiki-Oberfläche registriert und benötigen mindestens die Angabe eines Pseudonyms und einer Email-Adresse. Ein Passwort wird entweder generiert und an die angegebene Email-Adresse geschickt, was gleichzeitig auch der Adressverifikation dient, oder kann bei der Registrierung angegeben werden. Es gibt die Möglichkeit Provider zu sperren, die häufig als Wegwerfadressen benutzt werden.

Wird ein Artikel erstellt oder bearbeitet, so werden zu diesem Vorgang Informationen gespeichert. Dazu zählen z.B. die IP Adresse, der Zeitstempel und, sofern vorhanden, der Benutzername des Autors.

Weitere Schutzmaßnahmen von Wikis sind der Spamschutz und die sogenannte slurp protection. Der Spamschutz verhindert das Einstellen des gleichen Artikels unter verschiedenen Schlüsselwörtern oder das übermäßig schnelle aufeinanderfolgende Einstellen von Artikeln. Die slurp protection unterbindet schnell aufeinanderfolgende Lesezugriffe auf das Wiki, wie sie etwa durch Programme zum Spiegeln von Webseiten erzeugt werden.

Generell wird empfohlen, Spider und Suchmaschinen über eine robots.txt oder .htaccess anzuweisen Backlinks und Artikelhistorie bzw. die früheren Versionen eines Artikels nicht auszulesen, um System- und Netzlast zu schonen.

Wikitext

Der Wikitext beschreibt die Wiki-eigene Formatierung des im Wiki erstellten Textes. Er bedient sich dabei sowohl einiger Elemente, die aus der HTML bekannt sind, als auch möglichst intuitiver Platzhalter; jedoch können sich Syntax, Semantik und Wortschatz abhängig vom verwendeten Wiki unterscheiden - derzeit existiert kein einheitlicher Wikitext-Standard. Einige Wikis bieten zudem die Möglichkeit, eigenen Wikitext zu definieren.

Vor Ausgabe des angeforderten Artikels interpretiert der Parser diesen, weist den durch Wikitext eingeschlossenen oder nachfolgenden Textpassagen bestimmte Formatierungen zu und gibt den Text als XHTML aus.

Eine - wenn auch nicht vollständige - Übersicht der vom MediaWiki unterstützten Syntax findet sich unter Hilfe:Textgestaltung.

Einrichtung und Administration am Beispiel von Mediawiki

Anforderungen an das System

Das Mediawiki benötigt einen Apache- oder IIS-Webserver, PHP in der Version 4.3.3 oder höher sowie die Datenbank MySQL ab Version 4.0.14. Weiterhin muss die verwendete PHP-Version mit mySQL interagieren können, was bei vielen RPM-basierenden Systemen durch die Installation des Pakets php-mysql möglich wird.

Es wird empfohlen, bei größeren Projekten einen PHP-Beschleuniger wie eAccelerator oder APC zu verwenden.

Installation

Diese Installationsbeschreibung bezieht sich auf Linux- bzw. Unixserver. Die Installation auf Windowssystemen ist jedoch ähnlich.

Begrüßungsseite

Zunächst wird das Wiki von [1] heruntergeladen und mittels tar xzf mediawiki-1.6.6.tar.gz im gewünschten Verzeichnis entpackt. Die Versionsnummer kann natürlich abweichen. Es entsteht ein Verzeichnis namens mediawiki-1.6.6, welches umbenannt werden kann. Anbieten würde sich z.B. wiki: mv mediawiki-1.6.6 wiki

Abschließend wird noch das config-Verzeichnis mit Schreibrechten versehen: chmod 777 wiki/config

Einrichtung der Datenbank

Umgebungsprüfung

Das Wiki benötigt eine Datenbank und einen entsprechenden Benutzer, welche der Datenbankadministrator anlegt. In diesem Beispiel heißt die Datenbank wikidb und dem Benutzer wikiuser wird das Passwort w1k1 zugeweisen:

echo "create database wikidb; grant all privileges on wikidb.* to 'wikiuser'@'localhost' identified by 'w1k1';" \
| mysql -u root -p

Konfiguration

Anlegen der Tabellen

Die Konfiguration kann über ein Webinterface erfolgen. Dazu wird der URL http://servername.example/pfad/zum/wiki aufgerufen, wo eine Begrüßungsseite darum bittet, zunächst doch das Setup auszuführen.

Folgt man diesem Link, prüft das Setup zunächst die Umgebung auf Mindestanforderungen und mögliche Extras und präsentiert eine Eingabemaske zur Konfiguration des Wikis.

Die Konfiguration umfasst neben dem Namen des Wikis, der Kontaktadresse, den Spracheinstellungen, gewünschten Einstellungen bezüglich Email, Authentifizierung und Benachrichtigung auch die Einrichtung des Administrators und die Eingabe der Datenbankeinstellungen. Jede Option wird erklärt und viele Felder sind sinnvoll vorbelegt.

Nach einen Klick auf Install MediaWiki! werden die Tabellen in der Datenbank angelegt und die Konfigurationsdatei erzeugt.

Diese Konfigurationsdatei muss in das Installationsverzeichnis des Wikis verschoben werden um die Installation abzuschließen: mv config/LocalSettings.php. Das config-Verzeichnis wird nicht mehr gebraucht, also wird es gelöscht: rm -rf config.

Das installierte Wiki kann über http://servername.example/pfad/zum/wiki aufgerufen werden. Dort findet sich ein Link zum Benutzerhandbuch des MediaWikis, wo man weitere Informationen über die Anpassung der Optik, des Designs und weiterer Einstellmöglichkeiten bekommt.

Hauptseite nach der Installation

Optik anpassen

Logo verändern

Den Pfad zur und den Namen der Logodatei ändert man in LocalSettings.php:

$wgLogo = "/pfad/zum/logo.ext";

Navigationsleiste anpassen

Die Navigationsleiste läßt sich in aktuellen Wikiversionen mittels Bearbeiten der Seite MediaWiki:Sidebar anpassen.

Skin / Theme einstellen

$wgDefaultSkin = "skinname";

Benutzerwählbare Skins einschränken: LocalSettings.php:

$wgSkipSkins = array("foo", "bar", "baz");

Skin / Theme anpassen

Über CSS-Datei /pfad/zu/mediawiki/skins/skinname/main.css

Dateiupload zulassen

Voraussetzungen

  • Schreibrechte für Webserver in /pfad/zu/mediawiki/images
  • ImageMagick

Aktivieren

LocalSettings.php:

$wgEnableUploads = true;
$wgUseImageResize = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "convert";

Dateitypen erlauben

LocalSettings.php:

$wgFileExtensions = array('png','gif','jpg','jpeg','zip','pdf')

Tips und Tricks

index.php verbannen

Von

http://www.server.example/wiki/index.php/Hauptseite

zu

http://www.server.example/wiki/Hauptseite
Pfad ändern

LocalSettings.php:

$wgArticlePath = "/wiki/$1"
mittels alias

http.conf

Alias /wiki /pfad/zu/mediawiki/index.php
Alias /index.php /pfad/zu/mediawiki/index.php
mittels rewrite

.htaccess

RewriteEngine on
RewriteRule ^wiki/?(.*)$ /mediawiki/index.php?title=$1 [L,QSA]

Firefox Extension

wikipedia.mozdev.org

Vortragsfolien zum Thema

Datei:Wikis - technik und administration.pdf


Viel Vergnügen!