Guide des technologies

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

9 min read DevOps Mis à jour 18 Oct 2025
MediaWiki sur CentOS 7 avec Nginx — installation
MediaWiki sur CentOS 7 avec Nginx — installation

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

  1. Installer Nginx sur CentOS 7
  2. Installer et configurer PHP-FPM (PHP 7.0)
  3. Installer et configurer MariaDB
  4. Télécharger et configurer MediaWiki
  5. Obtenir un certificat SSL Let’s Encrypt
  6. Configurer l’hôte virtuel Nginx pour MediaWiki
  7. Installer MediaWiki via l’interface Web
  8. 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

Capture d'écran montrant la sortie de netstat avec les ports HTTP et HTTPS utilisés

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 :

  1. Éditez /etc/php.ini et remplacez ou décommentez :
cgi.fix_pathinfo=0
  1. Éditez /etc/php-fpm.d/www.conf : changez user et group en nginx (CentOS) :
user = nginx  
group = nginx
  1. Configurez PHP-FPM pour écouter sur un socket Unix :
listen = /run/php-fpm/php-fpm.sock
  1. Assurez-vous que les permissions du socket sont correctes :
listen.owner = nginx  
listen.group = nginx  
listen.mode = 0660
  1. 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

Sortie montrant php-fpm.sock présent dans la liste des sockets

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;

Capture d'écran montrant la création de la base de données et des privilèges

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

Capture d'écran montrant composer install terminé

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

Capture d'écran montrant firewall-cmd ajoutant HTTP/HTTPS

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.

Invite Let's Encrypt demandant le choix de méthode ACME et le domaine

Après réussite, les certificats sont enregistrés dans /etc/letsencrypt/live//

Message de succès indiquant l'emplacement des certificats Let's Encrypt

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

Sortie montrant nginx -t OK et redémarrage


Étape 7 — Installation Web de MediaWiki

Ouvrez votre navigateur à l’adresse :

http://wiki.hakase-labs.co/

Vous serez redirigé vers HTTPS. Cliquez sur « Set up the wiki » pour démarrer l’installateur Web.

Page d'accueil de l'installateur MediaWiki avec le lien Set up the wiki

Configuration de la langue

Choisissez English (ou votre langue) puis Continue.

Sélection de la langue dans l'installateur MediaWiki

Vérification de l’environnement

Assurez-vous que toutes les vérifications passent, puis Continue.

Page de vérification de l'environnement montrant les vérifications passées

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.

Formulaire de configuration base de données

Réglages de la base

Laissez les paramètres par défaut si vous avez créé l’utilisateur localement, puis Continue.

Écran des paramètres de base de données

Créer un administrateur

Créez le compte administrateur, email et mot de passe.

Formulaire de création d'un utilisateur administrateur

Paramètres additionnels

Laissez les valeurs par défaut, puis Continue.

Page MediaWiki Additional Configuration

Installer

Cliquez Continue pour lancer l’installation.

Écran d'installation en cours

Après quelques secondes, vous devriez voir l’écran final et pouvoir télécharger LocalSettings.php.

Écran final après installation, lien pour télécharger LocalSettings.php

Téléchargez LocalSettings.php.

Bouton pour télécharger 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.

Page d'accueil du wiki après installation réussie


É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' );

Capture montrant l'ajout de wfLoadSkin('Vector') dans LocalSettings.php

Rechargez la page Web et vérifiez le rendu.

Capture du wiki affichant le skin Vector


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

  1. Mettre à jour et installer epel-release.
  2. Installer nginx, php70w-fpm et MariaDB.
  3. Configurer php.ini et /etc/php-fpm.d/www.conf, démarrer services.
  4. Créer DB mediawikidb, utilisateur mediawiki.
  5. Cloner MediaWiki, composer install, chown nginx:nginx.
  6. Obtenir certbot, générer certificat, configurer Nginx.
  7. Lancer l’installateur Web et uploader LocalSettings.php.
  8. 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 :

  1. Exportez la base (mysqldump) et transférez les fichiers /images et LocalSettings.php.
  2. Installez la même version de MediaWiki et des extensions.
  3. Importez la base sur la nouvelle instance, ajustez LocalSettings.php si chemins/domaine changent.
  4. 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


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.

Auteur
Édition

Matériaux similaires

Redémarrer un Nest Thermostat — guide rapide
Dépannage

Redémarrer un Nest Thermostat — guide rapide

YouTube TV depuis l’Inde — guide complet
Streaming TV

YouTube TV depuis l’Inde — guide complet

Activer un module de protocole WiKID
Authentification

Activer un module de protocole WiKID

Pilote d'affichage planté après MAJ Windows
Assistance technique

Pilote d'affichage planté après MAJ Windows

Installer Apache Cassandra sur CentOS 8
Bases de données

Installer Apache Cassandra sur CentOS 8

Ethernet plus lent que le Wi‑Fi ? Causes et corrections
réseau

Ethernet plus lent que le Wi‑Fi ? Causes et corrections