Installer et sécuriser
Déployer WordPress sur un VPS : Nginx, PHP, MariaDB et HTTPS
Installer WordPress sur un VPS Ubuntu, de la base de données au certificat Let's Encrypt, avec des commandes testées sur Ubuntu 26.04 LTS.
Publié le
Ce guide installe WordPress sur un VPS Ubuntu avec Nginx, PHP et MariaDB, puis le passe en HTTPS avec un certificat Let's Encrypt gratuit. Comptez une demi-heure. Toutes les commandes ont été exécutées sur Ubuntu 26.04.1 LTS le 27 septembre 2026, en environnement de test puis sur un VPS QuantylCloud ; elles valent aussi pour Ubuntu 24.04 LTS, à la version de PHP près (voir l'étape 4).
Le raccourci : l'image WordPress
Au moment de créer votre serveur, vous pouvez choisir l'image WordPress du catalogue : le serveur démarre avec WordPress déjà installé. C'est le plus rapide pour tester. L'installation à la main, décrite ici, vous laisse maître de chaque brique : versions, réglages, et ce qu'il faut regarder quand quelque chose casse.
Avant de commencer
- un VPS sous Ubuntu, sécurisé en suivant Sécuriser son VPS Linux : ce guide se connecte avec l'utilisateur
gestionqui y est créé ; - un nom de domaine, dont les enregistrements DNS
Adeexemple.maet dewww.exemple.mapointent vers l'adresse IP du serveur. Remplacezexemple.mapar votre domaine dans toutes les commandes ; - pour un site avec du trafic, 2 vCPU et 4 Go de mémoire : un petit plan suffit pour démarrer (voir Créer un VPS au Maroc).
Étape 1 — Ouvrir les ports du site web
Un site répond sur les ports 80 (HTTP) et 443 (HTTPS). Ouvrez-les d'abord dans l'onglet Pare-feu de la fiche du serveur, dans la console, puis dans ufw sur la machine :
sudo ufw allow 80,443/tcpOublier l'un des deux pare-feu est la première cause d'un site injoignable, et d'un certificat refusé à l'étape 6.
Étape 2 — Installer Nginx, MariaDB et PHP
sudo apt update
sudo apt install -y curl nginx mariadb-server php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-xml php-zip php-imagickNginx sert les pages, PHP-FPM exécute WordPress, MariaDB stocke le contenu. Les extensions PHP de la liste sont celles que WordPress réclame dans son écran Santé du site.
Étape 3 — Créer la base de données
Générez d'abord un mot de passe solide pour la base, et notez-le :
openssl rand -base64 24Créez ensuite la base et son utilisateur, en remplaçant MOT_DE_PASSE par la valeur obtenue :
sudo mysql <<'SQL'
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'MOT_DE_PASSE';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
SQLSur Ubuntu, sudo mysql ouvre la base en administrateur sans mot de passe : l'accès administrateur est réservé aux utilisateurs sudo du serveur. L'utilisateur wordpress n'a de droits que sur sa propre base.
Étape 4 — Télécharger WordPress
Téléchargez la dernière version, vérifiez son empreinte, puis installez-la :
cd /tmp
curl -fsSLO https://wordpress.org/latest.tar.gz
echo "$(curl -fsSL https://wordpress.org/latest.tar.gz.sha1) latest.tar.gz" | sha1sum -c
tar -xzf latest.tar.gz
sudo mv wordpress /var/www/wordpress
sudo chown -R www-data:www-data /var/www/wordpressLa troisième commande doit afficher latest.tar.gz: OK. Sinon, le fichier est incomplet ou altéré : supprimez-le et recommencez. Les fichiers appartiennent à www-data, l'utilisateur de PHP : WordPress pourra ainsi installer ses mises à jour, thèmes et extensions lui-même.
Autorisez aussi l'envoi de fichiers jusqu'à 64 Mo, au lieu de 2 Mo par défaut :
printf 'upload_max_filesize = 64M\npost_max_size = 64M\n' | sudo tee /etc/php/8.5/fpm/conf.d/99-wordpress.ini
sudo systemctl restart php8.5-fpm8.5 est la version de PHP d'Ubuntu 26.04. Sur Ubuntu 24.04, c'est 8.3 : la commande ls /etc/php vous donne la vôtre.
Étape 5 — Configurer Nginx
Créez la configuration du site :
sudo tee /etc/nginx/sites-available/wordpress >/dev/null <<'CONF'
server {
listen 80;
listen [::]:80;
server_name exemple.ma www.exemple.ma;
root /var/www/wordpress;
index index.php;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
CONFActivez-la à la place de la page par défaut, vérifiez-la, puis rechargez Nginx :
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginxnginx -t doit répondre syntax is ok et test is successful. Ne rechargez pas tant que ce n'est pas le cas.
Étape 6 — Passer en HTTPS avec Let's Encrypt
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d exemple.ma -d www.exemple.maCertbot demande une adresse email, pour les avis d'expiration, et l'acceptation des conditions de Let's Encrypt. Il obtient le certificat, l'ajoute à la configuration de Nginx et redirige désormais tout le trafic HTTP vers HTTPS. Le renouvellement est automatique : le certificat dure trois mois, et une tâche planifiée le renouvelle avant l'échéance.
En test, nous avons obtenu le certificat auprès de l'autorité de test de Let's Encrypt, sans passer par Internet. Face au vrai Let's Encrypt, deux conditions en plus : vos enregistrements DNS doivent déjà pointer vers le serveur, et le port 80 doit être ouvert dans les deux pare-feu. Si certbot échoue, c'est presque toujours l'un des deux.
Étape 7 — Terminer l'installation dans le navigateur
Ouvrez https://exemple.ma : l'assistant de WordPress démarre. Choisissez la langue, puis renseignez la base créée à l'étape 3 : nom wordpress, identifiant wordpress, votre mot de passe, et localhost comme adresse. Donnez ensuite un titre au site, un identifiant d'administration, qui ne soit ni gestion ni votre nom de domaine, et un mot de passe long.
L'assistant écrit le fichier wp-config.php, qui contient le mot de passe de la base, lisible par tous les utilisateurs du serveur. Nous l'avons constaté en test. Refermez-le :
sudo chmod 640 /var/www/wordpress/wp-config.phpÉtape 8 — Envoyer les emails du site
Tel quel, WordPress ne sait pas envoyer d'email : en test, le lien « Mot de passe oublié » a répondu que l'email n'avait pas pu être envoyé. Réinitialisations de mot de passe, notifications et formulaires de contact en dépendent. La solution est de faire passer les emails par un serveur SMTP : celui de votre messagerie professionnelle, ou celui d'un service d'envoi d'emails. Il vous donne une adresse de serveur, un port (en général 587), un identifiant et un mot de passe.
Créez le fichier suivant en remplaçant le serveur, l'identifiant, le mot de passe et l'adresse d'expédition par les vôtres :
sudo mkdir -p /var/www/wordpress/wp-content/mu-plugins
sudo tee /var/www/wordpress/wp-content/mu-plugins/smtp.php >/dev/null <<'PHP'
<?php
// Envoi des emails de WordPress par SMTP.
add_action('phpmailer_init', function ($mail) {
$mail->isSMTP();
$mail->Host = 'smtp.exemple.ma';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = 'site@exemple.ma';
$mail->Password = 'MOT_DE_PASSE_SMTP';
$mail->setFrom('site@exemple.ma', 'Mon site');
});
PHP
sudo chown -R www-data:www-data /var/www/wordpress/wp-content/mu-plugins
sudo chmod 640 /var/www/wordpress/wp-content/mu-plugins/smtp.phpUn fichier du dossier mu-plugins est chargé automatiquement par WordPress : il ne peut pas être désactivé par erreur depuis le tableau de bord et survit aux changements de thème. Il contient un mot de passe, d'où la dernière commande. Si vous préférez un écran de réglages, une extension SMTP du répertoire officiel fait le même travail.
Pour vérifier, déconnectez-vous, cliquez sur « Mot de passe oublié ? » sur la page de connexion et saisissez votre identifiant : l'email doit arriver dans la minute. Votre fournisseur SMTP vous indique aussi les enregistrements DNS à ajouter à votre domaine pour que ces emails ne finissent pas en indésirables.
Et ensuite ?
- Mises à jour. Celles de WordPress, des thèmes et des extensions se font depuis le tableau de bord. Celles de Nginx, PHP et MariaDB, par les mises à jour automatiques d'Ubuntu si vous avez suivi le guide de sécurisation.
- Sauvegardes. Activez l'option de sauvegarde quotidienne depuis la fiche du serveur, ou tenez les vôtres : base de données et dossier
/var/www/wordpress/wp-content. - Extensions. Chacune est du code qui s'exécute sur votre serveur : installez-en peu, depuis le répertoire officiel, et supprimez celles que vous n'utilisez plus.
Questions fréquentes
Quel plan choisir pour un site WordPress ?
Le plus petit plan suffit pour un site vitrine ou pour démarrer. Pour un site avec du trafic, une boutique ou plusieurs extensions lourdes, visez 2 vCPU et 4 Go de mémoire.
Le certificat HTTPS est-il payant ?
Non. Let's Encrypt délivre des certificats gratuits, valables trois mois, et certbot les renouvelle automatiquement avant leur échéance.
Pourquoi certbot n'obtient-il pas de certificat ?
Presque toujours pour l'une de deux raisons : les enregistrements DNS du domaine ne pointent pas encore vers le serveur, ou le port 80 est fermé dans le pare-feu de la console ou dans ufw.
Pouvez-vous installer WordPress pour moi ?
Oui : l'image WordPress du catalogue livre un serveur avec WordPress déjà installé, et notre équipe peut aussi prendre en charge la mise en service. Écrivez-nous depuis la page contact.
