Installer WordPress 5 avec Apache sur Debian 9

Ce tutoriel te montrera comment installer et configurer la dernière version de WordPress 5 au sommet d’une pile LAMP dans Debian 9 – Stretch. WordPress est sans aucun doute l’un des systèmes de gestion de contenu ou CMS open-source les plus populaires utilisés de nos jours pour la publication sur Internet, qui alimente plus de 60 millions de sites Web dans le monde, qu’il s’agisse de petits sites de blogs ou de grandes marques notables. Basé sur le moteur PHP et MySQL, WordPress est souvent associé à la collection LAMP, soit installé sur des serveurs dédiés ou des serveurs privés virtuels, soit sur des fournisseurs d’hébergement web partagé. L’acronyme LAMP décrit une collection de logiciels, ou ensemble de logiciels, qui se compose généralement du noyau Linux Open Source, quelle que soit la distribution choisie, du serveur HTTP Apache, qui est l’un des serveurs Web open source les plus populaires sur Internet en raison de sa stabilité, de sa flexibilité et de ses performances, du langage de programmation interprété côté serveur PHP et du système de gestion de base de données relationnelle (SGBDR) MariaDB, l’un des logiciels de base de données les plus populaires, développé simultanément par la communauté open source à partir de MySQL.

Exigences

  • Une installation propre du système d’exploitation Debian 9 sur un serveur privé virtuel ou une machine virtuelle ou directement sur une machine bare-metal dédiée.
  • Un accès à distance SSH dans le cas d’un VPS ou d’un serveur distant ou un accès direct à la console.
  • Au moins une adresse IP statique pour une interface réseau configurée sur le serveur
  • Si la page Web doit être accessible au public sur Internet, tu auras besoin d’un nom de domaine public enregistré avec les enregistrements DNS appropriés configurés. Pendant ce tutoriel, nous utiliserons le domaine exemple.com et une adresse IP statique d’un espace privé, en NAT, derrière le routeur principal. Le domaine sera accessible depuis Internet en transférant les ports Apache 80 et 443 du côté du routeur vers le LAN interne de la machine virtuelle auto-hébergée.

Installe le pack de logiciels LAMP

La première chose à faire avant de commencer à installer tous les composants LAMP est de te connecter au serveur Debian 9 et d’effectuer une procédure de mise à jour pour tous les composants du système, comme les mises à niveau du noyau, les mises à jour des paquets ou les correctifs de sécurité, en envoyant les commandes suivantes avec les privilèges de root.

apt-get update
apt-get upgrade
apt-get dist-upgrade

À l’étape suivante, tu dois configurer le nom de ta machine en remplaçant la variable hostname par ton propre nom descriptif en exécutant la commande ci-dessous. Sache que tu devras peut-être redémarrer le système afin d’appliquer le nouveau nom d’hôte en conséquence.

hostnamectl set-hostname hostname.yourdomain.com

Tu devrais également installer les utilitaires suivants qui te seront utiles plus tard pour résoudre divers problèmes de dépannage.

apt install net-tools sudo wget curl bash-completion

Une fois que le nom d’hôte de la machine a été appliqué, connecte-toi à nouveau avec les privilèges root et installe le serveur HTTP Apache, qui est, par défaut, précompilé dans un paquet binaire et fourni par les dépôts de Debian 9.

apt install apache2

Ensuite, installe la dernière version de l’interpréteur de langage PHP et tous les modules nécessaires au serveur web Apache afin de déployer le CMS WordPress en lançant la commande suivante.

apt install libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-xml php7.0-curl php7.0-mbstring php7.0-mcrypt php7.0-xmlrpc

Le dernier composant qui manque maintenant pour que la pile LAMP soit complète est le serveur de base de données MariaDB. Exécute la commande suivante pour installer le serveur MariaDB ainsi que le module PHP nécessaire pour accéder à la base de données depuis le serveur HTTP Apache.

apt install php7.0-mysql mariadb-server mariadb-client

Après avoir installé la base de données MariaDB, démarre le démon et sécurise la base de données en exécutant le script mysql_secure_installation comme illustré dans l’extrait ci-dessous. Réponds principalement par oui à toutes les questions que le script te pose. Veille aussi à choisir un mot de passe fort pour le compte root. Sache que le compte racine MySQL n’est pas identique au compte racine Linux. Le premier est utilisé uniquement pour gérer la base de données MariaDB et le second est le compte superutilisateur de chaque système Linux. Ces comptes ne se chevauchent jamais dans un système.

systemctl start mariadb
mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

Nous n’avons pas encore fini de sécuriser la base de données MariaDB. Par défaut, tu peux te connecter à MariaDB depuis localhost avec le compte root de la base de données sans qu’on te demande un mot de passe. Pour éviter d’éventuels problèmes de sécurité, connecte-toi à la base de données avec l’utilisateur root et exécute les commandes suivantes.

mysql -u root -p
MariaDB> use mysql;
MariaDB> update user set plugin='' where User='root';
MariaDB> flush privileges;
MariaDB> quit

Supprime le plugin de l'utilisateur root de MySQL

Maintenant, teste la base de données en essayant de te connecter avec le compte root sans le mot de passe. Tu devrais te voir refuser l’accès à la base de données MariaDB.

Dans l’étape suivante, nous allons activer et configurer les modules TLS et rewrite pour le serveur Web Apache, qui sont désactivés par défaut. Exécute les commandes ci-dessous pour activer les deux modules.

a2enmod rewrite ssl
a2ensite default-ssl.conf

Ensuite, ouvre les fichiers de configuration Apache pour les deux sites activés et ajoute le bloc suivant sous la directive DocumentRoot comme illustré dans la capture d’écran suivante.

nano /etc/apache2/sites-enabled/000-default.conf
nano /etc/apache2/sites-enabled/default-ssl.conf

Dans les deux fichiers de configuration, ajoute le bloc de code suivant :

    <Directory /var/www/html>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Require all granted
    </Directory>

Accorde l'accès au répertoire /var/www/html et autorise les surcharges

Dans apache default-ssl.conf TLS, tu peux aussi ajouter le contenu ci-dessous, s’il n’existe pas, afin d’améliorer la sécurité du protocole SSL d’Apache. Ces lignes de code devraient corriger les vulnérabilités SSL courantes.

SSLProtocol all -SSLv2 -SSLv3
# Add SSL Cipher in one long line
SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder     on
SSLOptions +StrictRequire
 
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

Définis les paramètres SSL stricts dans apache2

Si les lignes illustrées dans l’extrait ci-dessus existent déjà dans le fichier de configuration SSL d’Apache, assure-toi de les modifier pour qu’elles aient l’aspect décrit ci-dessus. Afin d’appliquer ces paramètres, active le module Apache headers et redémarre le service en exécutant les commandes suivantes :

a2enmod headers
systemctl restart apache2.service

Pour un site Web de production, il devrait être obligatoire d’activer le module Apache TLS car le CMS WordPress génère principalement du contenu dynamique via la passerelle PHP et gère également le processus d’authentification pour ses utilisateurs internes. L’utilisation de la technologie TLS garantit que les informations transférées sont cryptées aux deux extrémités et que la connexion est sécurisée. Un tiers ou un homme du milieu peut intercepter le trafic mais ne peut pas décrypter le contenu, car les informations ne sont pas livrées en texte clair.

Après avoir effectué toutes les modifications ci-dessus, teste la configuration d’Apache afin de détecter d’éventuelles erreurs de syntaxe et si tout est correct, redémarre les démons LAMP afin de refléter toutes les modifications effectuées jusqu’à présent et active les services à l’échelle du système en envoyant les commandes suivantes.

apache2ctl -t
systemctl restart apache2.service mariadb.service
systemctl enable apache2.service mariadb.service

Enfin, vérifie si les services Apache et MariaDB ont ouvert des ports en état d’écoute en lançant la commande netstat et en filtrant la sortie à l’aide d’egrep. À présent, le serveur Web Apache devrait avoir les ports 80 et 443 (correspondant aux protocoles HTTP et https) généralement exposés et MariaDB ne devrait être lié qu’au socket localhost:3306. Utilise l’indicateur -n contre la commande netstat pour ne pas afficher les noms des services.

netstat -tlp| egrep 'http|mysql'

Vérifie si MariaDB est démarrée

Pour vérifier que ton serveur Web est accessible depuis Internet via les protocoles HTTP et HTTPS, ouvre un navigateur et navigue vers ton nom de domaine. En naviguant via le protocole HTTPS, une erreur de certificat s’affichera dans le navigateur. Cela est dû au fait que le fichier de configuration TLS par défaut d’Apache est configuré pour utiliser des certificats auto-signés. Tu dois accepter l’erreur TLS et continuer à naviguer vers la page Web par défaut comme illustré ci-dessous.

http://www.yourdomain.com

Apache2 test page

https://www.yourdomain.com

Page de test d'Apache 2 en mode SSL

Si tu ne peux pas accéder à la page Web par défaut de ton domaine depuis Internet, tu dois d’abord vérifier si certaines règles du pare-feu du système bloquent les demandes ou si les ports appropriés du routeur sont transférés vers ton réseau local interne si le serveur se trouve derrière un réseau NAT. Tu peux aussi vérifier les enregistrements DNS dans le panneau de ton registraire de domaine et t’assurer qu’ils pointent vers ton IP WAN et que les enregistrements ont fini de se propager sur Internet.

Afin de tester si PHP fonctionne comme prévu du côté du serveur, crée un fichier PHP php dans le chemin système /var/www/html/, qui est le chemin par défaut de la racine du document Web du serveur Web Apache, en émettant la commande ci-dessous et en naviguant vers l’URI suivant depuis le navigateur pour obtenir le résultat : http://www.yourdomain.com/info.php

echo '<?php phpinfo(); ?>' > /var/www/html/info.php

Page de test des infos PHP

Installe WordPress 5.0

Maintenant que la pile LAMP est entièrement configurée, l’installation du CMS WordPress est relativement simple. Tout d’abord, connecte-toi à la base de données MariaDB et crée une base de données d’installation pour WordPress et un utilisateur avec le mot de passe approprié pour installer et gérer WordPress CMS, en exécutant les commandes ci-dessous. N’hésite pas à remplacer le nom et les informations d’identification de la base de données pour qu’ils correspondent à tes propres besoins.

mysql -u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress-user'@'localhost' IDENTIFIED BY 'wordpress-pass';
FLUSH PRIVILEGES;

Crée la base de données MySQL de WordPress et l'utilisateur de la base de données

Ensuite, télécharge la dernière version de WordPress sur le site officiel à l’aide de l’utilitaire wget et extrais l’archive compressée avec l’utilitaire tar. Copie les fichiers d’installation dans le chemin de la racine du document du serveur Web Apache en exécutant les commandes ci-dessous. Veille aussi à supprimer la page Web index.html par défaut.

cd /tmp
wget http://wordpress.org/latest.tar.gz
tar xfz latest.tar.gz
cp -rf wordpress/* /var/www/html/
rm /var/www/html/index.html

Télécharge et décompresse WordPress sur ton serveur

Modifie les autorisations du chemin racine du document Web d’Apache comme décrit ci-dessous afin d’accorder au groupe www-data du serveur Web des droits d’écriture complets sur le répertoire d’installation. Cette configuration permettra au serveur Web Apache de créer ou de modifier des fichiers et des répertoires sous ce chemin système spécifique. Les plus importants sont le répertoire uploads et le fichier .htaccess qui peuvent être utilisés pour contrôler et étendre les fonctionnalités d’Apache.

chmod -R 775 /var/www/html/
chgrp -R www-data /var/www/html/
ls -al /var/www/html

Fichiers WordPress

Maintenant que tout est en place, commençons à installer WordPress. Le processus d’installation sera effectué depuis le navigateur. Ouvre un navigateur et visite ton domaine via le protocole HTTPS. Sur le premier écran de l’installation, clique sur le bouton Let’s go pour commencer l’installation.

Installation web de WordPress

Dans l’écran d’installation suivant, ajoute le nom de la base de données, les informations d’accès à la base de données et l’hôte de la base de données que tu as créé plus tôt pour l’installation de WordPress et clique sur le bouton Envoyer pour continuer. La configuration de la base de données sera enregistrée dans /var/www/html/wp-config.php Tu peux modifier manuellement le fichier à une date ultérieure pour des besoins particuliers de WordPress.

Paramètres de la base de données

Sur l’écran suivant, clique sur le bouton Exécuter l’installation et renseigne le titre de ton site Web, les informations d’identification de l’administrateur du site et l’adresse e-mail. Un mot de passe fort devrait être automatiquement généré par les scripts d’installation. Tu peux choisir d’enregistrer ce mot de passe ou de fournir ton propre mot de passe fort. Lorsque tu as terminé, clique sur le bouton Installer WordPress pour terminer le processus d’installation.

Exécute l'installation

Informations sur le site WordPress

Enfin, une fois l’installation terminée avec succès, connecte-toi au tableau de bord WordPress avec les informations d’identification créées pendant le processus d’installation et commence à gérer ton propre site Web.

Succès de l'installation de WordPress

Connexion admin de WordPress

Connecte-toi au backend de WordPress.

Backend de WordPress

Tableau de bord d’administration de WordPress.

Modification d’un article dans le nouvel éditeur Gutenberg de WordPress.

Front-end de WordPress 5.0 avec le nouveau thème TwentyNineteen.

Félicitations ! Tu as réussi à installer la dernière version du CMS WordPress sur le paquet de logiciels LAMP dans Debian 9, nom de code Stretch.

Téléchargement de l’image de la machine virtuelle de ce tutoriel

Ce tutoriel est disponible sous forme d’image de machine virtuelle prête à l’emploi au format ovf/ova qui est compatible avec VMWare et Virtualbox. L’image de la machine virtuelle utilise les identifiants de connexion suivants :

Connexion SSH / Shell

Nom d’utilisateur : administrator
Mot de passe : howtoforge

Cet utilisateur a les droits su.

Nom d’utilisateur : root
Mot de passe : howtoforge

Connexion WordPress

Nom d’utilisateur : admin
Mot de passe : howtoforge

Connexion MySQL

Nom d’utilisateur : root
Mot de passe : howtoforge

L’IP de la VM est 192.168.1.100, elle peut être modifiée dans le fichier /etc/network/interfaces. Change tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.

Vous aimerez aussi...