Installer MediaWiki avec Nginx sur CentOS 7 — guide pas à pas

Ce guide explique comment installer MediaWiki (version 1.30) sur CentOS 7 avec le serveur Nginx, PHP-FPM, MariaDB et un certificat SSL Let’s Encrypt. Vous trouverez des instructions détaillées étape par étape, des commandes prêtes à l’emploi, des conseils de sécurité, une checklist par rôle et une section de dépannage.
Important: adaptez les noms de domaine, mots de passe et chemins fournis aux besoins de votre environnement. Sur CentOS, l’utilisateur système de Nginx est généralement nginx (pas www-data).
Objectif principal et variantes de recherche
Intent principal: installer MediaWiki sur CentOS 7 avec Nginx. Variantes: installer MediaWiki Nginx CentOS, MediaWiki LEMP CentOS 7, MediaWiki avec PHP-FPM, MediaWiki HTTPS Let’s Encrypt, config Nginx MediaWiki.
Ce que nous allons faire
- Installer Nginx sur CentOS 7
- Installer et configurer PHP-FPM (PHP 7.0)
- Installer et configurer MariaDB
- Télécharger et configurer MediaWiki
- Obtenir un certificat SSL Let’s Encrypt
- Configurer l’hôte virtuel Nginx pour MediaWiki
- Installer MediaWiki via l’interface Web
- Installer et activer le thème par défaut (Vector)
Pré-requis
- Serveur CentOS 7 à jour
- Accès root ou sudo
- Un nom de domaine pointant sur le serveur (A/AAAA)
- Ports 80 et 443 ouverts
Remarques rapides
Important: ne copiez pas de mots de passe d’exemple en production. Utilisez des comptes et mots de passe uniques et sécurisés.
Étape 1 — Installer Nginx sur CentOS 7
CentOS 7 ne fournit pas le paquet Nginx dans le dépôt de base. Nous utiliserons le dépôt EPEL.
Mettez à jour le système et installez le dépôt EPEL :
yum -y update
yum -y install epel-release
Installez Nginx :
yum -y install nginx
Démarrez et activez Nginx au démarrage :
systemctl start nginx
systemctl enable nginx
Vérifiez les ports réseau utilisés :
netstat -plntu
Note: si netstat n’est pas disponible, installez le paquet net-tools ou utilisez ss (par exemple ss -plnt).
Étape 2 — Installer et configurer PHP-FPM
Nous utiliserons PHP 7.0 fourni par le dépôt tiers “webtatic”.
Ajoutez le dépôt webtatic :
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Installez PHP 7.0 et les extensions nécessaires :
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
Configurer PHP-FPM :
- Éditez /etc/php.ini et remplacez ou décommentez :
cgi.fix_pathinfo=0
- Éditez /etc/php-fpm.d/www.conf : changez user et group en nginx (CentOS) :
user = nginx
group = nginx
- Configurez PHP-FPM pour écouter sur un socket Unix :
listen = /run/php-fpm/php-fpm.sock
- Assurez-vous que les permissions du socket sont correctes :
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
- Décommentez les variables d’environnement utiles :
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Créez le répertoire de sessions PHP et donnez la propriété à nginx :
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Démarrez et activez PHP-FPM :
systemctl start php-fpm
systemctl enable php-fpm
Vérifiez que le socket php-fpm est utilisé :
netstat -pl | grep php
Important: sur CentOS, l’utilisateur web est nginx; si vous avez utilisé www-data dans d’autres guides, remplacez-le par nginx.
Étape 3 — Installer et configurer MariaDB
MediaWiki prend en charge MySQL/MariaDB et SQLite. Nous utiliserons MariaDB.
Installez MariaDB :
yum -y install mariadb mariadb-server
Démarrez et activez MariaDB :
systemctl start mariadb
systemctl enable mariadb
Sécurisez l’installation et définissez le mot de passe root :
mysql_secure_installation
Répondez aux questions interactives (répondez Y pour définir le mot de passe root, supprimer les utilisateurs anonymes, interdire la connexion root à distance, etc.).
Créez la base de données et l’utilisateur pour MediaWiki (exemple) :
mysql -u root -p
# entrez le mot de passe root
create database mediawikidb;
grant all privileges on mediawikidb.* to mediawiki@'localhost' identified by 'mypassword';
flush privileges;
exit;
Sécurité utile : créez un utilisateur DB avec des privilèges limités et sauvegardez la chaîne de connexion dans un fichier protégé.
Étape 4 — Télécharger et configurer MediaWiki
Installez git et les outils nécessaires :
yum -y install git zip unzip composer
Créez le dossier Web et clonez le code source :
mkdir -p /var/www/mediawiki
git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git /var/www/mediawiki
Installez les dépendances PHP via Composer :
cd /var/www/mediawiki
composer install --no-dev
Donnez la propriété des fichiers au compte nginx :
chown -R nginx:nginx /var/www/mediawiki
Conseil: si SELinux est activé, mettez les bons contextes :
semanage fcontext -a -t httpd_sys_content_t "/var/www/mediawiki(/.*)?"
restorecon -Rv /var/www/mediawiki
(Installez policycoreutils-python si semanage n’existe pas.)
Étape 5 — Obtenir un certificat SSL Let’s Encrypt
MediaWiki fonctionne idéalement via HTTPS. Nous utiliserons Let’s Encrypt pour un certificat gratuit.
Installez le client Let’s Encrypt (certbot traditionnel) :
yum -y install letsencrypt
Arrêtez Nginx avant d’utiliser certbot dans le mode “standalone” :
systemctl stop nginx
Autorisez HTTP et HTTPS dans Firewalld :
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
Lancez la génération du certificat :
letsencrypt certonly
Choisissez le mode 1 (serveur temporaire), entrez votre email, acceptez les TOS et renseignez votre nom de domaine.
Après réussite, les certificats sont enregistrés dans /etc/letsencrypt/live/
Conseil de maintenance : configurez le renouvellement automatique (certbot renew) dans un cron ou systemd timer.
Exemple de tâche cron à placer dans /etc/cron.d/certbot-renew :
0 3 * * * root /usr/bin/letsencrypt renew --quiet --post-hook "systemctl reload nginx"
Étape 6 — Configurer l’hôte virtuel Nginx pour MediaWiki
Créez le fichier de configuration Nginx :
cd /etc/nginx/
vim conf.d/mediawiki.conf
Collez la configuration ci-dessous (adaptez server_name et chemins de certificats) :
# 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;
}
}
Notes importantes :
- Remplacez wiki.hakase-labs.co par votre domaine.
- Vérifiez les chemins des certificats Let’s Encrypt.
Testez puis redémarrez Nginx :
nginx -t
systemctl restart nginx
Étape 7 — Installation Web de MediaWiki
Ouvrez votre navigateur à l’adresse :
Vous serez redirigé vers HTTPS. Cliquez sur « Set up the wiki » pour démarrer l’installateur Web.
Configuration de la langue
Choisissez English (ou votre langue) puis Continue.
Vérification de l’environnement
Assurez-vous que toutes les vérifications passent, puis Continue.
Configuration de la base de données
Entrez le nom de la base de données (mediawikidb), l’utilisateur (mediawiki) et le mot de passe.
Réglages de la base
Laissez les paramètres par défaut si vous avez créé l’utilisateur localement, puis Continue.
Créer un administrateur
Créez le compte administrateur, email et mot de passe.
Paramètres additionnels
Laissez les valeurs par défaut, puis Continue.
Installer
Cliquez Continue pour lancer l’installation.
Après quelques secondes, vous devriez voir l’écran final et pouvoir télécharger LocalSettings.php.
Téléchargez LocalSettings.php.
Uploader LocalSettings.php sur le serveur :
scp LocalSettings.php [email protected]:/var/www/mediawiki/
# puis, sur le serveur, ajustez la propriété
chown -R nginx:nginx /var/www/mediawiki
Note: l’exemple original utilisait www-data; sur CentOS préférez nginx:nginx.
Revenez sur la page Web et cliquez sur “enter your wiki”. Votre wiki devrait être accessible.
Étape 8 — Installer le skin Vector (thème par défaut)
Clonez le skin Vector dans le dossier skins :
cd /var/www/mediawiki/skins/
sudo git clone https://gerrit.wikimedia.org/r/mediawiki/skins/Vector
Ajustez la propriété :
chown -R nginx:nginx /var/www/mediawiki/skins/
Ajoutez l’appel au skin dans LocalSettings.php :
vim /var/www/mediawiki/LocalSettings.php
Ajoutez à la fin :
wfLoadSkin( 'Vector' );
Rechargez la page Web et vérifiez le rendu.
Checklists par rôle
Administrateur système (sysadmin)
- Mettre à jour CentOS et installer EPEL.
- Installer Nginx, PHP-FPM, MariaDB.
- Configurer SELinux et contexts si activé.
- Obtenir et configurer certificats Let’s Encrypt.
- Configurer sauvegardes régulières de la base et /var/www.
- Mettre en place monitoring (disque, CPU, disponibilité).
Administrateur applicatif (MediaWiki)
- Créer la base de données et l’utilisateur MediaWiki.
- Vérifier permissions fichiers et répertoires.
- Installer extensions essentielles (ex. Parsoid, VisualEditor si requis).
- Configurer politiques de mot de passe et comptes admin.
Sécurité / Opérations
- Configurer firewall et fail2ban si nécessaire.
- Auditer les logs d’accès et d’erreurs.
- Mettre en place renouvellement automatique des certificats.
SOP / Playbook rapide — Installation condensée
- Mettre à jour et installer epel-release.
- Installer nginx, php70w-fpm et MariaDB.
- Configurer php.ini et /etc/php-fpm.d/www.conf, démarrer services.
- Créer DB mediawikidb, utilisateur mediawiki.
- Cloner MediaWiki, composer install, chown nginx:nginx.
- Obtenir certbot, générer certificat, configurer Nginx.
- Lancer l’installateur Web et uploader LocalSettings.php.
- Appliquer skin et extensions.
Critères d’acceptation (Критерии приёмки)
- Le site wiki s’ouvre correctement en HTTPS sans avertissement de certificat.
- L’installateur MediaWiki a finalisé et LocalSettings.php est présent dans /var/www/mediawiki.
- Les pages PHP sont traitées via /run/php-fpm/php-fpm.sock (vérifié avec netstat/ss).
- L’utilisateur de l’application et les fichiers appartiennent à nginx:nginx.
- Les backups DB et fichiers sont programmés.
Dépannage courant
Problème: Nginx renvoie 502 Bad Gateway au lieu de la page wiki.
- Vérifiez que php-fpm tourne : systemctl status php-fpm.
- Vérifiez que le socket existe : ls -l /run/php-fpm/php-fpm.sock.
- Vérifiez permissions et propriétaires du socket et /run/php-fpm.
Problème: Erreur de permissions lors de l’upload de LocalSettings.php.
- Assurez-vous que LocalSettings.php appartient à nginx:nginx.
- Vérifiez SELinux (setenforce 0 temporairement pour tester), puis appliquez contextes filesystem.
Problème: Certificat Let’s Encrypt échoue pour le domaine.
- Vérifiez que le domaine pointe vers l’IP publique du serveur.
- Assurez-vous qu’aucun service n’écoute sur le port 80 (arrêtez Nginx si vous utilisez certbot –standalone).
Problème: Extensions PHP manquantes signalées dans les vérifications.
- Installez les paquets PHP correspondant (intl, xml, mbstring, gd, curl, etc.).
Sécurisation supplémentaire (hardening)
- Forcer HSTS (après vérification) : ajouter header Strict-Transport-Security dans nginx.
- Désactiver les méthodes HTTP non nécessaires (PUT, DELETE) si non utilisées.
- Utiliser des en-têtes de sécurité : X-Frame-Options, X-Content-Type-Options, Referrer-Policy.
- Restreindre l’accès SSH (clé publique, Désactiver root login) et utiliser un pare-feu.
- Auditer les extensions MediaWiki avant installation (vulnérabilités connues).
Exemple d’ajout d’en-têtes dans la configuration Nginx (insérer dans server { }) :
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header Referrer-Policy no-referrer-when-downgrade;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
Sauvegarde et restauration
Sauvegarde recommandée :
- Dump MySQL quotidien : mysqldump –single-transaction –routines –events –triggers -u root -p mediawikidb > /backup/mediawikidb-$(date +%F).sql
- Sauvegarde fichiers : rsync -a /var/www/mediawiki /backup/mediawiki-$(date +%F)
Testez la restauration régulièrement sur une instance de staging.
Migration depuis un autre serveur
Plan minimal :
- Exportez la base (mysqldump) et transférez les fichiers /images et LocalSettings.php.
- Installez la même version de MediaWiki et des extensions.
- Importez la base sur la nouvelle instance, ajustez LocalSettings.php si chemins/domaine changent.
- Vérifiez que les images et permissions sont correctes.
Conseil: activez le mode maintenance avant la migration pour éviter l’incohérence des données.
Tests / cas d’acceptation rapides
- Accéder à la page principale en HTTPS : retourne 200 et contient le titre du wiki.
- Créer une page test et vérifier que la base de données est mise à jour.
- Télécharger une image : vérifiez que /images contient le fichier et que l’URL renvoie l’image.
Glossaire (1 ligne chacun)
- PHP-FPM : gestionnaire de processus PHP, exécute PHP en tant que service.
- Nginx : serveur HTTP/Reverse proxy performant.
- MariaDB : base de données relationnelle compatible MySQL.
- LocalSettings.php : fichier de configuration principal de MediaWiki.
- Let’s Encrypt : autorité de certification fournissant des certificats SSL gratuits.
Notes de compatibilité et migrations
- La procédure décrit PHP 7.0 via webtatic. Si vous utilisez un dépôt officiel ou une version de PHP différente, adaptez les noms de paquets (ex. php-fpm, php-intl…).
- Pour CentOS 8/Stream ou distributions récentes, les commandes et paquets peuvent différer (dnf à la place de yum, modules PHP, remplacements de webtatic).
Annuaire de bonnes pratiques (qualitatif Impact × Effort)
- SSL via Let’s Encrypt : Impact élevé × Effort faible — indispensable.
- Sauvegardes automatisées : Impact élevé × Effort moyen — indispensable.
- Monitoring & alerting : Impact élevé × Effort moyen — recommandé.
- SELinux bien configuré : Impact moyen × Effort moyen — recommandé selon politique de sécurité.
Ressources et références
- Documentation MediaWiki : https://www.mediawiki.org/wiki/
- Certbot / Let’s Encrypt : https://letsencrypt.org/
Résumé
Ce guide couvre l’installation complète de MediaWiki 1.30 sur CentOS 7 avec Nginx, PHP-FPM, MariaDB et certificats Let’s Encrypt. Il inclut des étapes d’installation, des commandes, des conseils de sécurité, une checklist par rôle, des procédures de sauvegarde et des stratégies de dépannage.
Important: adaptez les utilisateurs, permissions, domaines et mots de passe à votre environnement. Testez les restaurations et le renouvellement automatique des certificats.
Matériaux similaires

Redémarrer un Nest Thermostat — guide rapide

YouTube TV depuis l’Inde — guide complet

Activer un module de protocole WiKID
Pilote d'affichage planté après MAJ Windows

Installer Apache Cassandra sur CentOS 8
