Déploiement d’une infrastructure WordPress multi-VM avec Nginx et MariaDB
Déploiement d’un Blog WordPress Multi-VM
Ce guide documente la mise en place d’une infrastructure WordPress segmentée sur trois machines virtuelles Debian 13, avec séparation des rôles (proxy, web, base de données). Ce projet a été mené durant mon cours d’Architecture des systèmes d’informations.
Architecture du Projet
| Rôle | IP | Description |
|---|---|---|
| Proxy Inverse | 192.168.138.142 |
Nginx Proxy Manager (Docker) |
| Serveur Web | 192.168.138.138 |
Nginx + PHP 8.4-FPM + WordPress |
| Serveur Database | 192.168.138.140 |
MariaDB (Port 3306) |
Configuration des VM
Debian a été installé sans interface graphique, avec uniquement le serveur SSH afin de faciliter l’administration depuis la machine hôte
Configuration du Backend (Database – .140)
Installation de MariaDB
sudo apt update && sudo apt install mariadb-server -y
sudo mariadbCréation de la base de données
CREATE DATABASE wordpress;
USE wordpress;
CREATE USER 'wpuser'@'%' IDENTIFIED BY 'ton_mot_de_passe';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%';
FLUSH PRIVILEGES;
EXIT;Ouverture réseau
Éditer le fichier suivant :
/etc/mysql/mariadb.conf.d/50-server.cnfModifier la ligne :
bind-address = 0.0.0.0Redémarrer MariaDB :
sudo systemctl restart mariadbConfiguration du Frontend (Web – .138)
Ce serveur héberge WordPress et communique avec la base de données distante.
Installation de Nginx & PHP 8.4
sudo apt install nginx mariadb-client -y
sudo apt install php8.4-fpm php8.4-mysql php8.4-curl php8.4-gd php8.4-mbstring php8.4-xml php8.4-zip php8.4-intl -yConfiguration du VirtualHost Nginx
Il est impératif de modifier la configuration par défaut pour que Nginx transmette les fichiers .php au moteur PHP-FPM 8.4.
sudo nano /etc/nginx/sites-available/defaultModifiez le fichier pour qu’il ressemble à ceci :
server {
listen 80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name monblog.lan;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}Appliquez les changements : sudo systemctl restart nginx.
Installation de WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo cp -r wordpress/* /var/www/html/
sudo chown -R www-data:www-data /var/www/html/Configuration de wp-config.php
sudo cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
sudo nano /var/www/html/wp-config.phpModifier les constantes suivantes :
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'ton_mot_de_passe' );
define( 'DB_HOST', '192.168.138.140' );Configuration du Proxy Inverse ( .142 )
Le proxy est géré via Nginx Proxy Manager (Docker).
Installation de Nginx Proxy Manager (Docker)
Sur la VM .142, installez Docker et configurez le conteneur :
sudo apt update
sudo apt install docker.io docker-compose -y
mkdir ~/npm && cd ~/npm
nano docker-compose.ymlCollez la configuration suivante :
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencryptLancez NPM avec : sudo docker-compose up -d
Configuration Proxy Host
Dans l’interface web de NPM :
- Proxy Host → Add Proxy Host
- Domain Names :
blog.monprojet.lan - Forward Hostname / IP :
192.168.138.138 - Forward Port :
80 - Websockets Support : Activé
Modification du fichier hosts sur Windows
Ouvrir le Bloc-notes en Administrateur
Le fichier hosts est un fichier système protégé. Vous ne pouvez pas l’enregistrer sans les droits d’administrateur :
- Cliquez sur le menu
Démarrer. - Tapez
Bloc-notes. - Faites un clic droit dessus et choisissez
Exécuter en tant qu'administrateur.
Ouvrir le fichier
Dans le Bloc-notes, allez dans Fichier > Ouvrir et accédez au chemin suivant : C:\Windows\System32\drivers\etc
Note : Si vous ne voyez aucun fichier, changez le type de fichier en bas à droite de Documents texte (*.txt) à Tous les fichiers (.). Sélectionnez ensuite le fichier nommé hosts.
Ajouter l’entrée DNS
Allez tout en bas du fichier et ajoutez la ligne suivante (en remplaçant par l’IP de ton Proxy .142) :
192.168.138.142 monblog.lanCommandes de Debug Utiles
Tester la connexion à la base depuis le serveur Web
mariadb -h 192.168.138.140 -u wpuser -pVérifier l’écoute du port MariaDB
ss -tlnp | grep 3306Logs d’erreurs Nginx
sudo tail -f /var/log/nginx/error.logÉtapes Finales d’Installation
-
Accéder au site via le proxy :
http://192.168.138.142 -
Suivre l’assistant d’installation WordPress
-
Accéder à l’administration :
/wp-admin
Votre infrastructure WordPress multi-VM est maintenant opérationnelle
Ce projet a été réalisé en environ une heure sur VMware Workstation. L’objectif n’était pas l’optimisation maximale, mais la compréhension des interactions entre les différentes briques (proxy, frontend, backend). Certaines extensions PHP peuvent ne pas être strictement nécessaires dans un contexte minimal, mais elles assurent une compatibilité complète avec WordPress.