Installer WordPress sur un serveur Ubuntu avec Nginx, PHP 8.2 et MariaDB

Dans cet article, nous allons apprendre à installer WordPress sur un serveur Ubuntu, accompagné de Nginx, PHP 8.2 et MariaDB. Si vous avez déjà rêvé de lancer votre propre site web, c’est l’article qu’il vous faut. Vous allez voir, ce n’est pas si compliqué et je vais vous accompagner à chaque étape. Nous allons installer ce qu’on appelle une stack LEMP qui est robuste est sur laquelle vous allez facilement trouver de l’aide en cas de problème. N’oubliez pas que vous pouvez profiter d’un serveur gratuit chez Digital Ocean pour lancer votre site web sous WordPress, tout est expliqué ici !

Installation de NGINX et PHP 8.2

Comme d’habitude, on commence par mettre à jour le référentiel avec ces deux commandes. De toute façon, c’est quelque chose qui est immuable avant de faire des apt install. Lancez donc ces deux commandes sur votre nouveau serveur dédié ou VPS tout frais pour partir sur de bonnes bases :

sudo apt update
sudo apt upgrade

Maintenant, on va installer quelques paquets qui de toute façon vous seront utiles pour la suite. Voici quelques explications pour bien comprendre ce que vous allez installer :

  • lsb-release : ce paquet fournit des informations sur la distribution Linux en cours d’exécution. Il est souvent utilisé par des scripts et des applications pour déterminer la distribution et la version du système d’exploitation.
  • ca-certificates : il contient des fichiers de certificats de confiance, qui sont utilisés par le système pour établir des connexions sécurisées via HTTPS, SSL/TLS, et d’autres protocoles de sécurité. Il est essentiel pour garantir la sécurité des connexions Internet.
  • apt-transport-https : permet à APT (Advanced Package Tool) d’utiliser le protocole HTTPS pour récupérer des paquets depuis les dépôts. Il est nécessaire si vous souhaitez installer des paquets à partir de dépôts sécurisés via HTTPS.
  • software-properties-common : fournit des outils en ligne de commande pour gérer les dépôts de logiciels (repositories) sur le système. Il est utilisé pour ajouter, supprimer ou modifier des dépôts de logiciels tiers et facilite la gestion des sources de paquets.

Lancez la commande suivante pour installer ces paquets importants pour la suite et éviter les problèmes :

sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y

Pour bien vous expliquer, on va ajouter un PPA, car il va nous permettre d’avoir une version de PHP parfaitement à jour sur notre distribution Ubuntu / Debian. Le dépôt PPA ondrej/php est un dépôt personnel (Personal Package Archive) géré par un utilisateur nommé Ondřej Surý. Cet utilisateur est bien connu dans la communauté Ubuntu pour maintenir des dépôts PPA contenant des versions plus récentes de PHP que celles disponibles dans les dépôts officiels d’Ubuntu.

Le dépôt ondrej/php est souvent utilisé par les développeurs web et les administrateurs système qui ont besoin de disposer de versions plus récentes de PHP ou de modules PHP spécifiques pour leurs projets. Il peut contenir des packages PHP pour installer différentes versions de PHP ainsi que des modules et extensions PHP populaires correspondants. C’est ce que nous allons utiliser ici, pour l’ajouter tapez la commande suivante :

sudo add-apt-repository ppa:ondrej/php

En exécutant cette commande, vous installez PHP 8.2 et un ensemble de modules couramment utilisés qui étendent les fonctionnalités de PHP pour la gestion des bases de données, la manipulation de données XML, le traitement d’images, et bien plus encore, en fonction de vos besoins pour le développement web ou d’autres applications qui utilisent le PHP. Comme ça, on est tranquille si vous avez d’autres projets avec du PHP par la suite.

PHP 8.3 est maintenant disponible, regardez ce tutoriel pour installer cette version !

L’option -y à la fin de la commande, permet de répondre automatiquement « oui » à toutes les questions de confirmation qui pourraient être posées pendant le processus d’installation. Tapez la commande suivante pour installer le lot en PHP 8.2 :

sudo apt install php8.2-common php8.2-fpm php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-mbstring php8.2-opcache php8.2-zip -y

Pour terminer cette première partie, on installe le serveur web open source NGINX que je préfère largement à Apache HTTP Server. C’est d’ailleurs ce que l’on va utiliser dans ce tutoriel et on installe NGINX avec la commande suivante :

sudo apt install nginx

Configuration de la base de données MariaDB pour WordPress

Maintenant que les fondations sont posées pour faire tourner notre WordPress sur un VPS, on peut à présent passer sur la partie base de données. Il faut bien enregistrer les données de notre CMS WordPress quelque part et ce sera dans une base de données tout ce qu’il y a de plus classique. Mon choix se porte évidemment sur MariaDB qui est un fork de MySQL. Depuis ce logiciel, explore sa propre voie et MariaDB gagne en popularité. Il est très suivi et fait parfaitement le boulot, c’est donc le système de gestion de bases de données que j’ai choisi d’utiliser pour ce tutoriel et c’est de toute façon le cas pour la plupart de mes projets.

Pour installer MariaDB, rien de plus simple, tapez la commande suivante et suivez les instructions :

sudo apt install mariadb-server

Normalement, tout devrait se passer sans soucis et vous pouvez vous connecter à mysql avec la commande suivante :

sudo mysql -u root

Il est dans de créer notre première base de données avec la commande suivante. Donnez un nom cohérent à votre base de données, car vous pourriez en avoir d’autres à l’avenir sur le même serveur :

CREATE DATABASE nomdevotrebase;

Il est temps de passer aux choses sérieuses et sûrement la partie la plus importante concernant le réglage de notre MariaDB. Il faut en effet créer un utilisateur local et lui donner les droits sur la base de données que l’on vient tout juste de créer.

Dans MariaDB, pour créer un utilisateur avec un mot de passe et lui donner les droits sur une base de données, lancez la commande suivante :

GRANT ALL ON nomdevotrebase.* TO 'nomuser'@'localhost' IDENTIFIED BY 'passwordsecurise';

Il faudra bien évidemment changer ce que j’ai mis pour l’exemple par vos valeurs. Ensuite, il suffit de lancer la commande suivante qui va rafraîchir les droits dans MariaDB :

FLUSH PRIVILEGES;

On peut enfin sortir proprement de la console mysql de MariaDB avec la commande suivante :

EXIT;

La partie sur la création et la gestion de notre base de données pour accueilir WordPress est maintenant terminée et on peut passer à l’installation sur notre serveur VPS sous Ubuntu / Debian.

Téléchargement de WordPress sur le serveur

On peut maintenant passer sur la récupération et le déploiement de WordPress directement sur votre serveur VPS. Pour commencer, allez dans le dossier le plus couramment utilisé pour tout ce qui touche aux sites web avec NGNIX. Vous pouvez bien sûr aller ranger votre site web ailleurs, mais dites vous que c’est la norme qui fait consensus et qui est admise par tout le monde. Rendez-vous dans le dossier www avec la commande suivante sous Linux :

cd /var/www/

Récupérez la dernière version de WordPress à la racine de /var/www/ avec un wget via la commande :

wget https://wordpress.org/latest.zip

Créez un nouveau dossier qui va accueil les fichiers de votre site sous WordPress :

mkdir monsupersite

Vous pouvez maintenant extraire le contenu de l’archive zip directement dans le dossier avec la commande suivante qui précise la destination à unzip :

unzip latest.zip -d monsupersite

Si vous obtenez une erreur : Command ‘unzip’ not found, c’est que l’outil unzip n’est pas présent sur votre distribution Linux, vous pouvez l’installer très rapidement avec l’apt qui va bien :

sudo apt install unzip

On peut déjà appliquer le bon utilisateur de façon récursive pour éviter tout problème à l’avenir, ici, je choisis logiquement l’utilisateur www-data. Pour changer le propriétaire des fichiers faites la commande suivante sur le dossier de votre site de manière récursive :

sudo chown -R www-data:www-data /var/www/monsupersite

Enfin avant de passer à la suite et pour des questions de sécurité, n’oubliez pas de donner les bons droits sur les fichiers et dossiers de votre WordPress avec ce tutoriel. Il a déjà aidé de nombreuses personnes et quand j’ai un trou de mémoire, je me base dessus pour ne rien oublier !

Configuration de NGINX pour WordPress

On va commencer par une configuration très simple pour vérifier que tout va bien, mais attention, n’allez pas trop vite dans cette partie. Suivez bien les différentes étapes, c’est en tout cas ma logique et vous êtes bien sûr libre de sauter les étapes, mais il faudra refaire un peu de configuration dans ce cas. Si vous suivez ma façon de procéder, tout doit très bien se passer et vous n’aurez pas besoin de retoucher quoi que ce soit.

Rendez-vous dans le dossier qui gère la configuration de vos sites web sous NGINX avec la commande suivante :

cd /etc/nginx/sites-available/

Puis on va créer un fichier par défaut très basique, mais qui a le mérite de fonctionner avec le début du tutoriel que je vous ai donné. J’ai fait quelques modifications très simples, mais ça devrait normalement marcher chez vous. Une fois dans le dossier /etc/nginx/sites-available/ créez le fichier de configuration pour votre site avec un rapide :

touch monsupersite

Ensuite, éditez ce fichier, dans mon cas, je le fais avec vi, mais vous pouvez utiliser l’éditeur de votre choix :

vi monsupersite

Puis entrez cette configuration par défaut concoctée par mes soins à l’intérieur de votre fichier qui est lui même je le rappelle dans sites-available :

server {
    listen 80;
    listen [::]:80;

    root /var/www/monsupersite/wordpress;
    index index.php index.html;

    server_name monsupersite.zt;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        include fastcgi_params;
    }
}

Il faudra bien évidemment remplacer le chemin : /var/www/monsupersite/wordpress par le nom du dossier que vous avez renseigné au-dessus de ce tutoriel et modifier monsupersite.zt par votre propre nom de domaine. N’oubliez pas que vos enregistrements DNS doivent bien pointer avec un record A vers l’adresse IP de votre serveur dans le cas le plus simple.

On peut déjà créer tout de suite le lien symbolique qui restera actif même si on modifie cette configuration :

ln -s /etc/nginx/sites-available/monsupersite /etc/nginx/sites-enabled/

Puis on redémarre NGNIX pour prendre en compte toutes les modifications que l’on a faite avec la classique commande :

systemctl reload nginx

Testez alors votre configuration NGINX avec cette commande :

sudo nginx -t

Vous devriez alors normalement obtenir le message suivant qui vous indique que tout va bien :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Dans le cas où je ferais par exemple exprès d’introduire une erreur, j’obtiens ce message :

nginx: [emerg] unexpected "}" in /etc/nginx/sites-enabled/monsupersite.zt:18
nginx: configuration file /etc/nginx/nginx.conf test failed

Vérifiez donc bien votre configuration pour éviter les erreurs de syntaxe. Si vous avez un problème dans votre configuration NGINX, il est assez malin pour vous dire la ligne ou ça commence à coincer ce qui est plutôt pratique pour dépanner.

Avant de terminer sur la partie serveur et de tenter de finaliser l’installation en ligne via un navigateur, je vous conseille de regarder ce tutoriel pour installer le HTTPS avec Let’s Encrypt sur votre serveur pour le nom de domaine que vous venez de confirmer avec NGINX. Sinon si vous faites la configuration finale de votre WordPress en ligne avant de faire ce tutoriel sur Let’s Encrypt, il prendra les valeurs de référence sans le HTTPS. Si c’est le cas, il faudra alors ensuite changer à nouveau les liens de votre WordPress pour le forcer en HTTPS en éditant la base de données.

Fin de l’installation WordPress directement sur un navigateur

Une fois, ceci fait, Let’s Encrypt va automatiquement modifier la configuration NGNIX de votre site que l’on a vu plus haut dans ce tutoriel, vous n’avez pas besoin de modifier quoi que ce soit. À ce stade, vous pouvez même couper la connexion SSH vers votre serveur VPS, car c’est terminé pour le moment. Vous pouvez alors appeler votre nom de domaine dans un navigateur, dans mon cas, c’était monsupersite.zt qui devrait vous afficher la configuration finale de WordPress. Vous allez choisir la langue par défaut puis arriver sur cette page /wp-admin/setup-config.php :

Comme le message l’indique, on aurait pu directement remplir ces informations directement en copiant le fichier wp-config-sample.php vers wp-config.php et en remplissant directement les informations suivantes dedans :

define( 'DB_NAME', 'nomdevotrebase' );
define( 'DB_USER', 'nomuser' );
define( 'DB_PASSWORD', 'passwordsecurise' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8' );
define( 'DB_COLLATE', '' );

Sinon poursuivez l’installation en ligne qui vous demandera exactement les mêmes informations. Enfin, vous pouvez créer le premier compte administrateur de votre WordPress. Il ne vous reste plus qu’à vous connecter avec et vous avez réussi à installer votre premier WordPress sur un serveur, bravo !

N’oubliez pas de suivre les différents liens que j’ai proposé, car ils sont importants pour le bon déroulement de l’installation de votre WordPress sur un serveur et sinon ça aurait été trop long ici. Vous pouvez aussi vous faire aider pour la création de site WordPress. Une fois votre WordPress fraîchement installé et en ligne, pour des questions de sécurités, je vous recommande aussi d’installer directement et sans attendre l’extension Wordfence qui va s’occuper de surveiller votre WordPress, car les premières attaques ne tarderont pas à arriver. Si vous remarquez une erreur ou un oubli dans ce tutoriel que j’ai essayé de rentre le plus clair et le pratique possible pour tout le monde, n’hésitez pas à me le dire dans les commentaires.

Laisser un commentaire