MediaWiki auf CentOS 7 mit Nginx installieren

In dieser Anleitung installieren und konfigurieren Sie MediaWiki unter CentOS 7 mit dem Nginx-Webserver, PHP-FPM, MariaDB und einem kostenlosen Let’s Encrypt TLS-Zertifikat. Die Schritt-für-Schritt-Anleitung enthält zusätzlich Hinweise zu Berechtigungen, SELinux, automatischer Zertifikatserneuerung, Fehlerbehebung und Rollout-Checklisten.
Inhalt
- Was wir tun werden
- Voraussetzungen
- Schritt 1 - Nginx installieren
- Schritt 2 - PHP-FPM installieren und konfigurieren
- Schritt 3 - MariaDB installieren und Datenbank anlegen
- Schritt 4 - MediaWiki herunterladen und Abhängigkeiten installieren
- Schritt 5 - Let’s Encrypt SSL-Zertifikat erzeugen
- Schritt 6 - Nginx Virtual Host konfigurieren
- Schritt 7 - Webbasierte MediaWiki-Installation
- Schritt 8 - Standard-Skin installieren
- Zusätzliche Empfehlungen und Sicherheitshärtung
- Fehlerbehebung und Tests
- Rollout-Checklisten nach Rolle
- Kurze Zusammenfassung
Was wir tun werden
- Nginx auf CentOS 7 installieren
- PHP-FPM installieren und konfigurieren
- MariaDB installieren und konfigurieren
- MediaWiki herunterladen und konfigurieren
- Let’s Encrypt SSL-Zertifikat erzeugen
- Nginx Virtual Host für MediaWiki konfigurieren
- MediaWiki über den Browser installieren
- Standard-Skin konfigurieren
Voraussetzungen
- CentOS 7 Server mit Internetzugang
- Root- oder sudo-Rechte
- Eine eigene Domain oder Subdomain, die auf den Server zeigt (A/AAAA Records)
Wichtige Begriffe in einer Zeile
- PHP-FPM: PHP FastCGI Process Manager, führt PHP-Code als Dienst aus.
- Let’s Encrypt: Kostenloser ACME-basierter Zertifikatanbieter für TLS-Zertifikate.
Schritt 1 - Nginx installieren
Für MediaWiki verwenden wir Nginx. Auf CentOS 7 wird Nginx in der Regel aus dem EPEL-Repository installiert.
Aktualisieren Sie die Pakete und installieren Sie EPEL:
yum -y update
yum -y install epel-release
Installieren Sie Nginx:
yum -y install nginx
Starten und aktivieren Sie Nginx:
systemctl start nginx
systemctl enable nginx
Prüfen Sie die Netzwerk- und Listening-Ports:
netstat -plntu
Wichtig
- Ersetzen Sie Beispiel-Domains in späteren Konfigurationsdateien durch Ihre eigene Domain.
- Falls Firewalld aktiv ist, erlauben Sie HTTP/HTTPS (siehe später).
Schritt 2 - PHP-FPM installieren und konfigurieren
Wir verwenden in diesem Tutorial PHP 7.0 aus dem Webtatic-Repository (ältere Distributionen nutzen andere Quellen). Falls Sie neuere PHP-Versionen einsetzen wollen, passen Sie Paketnamen entsprechend an.
Fügen Sie das Webtatic-Repository hinzu:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Installieren Sie PHP 7.0 und nötige Erweiterungen:
yum -y install ImageMagick php70w-fpm php70w-intl php70w-xml php70w-curl php70w-gd php70w-mbstring php70w-mysql php70w-cli php70w-pear php70w-pecl-apcu
Konfiguration anpassen
- Öffnen Sie die php.ini:
vim /etc/php.ini
Ändern Sie die Einstellung:
cgi.fix_pathinfo=0
- PHP-FPM pool anpassen:
vim /etc/php-fpm.d/www.conf
Ändern Sie Benutzer und Gruppe auf nginx:
user = nginx
group = nginx
Setzen Sie den Listener auf einen Unix-Socket:
listen = /run/php-fpm/php-fpm.sock
Stellen Sie Besitzrechte und Modus des Sockets ein:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Umgebungsvariablen aktivieren (optional):
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Erstellen Sie das Session-Verzeichnis und setzen Sie Rechte:
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Starten und aktivieren Sie PHP-FPM:
systemctl start php-fpm
systemctl enable php-fpm
Prüfen Sie, ob der Socket existiert:
netstat -pl | grep php
Hinweis
- Wenn Sie SELinux aktiv haben, beachten Sie die SELinux-Berechtigungen weiter unten.
Schritt 3 - MariaDB installieren und Datenbank anlegen
MediaWiki unterstützt MySQL/MariaDB oder SQLite. Für Produktionswikis empfiehlt sich MariaDB.
MariaDB installieren:
yum -y install mariadb mariadb-server
Starten und aktivieren:
systemctl start mariadb
systemctl enable mariadb
Sichern Sie die Installation und setzen Sie das root-Passwort:
mysql_secure_installation
Antworten Sie auf die Fragen (in der Regel Y für alle empfohlenen Schritte):
Set root password? [Y/n] Y
TYPE ROOT PASSWORD HERE
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Datenbank und Nutzer für MediaWiki anlegen
Melden Sie sich als root bei MySQL/MariaDB an:
mysql -u root -p
TYPE YOUR ROOT PASSWORD
Führen Sie dann die SQL-Befehle aus:
create database mediawikidb;
grant all privileges on mediawikidb.* to mediawiki@'localhost' identified by 'mypassword';
flush privileges;
exit;
Sicherheitshinweis
- Verwenden Sie in Produktion ein starkes, komplexes Passwort anstelle von ‘mypassword’.
- Staaten Sie die Zugriffsrechte restriktiv: Erlauben Sie nur localhost-Verbindungen, wenn die Anwendung lokal läuft.
Schritt 4 - MediaWiki herunterladen und Abhängigkeiten installieren
Installieren Sie git, zip, unzip und Composer:
yum -y install git zip unzip composer
Projektverzeichnis anlegen und MediaWiki aus dem Repository klonen:
mkdir -p /var/www/mediawiki
git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git /var/www/mediawiki
Installieren Sie PHP-Abhängigkeiten mit Composer (Produktionsmodus):
cd /var/www/mediawiki
composer install --no-dev
Setzen Sie die Besitzrechte auf nginx:
chown -R nginx:nginx /var/www/mediawiki
Hinweis zu Dateisystemrechten
- Einige Installationsanleitungen fordern www-data; bei Nginx auf CentOS ist die Standard-Benutzergruppe meist nginx. Stellen Sie sicher, dass Besitzer und Gruppe übereinstimmen.
Schritt 5 - Let’s Encrypt SSL-Zertifikat erzeugen
MediaWiki sollte über HTTPS erreichbar sein. Wir verwenden das Let’s Encrypt-Tool zur Ausstellung eines kostenlosen Zertifikats.
Installieren Sie das Let’s Encrypt-Client-Paket (siehe Distribution-spezifische Pakete; alternativ certbot):
yum -y install letsencrypt
Stoppen Sie vorübergehend Nginx, damit der ACME-Client einen temporären Webserver starten oder Dateien ablegen kann:
systemctl stop nginx
Stellen Sie sicher, dass Firewall-Regeln HTTP/HTTPS erlauben:
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
Zertifikat erzeugen:
letsencrypt certonly
- Wählen Sie den ACME-Authentifizierungsmechanismus (z. B. temporärer Webserver) entsprechend.
- Geben Sie Ihre E-Mail-Adresse ein und akzeptieren Sie die Nutzungsbedingungen.
- Geben Sie Ihre Domain (z. B. wiki.example.com) an.
Nach erfolgreicher Ausstellung finden Sie die Zertifikate unter /etc/letsencrypt/live/
Automatische Erneuerung
- Let’s Encrypt-Zertifikate gelten 90 Tage. Automatisieren Sie die Erneuerung per cron oder systemd-timer. Beispiel Cronjob, täglich prüfen:
0 3 * * * /usr/bin/letsencrypt renew --quiet && systemctl reload nginx
Hinweis
- Manche Distributionen liefern certbot anstelle von letsencrypt. Bei neueren Systemen bevorzugen Sie certbot.
Schritt 6 - Nginx Virtual Host konfigurieren
Erstellen Sie eine neue Nginx-Konfigurationsdatei unter /etc/nginx/conf.d/mediawiki.conf und passen Sie die Domain und Pfade an. Beispielkonfiguration:
# HTTP Request will be Redirected to the HTTPS
server {
listen 80;
listen [::]:80;
server_name wiki.hakase-labs.co;
return 301 https://$host$request_uri;
}
# HTTPS Configuration
server {
listen 443 ssl;
listen [::]:443;
server_name wiki.hakase-labs.co;
root /var/www/mediawiki;
index index.php;
autoindex off;
# SSL Certificate Configuration
ssl_certificate /etc/letsencrypt/live/wiki.hakase-labs.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wiki.hakase-labs.co/privkey.pem;
client_max_body_size 5m;
client_body_timeout 60;
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?title=$1&$args;
}
location ^~ /maintenance/ {
return 403;
}
# PHP-FPM Configuration Nginx
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
try_files $uri /index.php;
expires max;
log_not_found off;
}
location = /_.gif {
expires max;
empty_gif;
}
location ^~ ^/(cache|includes|maintenance|languages|serialized|tests|images/deleted)/ {
deny all;
}
location ^~ ^/(bin|docs|extensions|includes|maintenance|mw-config|resources|serialized|tests)/ {
internal;
}
# Security for 'image' directory
location ~* ^/images/.*.(html|htm|shtml|php)$ {
types { }
default_type text/plain;
}
# Security for 'image' directory
location ^~ /images/ {
try_files $uri /index.php;
}
}
Anschließend Nginx-Konfiguration testen und Nginx neu starten:
nginx -t
systemctl restart nginx
Wichtig
- Ersetzen Sie wiki.hakase-labs.co durch Ihre eigene Domain.
- Passen Sie Pfade zu SSL-Dateien an, wenn Sie ein anderes Zertifikat nutzen.
Schritt 7 - Webbasierte MediaWiki-Installation
Öffnen Sie im Browser Ihre Domain. Die HTTP-Anfrage wird auf HTTPS umgeleitet. Klicken Sie auf Set up the wiki.
Beispiel-URL
Schritt: Sprache auswählen
Wählen Sie Englisch (en) oder eine andere Sprache und klicken Sie Continue.
Umgebungsprüfung
Stellen Sie sicher, dass alle Prüfungen erfolgreich sind und klicken Sie Continue.
Datenbank-Konfiguration
Geben Sie die zuvor angelegten Datenbankdetails ein:
- Datenbankname: mediawikidb
- Benutzer: mediawiki
- Passwort: mypassword
Admin-Benutzer anlegen
Legen Sie einen Administrator mit E-Mail und Passwort an.
Installation abschließen
Klicken Sie auf Continue, bis die Installation abgeschlossen ist. Laden Sie die angebotene Datei LocalSettings.php herunter.
LocalSettings.php hochladen
Kopieren Sie die LocalSettings.php in das MediaWiki-Verzeichnis auf dem Server. Beispiel mit scp:
scp LocalSettings.php [email protected]:/var/www/mediawiki/
chown -R www-data:www-data /var/www/mediawiki
Hinweis zu Besitzrechten
- In vorherigen Schritten nutzten wir nginx:nginx als Besitzer. Stellen Sie sicher, dass der Webserver-Benutzer (nginx) Lesezugriff hat. Ersetzen Sie gegebenenfalls www-data durch nginx.
Rufen Sie nun Ihre Wiki-Seite auf und prüfen Sie die Startseite.
Schritt 8 - Standard-Skin installieren
Klonen Sie das Vector-Theme in das skins-Verzeichnis:
cd /var/www/mediawiki/skins/
sudo git clone https://gerrit.wikimedia.org/r/mediawiki/skins/Vector
Setzen Sie die Rechte:
chown -R nginx:nginx /var/www/mediawiki/skins/
Fügen Sie am Ende von LocalSettings.php die Ladeanweisung hinzu:
vim /var/www/mediawiki/LocalSettings.php
Und fügen Sie ein:
wfLoadSkin( 'Vector' );
Aktualisieren Sie im Browser die Seite. Das Wiki sollte jetzt im Vector-Design erscheinen.
Die MediaWiki-Installation mit Nginx auf CentOS 7 ist nun abgeschlossen.
Zusätzliche Empfehlungen und Sicherheitshärtung
- Benutzer und Rechte: Vermeiden Sie zu großzügige Dateirechte. Nur nginx sollte Schreibzugriff auf Verzeichnisse haben, die Uploads speichern.
- SELinux: Falls SELinux aktiviert ist, setzen Sie passend: restorecon -R /var/www/mediawiki und ggf. httpd_sys_rw_content_t für Upload-Verzeichnisse.
- Firewall: Erlauben Sie gezielt nur 80/443 und SSH.
- Backups: Sichern Sie regelmäßig MySQL-Dumps (mysqldump) und das Verzeichnis LocalSettings.php sowie hochgeladene Dateien.
- Updates: Aktualisieren Sie MediaWiki und Erweiterungen testweise in einer Staging-Umgebung.
- Monitoring: Überwachen Sie Logs (/var/log/nginx/error.log, /var/log/nginx/access.log, php-fpm-logs).
Mini-Methodologie für produktive Rollouts
- Testumgebung identisch zur Produktion aufsetzen.
- Upgrades zuerst in Test, dann in Produktion nach Checkliste bereitstellen.
- Backups erstellen und Wiederherstellung testen.
- Wartungsfenster kommunizieren.
Fehlerbehebung häufige Probleme
Problem: 502 Bad Gateway
- Ursache: PHP-FPM nicht gestartet oder Socket-Pfad stimmt nicht.
- Lösung: Prüfen Sie systemctl status php-fpm und den Pfad /run/php-fpm/php-fpm.sock sowie Besitzer und Rechte.
Problem: 403 bei Bildern oder Uploads
- Ursache: Nginx-Deny-Regeln oder falsche Dateirechte/SELinux-Kontext.
- Lösung: Prüfen Sie Nginx-Konfiguration, Dateirechte und führen Sie restorecon aus.
Problem: Zertifikatfehler nach Erneuerung
- Ursache: Nginx nicht neu geladen nach Renewal.
- Lösung: Automatisieren Sie erneuern + reload (siehe Cron-Beispiel oben).
Problem: Composer-Abhängigkeiten fehlen
- Ursache: composer install nicht ausgeführt oder fehlende PHP-Erweiterungen.
- Lösung: composer install –no-dev im Projektverzeichnis ausführen und php -m prüfen.
Testfälle und Abnahmekriterien
- HTTP leitet auf HTTPS weiter.
- Startseite lädt ohne PHP-Fehler.
- Anmeldung als Admin möglich.
- Bilder-Upload funktioniert.
- Datenbankeinträge werden gespeichert und sind persistent.
Rollout-Checklisten nach Rolle
Systemadministrator
- DNS auf Server-IP zeigen
- Firewall-Regeln prüfen
- Nginx, PHP-FPM und MariaDB-Dienste laufen lassen
- Automatische Zertifikatserneuerung konfigurieren
Anwendungsbetreuer
- LocalSettings.php prüfen
- Erweiterungen in Testumgebung installieren
- Backup-/Restore-Tests ausführen
Entwickler
- Composer-Abhängigkeiten verwalten
- Wartungsmodus während Updates setzen
- Versionskontrolle für Konfigurationsänderungen
Kompatibilität und Migrationstipps
- MediaWiki 1.30 ist eine ältere Version; prüfen Sie die Kompatibilität von Extensions mit der gewählten Version.
- Bei Migration von SQLite auf MariaDB: Export und Import der Seiten per Maintenance-Skripte oder API.
Kurze Zusammenfassung
Sie haben Nginx, PHP-FPM, MariaDB installiert, MediaWiki aus dem offiziellen Repo bereitgestellt, ein Let’s Encrypt-Zertifikat erzeugt und Nginx so konfiguriert, dass MediaWiki sicher über HTTPS läuft. Ergänzend finden Sie Hinweise zu Automatisierung, Sicherheit, Fehlersuche und Rollout-Checklisten.
Wichtige Referenz
Ende
Ähnliche Materialien

Display‑Treiber nach Windows‑Update reparieren

Apache Cassandra auf CentOS 8 installieren

Ethernet langsamer als WLAN? Ursachen & Fixes

Vorlagen in Google Docs erstellen

OST in PST konvertieren & Outlook wiederherstellen
