Contents

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 mariadb

Cré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.cnf

Modifier la ligne :

bind-address = 0.0.0.0

Redémarrer MariaDB :

sudo systemctl restart mariadb

Configuration 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 -y

Configuration 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/default

Modifiez 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.php

Modifier 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.yml

Collez 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/letsencrypt

Lancez NPM avec : sudo docker-compose up -d

Configuration Proxy Host

Dans l’interface web de NPM :

  • Proxy HostAdd 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.lan

Commandes de Debug Utiles

Tester la connexion à la base depuis le serveur Web

mariadb -h 192.168.138.140 -u wpuser -p

Vérifier l’écoute du port MariaDB

ss -tlnp | grep 3306

Logs d’erreurs Nginx

sudo tail -f /var/log/nginx/error.log

Étapes Finales d’Installation

  1. Accéder au site via le proxy :

    http://192.168.138.142
  2. Suivre l’assistant d’installation WordPress

  3. 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.