Cet article retrace l’ensemble des étapes pour configurer un VPS Ubuntu 24.04 LTS, installer une stack nginx + PHP + MariaDB, configurer un domaine avec HTTPS via Let’s Encrypt, et déployer WordPress.
1. Première connexion et mise à jour du système
À la livraison du VPS, le fournisseur transmet les identifiants par email. Première connexion en SSH :
ssh ubuntu@<IP_VPS>
Mise à jour complète du système :
sudo apt update && sudo apt upgrade -y
Un message signale qu’un nouveau kernel a été installé et qu’un redémarrage est nécessaire :
Pending kernel upgrade! Running kernel: 6.8.0-106-generic
The currently running kernel version is not the expected kernel version 6.8.0-117-generic.
On redémarre proprement :
sudo reboot
Après reconnexion, on vérifie que le bon kernel tourne :
uname -r
# 6.8.0-117-generic
2. Installation de la stack
Une seule commande installe tous les composants nécessaires :
sudo apt install -y nginx mariadb-server \
php8.3-fpm php8.3-mysql php8.3-gd \
php8.3-curl php8.3-mbstring php8.3-xml \
php8.3-zip php8.3-intl php8.3-bcmath \
certbot python3-certbot-nginx
On vérifie que les trois services principaux sont actifs :
sudo systemctl status nginx php8.3-fpm mariadb --no-pager
Les trois doivent afficher active (running).
3. Sécurisation de MariaDB
L’outil mysql_secure_installation guide la sécurisation de la base de données :
sudo mysql_secure_installation
Réponses recommandées :
- Switch to unix_socket authentication → n
- Change the root password → Y
- Remove anonymous users → Y
- Disallow root login remotely → Y
- Remove test database → Y
- Reload privilege tables → Y
Ensuite on crée la base de données pour le site :
sudo mysql -u root -p
CREATE DATABASE monsite_wp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'monsite_user'@'localhost' IDENTIFIED BY 'MotDePasse_Fort!';
GRANT ALL PRIVILEGES ON monsite_wp.* TO 'monsite_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
4. Structure des dossiers
sudo mkdir -p /var/www/monsite
sudo chown -R www-data:www-data /var/www/monsite
sudo chmod -R 755 /var/www/monsite
www-data est l’utilisateur système sous lequel nginx et PHP-FPM s’exécutent.
5. Configuration nginx — Virtual Host
nginx utilise le principe des virtual hosts : un fichier de configuration par site dans /etc/nginx/sites-available/, nginx redirige les requêtes vers le bon dossier en fonction du server_name.
sudo nano /etc/nginx/sites-available/monsite.fr
server {
listen 80;
server_name monsite.fr www.monsite.fr;
root /var/www/monsite;
index index.php index.html;
access_log /var/log/nginx/monsite.access.log;
error_log /var/log/nginx/monsite.error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
La directive try_files est indispensable pour WordPress, elle permet les URLs propres (permaliens). Le bloc location ~ \.php$ délègue l’exécution PHP à PHP-FPM via un socket Unix. Le bloc location ~ /\.ht bloque l’accès aux fichiers .htaccess.
On active le virtual host :
sudo ln -s /etc/nginx/sites-available/monsite.fr /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
La commande nginx -t valide la syntaxe avant de recharger (bonne habitude à systématiser).
6. Configuration DNS
Chez le registrar, dans la zone DNS de monsite.fr, on ajoute deux enregistrements de type A pointant vers l’IPv4 du VPS :
| Sous-domaine | Type | Cible |
|---|---|---|
| @ | A | IP du VPS |
| www | A | IP du VPS |
On vérifie la propagation DNS avec dig :
dig monsite.fr A +short
dig www.monsite.fr A +short
Chaque commande doit retourner l’IPv4 du VPS.
7. Certificats HTTPS avec Certbot
Une fois la propagation DNS confirmée, Certbot génère et installe les certificats Let’s Encrypt en une seule commande :
sudo certbot --nginx \
-d monsite.fr \
-d www.monsite.fr
Certbot modifie automatiquement le virtual host nginx pour activer HTTPS et met en place un timer systemd pour le renouvellement automatique tous les 90 jours. Les certificats sont stockés dans /etc/letsencrypt/live/monsite.fr/.
8. Installation de WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
sudo cp -r wordpress/* /var/www/monsite/
sudo chown -R www-data:www-data /var/www/monsite
sudo find /var/www/monsite -type d -exec chmod 755 {} \;
sudo find /var/www/monsite -type f -exec chmod 644 {} \;
Configuration de la connexion base de données :
sudo cp /var/www/monsite/wp-config-sample.php /var/www/monsite/wp-config.php
sudo nano /var/www/monsite/wp-config.php
define( 'DB_NAME', 'monsite_wp' );
define( 'DB_USER', 'monsite_user' );
define( 'DB_PASSWORD', 'MotDePasse_Fort!' );
define( 'DB_HOST', 'localhost' );
Les clés de sécurité sont générées sur api.wordpress.org/secret-key/1.1/salt et remplacées dans wp-config.php.
L’assistant d’installation WordPress est ensuite accessible directement depuis le navigateur sur https://monsite.fr.
9. Pare-feu UFW
UFW (Uncomplicated Firewall) est le frontend simplifié d’iptables fourni avec Ubuntu. Il ne laisse passer que les ports strictement nécessaires:
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
sudo ufw status
10. Conclusion
En quelques heures, un VPS nu Ubuntu 24.04 LTS se transforme en serveur web complet avec HTTPS, WordPress opérationnel et pare-feu configuré. Le tout sans aucun panneau de contrôle superflu, juste nginx, PHP-FPM et MariaDB, les briques fondamentales de tout serveur web Linux.
La prochaine étape sera de renforcer la sécurité SSH en passant à l’authentification par clé publique , sujet d’un prochain article.
Laisser un commentaire