Descriptions préliminaires
WordPress
WordPress est un système de gestion de contenu (CMS) open source permettant de créer et gérer facilement des sites Web et des blogs.
Il est principalement écrit en PHP et utilise une base de données MySQL ou MariaDB pour enregistrer le contenu du site, les utilisateurs,
les paramètres et les différentes configurations.
PHP
PHP est un langage de programmation exécuté côté serveur. WordPress utilise PHP pour générer dynamiquement les pages Web avant de les envoyer au navigateur.
Apache
Apache est le serveur Web qui recevra les requêtes HTTP ou HTTPS des utilisateurs et transmettra les pages générées par WordPress.
MySQL / MariaDB
MySQL est un système de gestion de base de données relationnelle.
MariaDB est un fork de MySQL largement utilisé sous Linux et compatible avec WordPress.
Sur Debian, MariaDB est généralement utilisé à la place de MySQL.
Installation de WordPress sur Debian
- Mettre à jour le serveur
- Installer les prérequis
- Configurer Apache et le VirtualHost
- Sécuriser MariaDB
- Générer le mot de passe de la base de données
- Créer la base de données WordPress
- Télécharger et installer WordPress
- Configurer wp-config.php
- Configurer les permissions
- Finaliser l'installation dans le navigateur
- Sécuriser l'accès à l'administration
1. Mettre à jour le système
Commencer par mettre à jour la liste des paquets et les logiciels déjà installés.
sudo apt update sudo apt upgrade -y
2. Installer les prérequis
WordPress a besoin d'un serveur Web, de PHP et d'une base de données.
Installer Apache
Vérifier premièrement si Apache est déjà installé :
apache2 -v
Si Apache n'est pas installé :
sudo apt install apache2 -y
Activer Apache au démarrage et démarrer immédiatement le service :
sudo systemctl enable --now apache2
Vérifier son fonctionnement :
sudo systemctl status apache2
Résultat attendu :
le service doit afficher active (running).
Installer PHP
sudo apt install php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-soap php-intl php-zip php-imagick unzip wget -y
Vérifier la version de PHP :
php -v
Installer MariaDB
sudo apt install mariadb-server -y
Activer et démarrer MariaDB :
sudo systemctl enable --now mariadb
Vérifier son fonctionnement :
sudo systemctl status mariadb
3. Créer le répertoire du site WordPress
WordPress sera installé dans un répertoire dédié plutôt que directement dans
/var/www/html.
sudo mkdir -p /var/www/wp-monsite
Le répertoire utilisé pour le site sera :
4. Créer le VirtualHost Apache
Créer le fichier de configuration :
sudo nano /etc/apache2/sites-available/wp-monsite.conf
Ajouter la configuration suivante :
<VirtualHost *:80>
ServerName wp-monsite.ca
ServerAlias www.wp-monsite.ca
DocumentRoot /var/www/wp-monsite
<Directory /var/www/wp-monsite>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/wp-monsite-error.log
CustomLog ${APACHE_LOG_DIR}/wp-monsite-access.log combined
</VirtualHost>
Remplacer
wp-monsite.ca et www.wp-monsite.ca
par le véritable nom de domaine utilisé pour le site.
Activer le site :
sudo a2ensite wp-monsite.conf
Activer le module Apache rewrite :
sudo a2enmod rewrite
Si le site Apache par défaut n'est plus nécessaire, le désactiver :
sudo a2dissite 000-default.conf
Vérifier la configuration Apache :
sudo apache2ctl configtest
Résultat attendu :
Syntax OK
Recharger Apache :
sudo systemctl reload apache2
5. Sécuriser MariaDB
Lancer l'utilitaire de sécurisation :
sudo mariadb-secure-installation
Parmi les options proposées, il est recommandé de :
- supprimer les utilisateurs anonymes ;
- interdire la connexion distante de l'utilisateur root ;
- supprimer la base de données de test ;
- recharger les tables de privilèges.
mysql_secure_installation
peuvent varier légèrement selon la version de MariaDB installée.
6. Générer un mot de passe pour WordPress
Avant de créer l'utilisateur de la base de données, générer un mot de passe long et aléatoire.
openssl rand -base64 32
Exemple de résultat :
3Yk8Lqv4SxN2u7pF9mA1cD6rT0wE5zBhKXoQnJgP4Ls=
Copier immédiatement le mot de passe généré et le conserver dans un endroit sécurisé. Ce même mot de passe devra être utilisé dans MariaDB et dans le fichier
wp-config.php.
7. Créer la base de données WordPress
Se connecter à MariaDB :
sudo mariadb
Créer la base de données :
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Créer ensuite l'utilisateur WordPress en utilisant le mot de passe généré précédemment :
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'MOT_DE_PASSE_GENERE';
Donner à cet utilisateur les permissions sur la base WordPress :
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost'; FLUSH PRIVILEGES; EXIT;
Explications :
CREATE DATABASEcrée la base utilisée par WordPress.CREATE USERcrée un utilisateur uniquement pour WordPress.GRANT ALL PRIVILEGESlui donne les permissions sur cette base uniquement.FLUSH PRIVILEGESrecharge les privilèges.EXITquitte MariaDB.
8. Télécharger WordPress
Se placer temporairement dans /tmp :
cd /tmp
Télécharger la dernière version de WordPress :
wget https://wordpress.org/latest.tar.gz
Extraire l'archive :
tar -xzf latest.tar.gz
Copier WordPress dans le répertoire du VirtualHost :
sudo cp -a wordpress/. /var/www/wp-monsite/
Les fichiers WordPress doivent maintenant se trouver directement dans :
9. Configurer wp-config.php
Se déplacer dans le répertoire WordPress :
cd /var/www/wp-monsite
Créer le fichier de configuration à partir du modèle :
sudo cp wp-config-sample.php wp-config.php
Ouvrir le fichier :
sudo nano wp-config.php
Configurer les paramètres de connexion à la base de données :
define( 'DB_NAME', 'wordpress' ); define( 'DB_USER', 'wordpressuser' ); define( 'DB_PASSWORD', 'MOT_DE_PASSE_GENERE' ); define( 'DB_HOST', 'localhost' );
La valeur utilisée pour
DB_PASSWORD doit être exactement le même
mot de passe que celui utilisé lors de la création de
wordpressuser dans MariaDB.
Ne pas générer un nouveau mot de passe à cette étape.
10. Configurer les clés de sécurité WordPress
Dans wp-config.php, WordPress contient également plusieurs clés
utilisées pour sécuriser les sessions et les cookies.
Remplacer les valeurs par défaut par des clés aléatoires générées par WordPress.
11. Configurer les permissions
Donner les fichiers du site à l'utilisateur utilisé par Apache :
sudo chown -R www-data:www-data /var/www/wp-monsite
Configurer les permissions des répertoires :
sudo find /var/www/wp-monsite -type d -exec chmod 755 {} \;
Configurer les permissions des fichiers :
sudo find /var/www/wp-monsite -type f -exec chmod 644 {} \;
12. Vérifier Apache
Faire une dernière vérification :
sudo apache2ctl configtest
Puis recharger Apache :
sudo systemctl reload apache2
13. Finaliser l'installation dans le navigateur
Ouvrir un navigateur et accéder au nom de domaine configuré dans le VirtualHost.
http://wp-monsite.ca
L'assistant d'installation WordPress demandera notamment :
- la langue du site ;
- le titre du site ;
- le nom du compte administrateur ;
- le mot de passe administrateur ;
- l'adresse courriel de l'administrateur.
14. Créer un compte administrateur sécurisé
Le compte administrateur doit donc utiliser un mot de passe très complexe, long et unique.
Enregistrer ce mot de passe dans un endroit sécurisé, idéalement dans un gestionnaire de mots de passe.
Éviter également les noms d'utilisateur évidents comme :
adminadministratorrootwordpress
Utiliser plutôt un nom d'utilisateur administrateur moins facile à deviner.
15. Vérifier le fonctionnement de WordPress
Vérifier premièrement la page publique du site :
http://wp-monsite.ca
Puis vérifier l'interface d'administration :
http://wp-monsite.ca/wp-admin
16. Masquer la page de connexion WordPress
Par défaut, la page de connexion à l'administration WordPress est facilement identifiable :
/wp-admin /wp-login.php
Pour limiter les tentatives automatisées les plus simples, installer l'extension :
Dans WordPress :
- Ouvrir Extensions.
- Cliquer sur Ajouter une extension.
- Rechercher WPS Hide Login.
- Installer l'extension.
- Activer l'extension.
Configurer ensuite une nouvelle adresse de connexion.
Par exemple :
https://wp-monsite.ca/gestion-site-7x92
Éviter les chemins faciles à deviner :
/admin/login/connexion/backend
Conserver la nouvelle adresse de connexion dans un endroit sécurisé. Si elle est oubliée, l'accès normal à l'administration pourrait devenir plus difficile.
/wp-admin ou /wp-login.php ne constitue pas
à lui seul une protection suffisante. Cette mesure doit être utilisée en complément
d'un mot de passe complexe, de HTTPS, des mises à jour et idéalement de
l'authentification à deux facteurs.
17. Sécurité minimale avant l'exposition à Internet
Avant de considérer le serveur prêt à être publié, vérifier au minimum les éléments suivants :
- utiliser HTTPS ;
- utiliser un mot de passe administrateur long et unique ;
- conserver les mots de passe dans un gestionnaire de mots de passe ;
- maintenir WordPress à jour ;
- maintenir les extensions à jour ;
- maintenir les thèmes à jour ;
- supprimer les extensions inutilisées ;
- supprimer les thèmes inutilisés ;
- mettre en place des sauvegardes régulières ;
- utiliser un pare-feu sur le serveur ;
- utiliser l'authentification à deux facteurs pour l'administrateur si possible.
WordPress fonctionne maintenant derrière un VirtualHost Apache dédié et utilise une base de données MariaDB avec un compte spécifique.


