Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
MediaWiki
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
MediaWiki ist eine leistungsfähige Open-Source-Wiki-Software, die unter anderem die freie Enzyklopädie Wikipedia antreibt. Auf dem Entwicklungsrechner dient sie dazu, Wissenssammlungen, Dokumentationen oder eigene Erweiterungen lokal mit nginx, PHP und PostgreSQL einzurichten und zu testen.
Vorbemerkungen
- Voraussetzungen: nginx, PHP mit PHP-FPM und PostgreSQL sind nach den jeweiligen Anleitungen installiert und laufen.
- Installation über Git: Ubuntu enthält zwar ein Paket
mediawiki, diese Anleitung holt MediaWiki aber direkt aus dem Git-Repository des Projekts. So lässt sich der Quellcode leicht untersuchen, auf neue Versionen umstellen und für eigene Erweiterungen nutzen. - Version: Verwendet wird die Version mit Langzeitunterstützung (LTS) 1.43 (Git-Zweig
REL1_43). Sie läuft auch mit PHP 8.5 aus Ubuntu 26.04 ohne Fehlermeldungen. - Passwörter:
geheimes_passwortundAdminPasswort123sind Beispiele. Ersetze sie überall durch eigene Passwörter.
Vorbereitung und Abhängigkeiten
1. Paketlisten aktualisieren
Damit apt die aktuellen Paketstände der Ubuntu-Paketquellen kennt.
sudo apt update
2. PHP-Erweiterungen, Git und Composer installieren
MediaWiki braucht neben git und dem PHP-Paketmanager composer Module für die PostgreSQL-Anbindung (php-pgsql), Unicode-Verarbeitung (php-intl), Bildbearbeitung (php-gd), Zwischenspeicher (php-apcu), Netzwerkzugriffe (php-curl), Zeichenketten (php-mbstring) und XML (php-xml).
sudo apt install git composer php-pgsql php-intl php-gd php-apcu php-curl php-mbstring php-xml
Prüfen: Die Liste enthält apcu, gd, intl und pgsql.
php -m | grep -E "^(pgsql|intl|gd|apcu)$"
3. PHP-FPM neu starten
PHP-FPM lädt neu installierte Module erst nach einem Neustart. Ohne diesen Schritt kennt der Webserver z. B. die PostgreSQL-Anbindung noch nicht.
sudo systemctl restart php8.5-fpm
Datenbank in PostgreSQL einrichten
4. Datenbankbenutzer für MediaWiki anlegen
Erstellt einen eigenen Benutzer wikiuser in PostgreSQL. MediaWiki meldet sich mit diesem Benutzer und Passwort an der Datenbank an.
sudo -u postgres psql -c "CREATE USER wikiuser WITH PASSWORD 'geheimes_passwort';"
5. Datenbank für MediaWiki anlegen
Erstellt die leere Datenbank wikidb und macht wikiuser zu ihrem Eigentümer.
sudo -u postgres psql -c "CREATE DATABASE wikidb OWNER wikiuser;"
Prüfen: Die Datenbank wird in der Datenbankliste aufgeführt.
sudo -u postgres psql -l | grep wikidb
MediaWiki per Git herunterladen und einrichten
6. MediaWiki per Git klonen
Klont die LTS-Version in das Verzeichnis /var/www/mediawiki. Mit --depth 1 wird nur der aktuelle Stand ohne die gesamte Versionsgeschichte geladen, das spart Zeit und Speicherplatz.
sudo git clone -b REL1_43 --depth 1 https://gerrit.wikimedia.org/r/mediawiki/core.git /var/www/mediawiki
Prüfen: Das Verzeichnis enthält unter anderem index.php und composer.json.
ls /var/www/mediawiki
7. Standard-Design (Vector) per Git klonen
MediaWiki trennt den Kern von den Designs (Skins). Das bekannte Design Vector wird separat in den Ordner skins/Vector geklont. Der Git-Zweig muss zur Version von MediaWiki passen.
sudo git clone -b REL1_43 --depth 1 https://gerrit.wikimedia.org/r/mediawiki/skins/Vector /var/www/mediawiki/skins/Vector
8. Eigentümer auf deinen Benutzer ändern
Die Dateien gehören nach dem Klonen root. Als Entwickler sollst du sie ohne sudo bearbeiten, mit Git aktualisieren und Composer ausführen können. Der Webserver braucht nur Lesezugriff, der ohnehin besteht. Schreibrechte bekommt er in Schritt 12 gezielt für zwei Ordner.
sudo chown -R "$USER":"$USER" /var/www/mediawiki
9. Externe PHP-Bibliotheken mit Composer installieren
Installiert alle in composer.json festgelegten Bibliotheken in den Ordner vendor/. --no-dev lässt Werkzeuge weg, die nur zum Testen von MediaWiki selbst gebraucht werden.
composer install --no-dev -d /var/www/mediawiki
Prüfen: Der Ordner vendor enthält jetzt Unterordner, z. B. wikimedia.
ls /var/www/mediawiki/vendor
MediaWiki installieren
10. MediaWiki über die Kommandozeile installieren
Das Installationsskript legt die Tabellen in PostgreSQL an, erstellt das Administratorkonto WikiAdmin und schreibt die zentrale Einstellungsdatei LocalSettings.php. Die wichtigsten Angaben:
--server– Adresse, unter der das Wiki erreichbar ist (mit Port, sonst zeigen Links ins Leere)--scriptpath ""– das Wiki liegt direkt unter/, nicht in einem Unterordner--lang de– Oberfläche und Seitennamen auf Deutsch (z. B. „Hauptseite“)- die beiden letzten Angaben – Name des Wikis und Name des Administratorkontos
Das Skript erkennt das Design Vector im Ordner skins von selbst und trägt es in LocalSettings.php ein.
php /var/www/mediawiki/maintenance/run.php install \
--dbtype postgres \
--dbserver 127.0.0.1 \
--dbname wikidb \
--dbuser wikiuser \
--dbpass 'geheimes_passwort' \
--pass 'AdminPasswort123' \
--server http://localhost:8085 \
--scriptpath "" \
--lang de \
"Mein Entwicklungs-Wiki" \
WikiAdmin
Prüfen: Die Ausgabe endet mit MediaWiki wurde erfolgreich installiert. In LocalSettings.php stehen die Adresse und das Design:
grep -E "wgServer|wfLoadSkin" /var/www/mediawiki/LocalSettings.php
11. Kurze Adressen einschalten
Ohne diese Einstellung erzeugt MediaWiki Links wie /index.php?title=Hauptseite. Mit ihr heißen sie einfach /Hauptseite. Die nginx-Konfiguration in Schritt 14 ist darauf abgestimmt.
nano /var/www/mediawiki/LocalSettings.php
Springe mit Strg+Ende ans Ende der Datei und füge in einer eigenen Zeile an (im Terminal mit Strg+Umschalt+V). Speichere mit Strg+O und Enter und beende nano mit Strg+X:
$wgArticlePath = "/$1";
12. Schreibrechte für den Webserver vergeben
Der Webserver läuft als Benutzer www-data. Er muss hochgeladene Dateien im Ordner images speichern und im Ordner cache Zwischenergebnisse ablegen können.
sudo chown -R www-data:www-data /var/www/mediawiki/images /var/www/mediawiki/cache
13. Einstellungsdatei schützen
LocalSettings.php enthält das Datenbank-Passwort. Diese beiden Befehle erlauben das Lesen nur noch dir und der Gruppe www-data, also dem Webserver.
sudo chgrp www-data /var/www/mediawiki/LocalSettings.php
chmod 640 /var/www/mediawiki/LocalSettings.php
Prüfen: Die Rechte lauten -rw-r-----, die Gruppe ist www-data.
ls -l /var/www/mediawiki/LocalSettings.php
nginx konfigurieren
14. Konfiguration für MediaWiki anlegen
Erstellt einen eigenen Server-Block auf Port 8085, der nur vom eigenen Rechner aus erreichbar ist. Die Reihenfolge der Blöcke ist wichtig: nginx prüft Blöcke mit regulären Ausdrücken (~) von oben nach unten und nimmt den ersten Treffer. Deshalb stehen die Sperren für interne Ordner, versteckte Dateien (z. B. den Ordner .git) und Konfigurationsdateien vor dem Block, der PHP-Dateien ausführt. Für kurze Adressen wie /Hauptseite gibt es keine Datei. try_files übergibt sie deshalb an index.php. MediaWiki liest den Seitennamen aus der ursprünglichen Adresse, die nginx als REQUEST_URI mitschickt, und vergleicht sie mit $wgArticlePath aus Schritt 11.
sudo nano /etc/nginx/sites-available/mediawiki
Füge diesen Inhalt ein (im Terminal mit Strg+Umschalt+V), speichere mit Strg+O und Enter und beende nano mit Strg+X:
server {
listen 127.0.0.1:8085;
server_name localhost;
root /var/www/mediawiki;
index index.php;
client_max_body_size 20m;
# Interne Ordner und versteckte Dateien (z. B. .git) sperren
location ~ /\. {
return 403;
}
location ~ ^/(cache|includes|languages|maintenance|serialized|tests|vendor)/ {
return 403;
}
location ~ \.(lock|json|yml|yaml|md)$ {
return 403;
}
# Im Upload-Ordner keine PHP-Dateien ausführen
location ^~ /images/ {
location ~ \.php$ {
return 403;
}
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
# Statische Dateien zwischenspeichern; fehlt die Datei, ist es eine
# Wiki-Seite wie /Datei:Bild.png
location ~* \.(js|css|png|jpe?g|gif|ico|svg|webp|woff2?)$ {
try_files $uri /index.php?$args;
expires 7d;
access_log off;
}
# Kurze Adressen: Was es nicht als Datei gibt, bekommt index.php.
# MediaWiki liest den Seitennamen selbst aus der ursprünglichen Adresse.
location / {
try_files $uri $uri/ /index.php?$args;
}
}
15. Konfiguration aktivieren
Ein Link in sites-enabled sorgt dafür, dass nginx die neue Seite lädt.
sudo ln -s /etc/nginx/sites-available/mediawiki /etc/nginx/sites-enabled/mediawiki
16. nginx-Konfiguration testen
Findet Tippfehler, bevor nginx neu geladen wird.
sudo nginx -t
Prüfen: Die Ausgabe endet mit test is successful.
17. nginx neu laden
Übernimmt die Konfiguration, ohne laufende Verbindungen abzubrechen.
sudo systemctl reload nginx
Testen
18. Hauptseite abrufen
Prüft, ob das Wiki unter der kurzen Adresse antwortet.
curl -sI http://localhost:8085/Hauptseite
Prüfen: Die erste Zeile lautet HTTP/1.1 200 OK. Im Browser leitet http://localhost:8085 auf die Hauptseite deines Wikis im Vector-Design weiter. Oben rechts kannst du dich mit WikiAdmin und dem Administrator-Passwort anmelden.
19. Sperren prüfen
Stichprobe, ob interne Dateien wirklich gesperrt sind. Hier am Beispiel des Git-Ordners, der sonst die Versionsgeschichte preisgeben würde.
curl -sI http://localhost:8085/.git/config
Prüfen: Die erste Zeile lautet HTTP/1.1 403 Forbidden.
Soll das Wiki unter einer eigenen Domain erreichbar sein, geht es weiter mit MediaWiki mit nginx unter eigener Domain.
Aktualisieren
Innerhalb der Version 1.43 erscheinen regelmäßig Fehler- und Sicherheitskorrekturen. So holst du sie:
1. Neuen Stand von MediaWiki holen
Lädt die Änderungen des Git-Zweigs REL1_43 herunter.
git -C /var/www/mediawiki pull
2. Neuen Stand des Designs holen
Das Design Vector ist ein eigenes Git-Repository und wird getrennt aktualisiert.
git -C /var/www/mediawiki/skins/Vector pull
3. Bibliotheken angleichen
Bringt die Bibliotheken in vendor/ auf den Stand, den die neue MediaWiki-Version erwartet.
composer update --no-dev -d /var/www/mediawiki
4. Datenbank anpassen
Passt die Tabellen an die neue Version an, falls nötig. --quick überspringt die Wartezeit vor dem Start.
php /var/www/mediawiki/maintenance/run.php update --quick
Prüfen: Die Ausgabe endet mit Done. Die Seite http://localhost:8085/Spezial:Version zeigt die neue Versionsnummer.
Deinstallieren
1. Seite in nginx deaktivieren
Löscht den Link aus sites-enabled.
sudo rm -f /etc/nginx/sites-enabled/mediawiki
2. nginx-Konfigurationsdatei löschen
Löscht die Konfigurationsdatei der Seite.
sudo rm -f /etc/nginx/sites-available/mediawiki
3. nginx neu laden
Übernimmt das Abschalten der Seite.
sudo systemctl reload nginx
4. MediaWiki-Dateien löschen
Entfernt den gesamten MediaWiki-Ordner. Achtung: Auch hochgeladene Dateien im Ordner images gehen verloren.
sudo rm -rf /var/www/mediawiki
5. MediaWiki-Datenbank löschen
Löscht die Datenbank wikidb. Achtung: Alle Seiten und Daten des Wikis werden dabei unwiderruflich gelöscht.
sudo -u postgres psql -c "DROP DATABASE IF EXISTS wikidb;"
6. Datenbankbenutzer löschen
Löscht den Benutzer wikiuser.
sudo -u postgres psql -c "DROP USER IF EXISTS wikiuser;"
7. Nicht mehr benötigte Pakete entfernen (optional)
Entfernt Composer und den PHP-Zwischenspeicher, falls sie nicht für andere Projekte gebraucht werden. Die übrigen PHP-Module aus Schritt 2 brauchen oft auch andere PHP-Anwendungen und bleiben deshalb erhalten.
sudo apt purge composer php-apcu
sudo apt autoremove
Prüfen: Unter http://localhost:8085 antwortet kein Webserver mehr, curl meldet einen Verbindungsfehler.
curl -sI http://localhost:8085/
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Open Knowledge (Freies Wissen): Alle Texte stehen unter der freien Lizenz Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-SA 4.0) und können frei gelesen, geteilt und weiterverarbeitet werden.