Wolkra

Guides

Comment installer WordPress sur un VPS

Installez WordPress sur un VPS avec Caddy, PHP-FPM et MariaDB sous Ubuntu 24.04 : base de données, HTTPS automatique, WP-CLI, cache, sauvegardes et mises à jour, étape par étape.

Mis à jour le 6 min de lecture

Pour faire tourner WordPress sur un VPS, installez un serveur web (ici Caddy), PHP-FPM avec les extensions dont WordPress a besoin et MariaDB ; créez une base de données et un utilisateur ; téléchargez WordPress avec WP-CLI ; et faites pointer un domaine vers le serveur pour que Caddy active le HTTPS. Sous Ubuntu 24.04, l'installation complète prend environ 20 minutes.

Si vous préférez éviter le travail manuel, l'application WordPress en un clic de Wolkra installe automatiquement la même stack. Ce guide montre ce qui se passe en coulisses, pour que vous puissiez l'exploiter et la réparer vous-même.

Avant de commencer

  • Un serveur sous Ubuntu 24.04 (Debian 12 fonctionne avec les mêmes étapes), 2 GB de mémoire recommandés.
  • Les premiers pas effectués : mises à jour, utilisateur sudo, clés SSH.
  • Un domaine avec un enregistrement A (et AAAA si vous utilisez IPv6) pointant vers le serveur. Dans ce guide : blog.example.com.
  • Les ports 80 et 443 ouverts dans UFW et dans tout pare-feu cloud.
bash
sudo ufw allow 80,443/tcp

1. Installer PHP et MariaDB

bash
sudo apt update
sudo apt install -y mariadb-server \
  php-fpm php-mysql php-curl php-gd php-intl php-mbstring \
  php-xml php-zip php-imagick php-bcmath unzip

Ubuntu 24.04 installe PHP 8.3 ; Debian 12 installe PHP 8.2. Vérifiez votre version :

bash
php -v
ls /run/php/

Notez le nom du socket, par exemple php8.3-fpm.sock. Vous en aurez besoin à l'étape 5.

2. Sécuriser MariaDB et créer la base de données

bash
sudo mariadb-secure-installation

Acceptez les valeurs par défaut : conservez l'authentification par socket unix pour root, supprimez les utilisateurs anonymes et la base de test.

Créez une base de données et un utilisateur pour WordPress :

bash
DBPASS=$(openssl rand -hex 20)
echo "Database password: $DBPASS"
sudo mariadb <<SQL
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp'@'localhost' IDENTIFIED BY '$DBPASS';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'localhost';
FLUSH PRIVILEGES;
SQL

Conservez le mot de passe ; WP-CLI en aura besoin sous peu.

3. Installer Caddy

Caddy publie un dépôt officiel pour Debian/Ubuntu :

bash
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | \
  sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
  sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy

4. Installer WP-CLI et télécharger WordPress

bash
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Créez le répertoire du site et attribuez-le à l'utilisateur PHP :

bash
sudo mkdir -p /var/www/blog
sudo chown www-data:www-data /var/www/blog
cd /var/www/blog
sudo -u www-data wp core download
sudo -u www-data wp config create \
  --dbname=wordpress --dbuser=wp --dbpass="$DBPASS" --dbhost=localhost
sudo -u www-data wp core install \
  --url=https://blog.example.com \
  --title="My Blog" \
  --admin_user=admin_$(openssl rand -hex 3) \
  --admin_email=VOTRE_EMAIL \
  --prompt=admin_password

Remplacez VOTRE_EMAIL par votre adresse e-mail. Un nom d'utilisateur administrateur peu prévisible complique les attaques par devinette. --prompt demande le mot de passe au lieu de le laisser dans l'historique de votre shell.

5. Configurer Caddy

Remplacez /etc/caddy/Caddyfile par :

text
blog.example.com {
    root * /var/www/blog
    encode zstd gzip
    php_fastcgi unix//run/php/php8.3-fpm.sock
    file_server

    @blocked path /xmlrpc.php /wp-config.php /.git/* /.env
    respond @blocked 404

    header {
        Strict-Transport-Security "max-age=31536000"
        X-Content-Type-Options "nosniff"
        Referrer-Policy "strict-origin-when-cross-origin"
    }
}

Utilisez le nom de votre propre socket PHP. Puis :

bash
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

Caddy demande un certificat à la première requête. Ouvrez https://blog.example.com/wp-admin/ et connectez-vous. D'autres options sont décrites dans le guide du reverse proxy Caddy.

6. Optimiser PHP

Les valeurs par défaut sont trop faibles pour l'envoi de médias. Créez /etc/php/8.3/fpm/conf.d/99-wordpress.ini (adaptez la version) :

ini
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 120
opcache.enable = 1
opcache.memory_consumption = 128
bash
sudo systemctl restart php8.3-fpm

OPcache garde le PHP compilé en mémoire : c'est le gain de vitesse gratuit le plus important.

7. Ajouter du cache

Pour la plupart des blogs, une extension de cache de pages suffit. Pour les sites plus fréquentés, ajoutez Redis comme cache d'objets :

bash
sudo apt install -y redis-server php-redis
sudo systemctl restart php8.3-fpm
cd /var/www/blog
sudo -u www-data wp plugin install redis-cache --activate
sudo -u www-data wp redis enable

Par défaut, Redis n'écoute que sur localhost. Gardez-le ainsi.

8. Exécuter le cron de WordPress depuis le système

WordPress déclenche ses tâches planifiées lors des visites, ce qui est peu fiable sur les sites calmes et inutilement coûteux sur les sites chargés. Utilisez plutôt une vraie tâche cron :

bash
sudo -u www-data wp config set DISABLE_WP_CRON true --raw
echo '*/5 * * * * www-data cd /var/www/blog && /usr/local/bin/wp cron event run --due-now --quiet' | \
  sudo tee /etc/cron.d/wordpress

9. Tenir le site à jour

La plupart des compromissions de WordPress passent par des extensions obsolètes. Mettez à jour chaque semaine, ou automatisez :

bash
cd /var/www/blog
sudo -u www-data wp core update
sudo -u www-data wp plugin update --all
sudo -u www-data wp theme update --all

Supprimez les extensions et thèmes que vous n'utilisez pas. Chacun est du code qui peut contenir une faille.

10. Sauvegarder

Il vous faut deux choses : la base de données et wp-content.

bash
sudo mkdir -p /var/backups/blog
cd /var/www/blog
sudo -u www-data wp db export - | gzip | sudo tee /var/backups/blog/db-$(date +%F).sql.gz >/dev/null
sudo tar czf /var/backups/blog/files-$(date +%F).tar.gz -C /var/www/blog wp-content

Planifiez cela chaque nuit et copiez le résultat ailleurs. Sur Wolkra, ajoutez les sauvegardes quotidiennes automatiques du serveur (20 % du prix du serveur, 7 points de restauration) et prenez un instantané avant les mises à jour majeures. Voir le guide de stratégie de sauvegarde.

11. Renforcer les bases

  • Gardez SSH limité aux clés et le système à jour (sécuriser un serveur Ubuntu).
  • Activez la connexion à deux facteurs pour les administrateurs WordPress avec une extension.
  • Désactivez la modification de fichiers depuis le tableau de bord :
bash
sudo -u www-data wp config set DISALLOW_FILE_EDIT true --raw
  • Limitez les tentatives de connexion avec une extension ou Fail2ban.

12. Envoyer des e-mails de façon fiable

Par défaut, WordPress envoie les réinitialisations de mot de passe, les notifications de commentaires et les e-mails de commande via la fonction mail() de PHP, qui finit souvent en spam. Utilisez une extension SMTP et un vrai fournisseur de messagerie, et ajoutez les enregistrements SPF et DKIM pour votre domaine comme l'indique le fournisseur. Si le serveur envoie lui-même des e-mails, définissez dans la console le reverse DNS de son IP sur le nom d'hôte du serveur ; voir adresses IP.

13. Vérifier que tout fonctionne

Un contrôle rapide après l'installation :

bash
curl -I https://blog.example.com
sudo -u www-data wp --path=/var/www/blog core verify-checksums
sudo -u www-data wp --path=/var/www/blog cron event list
systemctl status caddy php8.3-fpm mariadb --no-pager

verify-checksums compare les fichiers du cœur avec la version officielle, et permet aussi de repérer rapidement une altération par la suite.

Dimensionnement et croissance

Surveillez la mémoire et le CPU dans les graphiques de la console pendant quelques semaines. Si les workers PHP viennent à manquer, augmentez pm.max_children dans /etc/php/8.3/fpm/pool.d/www.conf ou passez le serveur à une offre plus grande. Le trafic est non mesuré sur toutes les offres Wolkra : un mois chargé n'alourdit pas la facture. Pour en savoir plus sur l'hébergement de sites de cette manière, consultez hébergement WordPress.

Questions fréquentes

Un VPS est-il meilleur qu'un hébergement mutualisé pour WordPress ?

Un VPS vous donne vos propres ressources, un contrôle total sur PHP et le cache, et aucun voisin bruyant sur le même compte. En contrepartie, vous prenez en charge les mises à jour et la sécurité, que l'hébergement mutualisé gère pour vous.

De combien de mémoire WordPress a-t-il besoin sur un VPS ?

Un site unique avec sa base de données tourne sur 1 GB avec un peu de soin. 2 GB offrent plus de confort, et les boutiques WooCommerce très fréquentées demandent souvent 4 GB.

Pourquoi utiliser Caddy plutôt que Nginx ou Apache ?

Caddy obtient et renouvelle seul les certificats HTTPS et ne demande que quelques lignes de configuration. Nginx et Apache fonctionnent tout aussi bien, mais demandent davantage de configuration.

Puis-je avoir WordPress préinstallé ?

Oui. L'application WordPress en un clic de Wolkra installe pour vous Caddy, PHP, MariaDB et WP-CLI, prêts quelques minutes après le démarrage du serveur.

Comment sauvegarder WordPress ?

Sauvegardez à la fois la base de données et le dossier wp-content. Un export nocturne de la base avec WP-CLI plus une copie des fichiers, stockés hors du serveur, suffisent.

Lancer un serveur à Francfort

Créez un compte, rechargez votre solde et lancez un serveur dès €3.49 par mois, en ne payant que les heures utilisées. Bande passante non mesurée sur toutes les offres.