Aller au contenu

8. Installation de la pile LEMP (Linux, Nginx, MariaDB, PHP)

La pile LEMP est un ensemble de logiciels qui fonctionnent ensemble pour héberger des sites web dynamiques et des applications web. LEMP signifie :

  • Linux (Système d’exploitation)
  • Engine-x (Serveur web Nginx, prononcé “Engine-X”)
  • MariaDB (Serveur de base de données)
  • PHP (Langage de programmation)

Nginx est un serveur web haute performance et proxy inverse qui servira le contenu de votre site web aux visiteurs.

Commencez par ajouter le dépôt pour la dernière version de Nginx :

# Ajouter le dépôt Nginx
sudo add-apt-repository ppa:ondrej/nginx
# Mettre à jour les listes de paquets
sudo apt update

8.2.2. Installation de Nginx et des modules utiles

Section intitulée « 8.2.2. Installation de Nginx et des modules utiles »

Installez Nginx avec quelques modules utiles :

# Installer Nginx avec des modules supplémentaires
sudo apt install nginx libnginx-mod-http-cache-purge libnginx-mod-http-headers-more-filter libnginx-mod-http-brotli-filter libnginx-mod-http-brotli-static

Ces modules fournissent :

  • cache-purge : Permet de purger le contenu du cache de Nginx
  • headers-more-filter : Offre plus de contrôle sur les en-têtes HTTP
  • brotli-filter/static : Active la compression Brotli pour de meilleures performances que gzip

Si Nginx ne parvient pas à démarrer avec une erreur liée à IPv6 :

# Vérifier l'état de Nginx
sudo systemctl status nginx

Vous pourriez voir une erreur comme :

nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)

Cela se produit lorsqu’IPv6 est désactivé mais que Nginx est configuré pour écouter sur des adresses IPv6. Pour corriger cela :

# Modifier la configuration du site par défaut
sudo vim /etc/nginx/sites-available/default

Trouvez et commentez la directive d’écoute IPv6 :

# Modifier cette ligne :
listen [::]:80 default_server;
# En ceci :
#listen [::]:80 default_server;

Après avoir effectué les modifications, testez la configuration et démarrez Nginx :

# Tester la configuration de Nginx
sudo nginx -t
# Démarrer Nginx
sudo systemctl start nginx
# Vérifier l'état de Nginx
sudo systemctl status nginx
# S'assurer que Nginx démarre au boot
sudo systemctl is-enabled nginx

Vérifiez que Nginx sert correctement le contenu :

# Tester avec curl (remplacez par l'adresse IP de votre serveur)
curl -i http://your_server_ip
# Afficher le contenu de la page par défaut
cat /var/www/html/index.nginx-debian.html

Vérifiez la version de Nginx installée :

# Vérifier la version de Nginx
nginx -v

MariaDB est un serveur de base de données robuste et open source qui stockera vos données WordPress.

# Installer le serveur MariaDB
sudo apt install mariadb-server

8.3.2. Vérification de l’installation de MariaDB

Section intitulée « 8.3.2. Vérification de l’installation de MariaDB »
# Vérifier l'état de MariaDB
sudo systemctl status mariadb
# S'assurer que MariaDB démarre au boot
sudo systemctl is-enabled mariadb

Exécutez le script de sécurité pour définir un mot de passe root et supprimer les paramètres par défaut non sécurisés :

# Exécuter le script d'installation sécurisée de MariaDB
sudo mysql_secure_installation

Suivez les invites pour :

  1. Définir un mot de passe root
  2. Supprimer les utilisateurs anonymes
  3. Interdire la connexion root à distance
  4. Supprimer la base de données de test
  5. Recharger les tables de privilèges

PHP est le langage de programmation sur lequel WordPress est construit. Nous allons installer PHP-FPM (FastCGI Process Manager) pour de meilleures performances avec Nginx.

# Ajouter le dépôt PHP
sudo add-apt-repository ppa:ondrej/php
# Mettre à jour les listes de paquets
sudo apt update

8.4.2. Installation de PHP et des extensions requises

Section intitulée « 8.4.2. Installation de PHP et des extensions requises »

Installez PHP 8.3 avec les extensions nécessaires pour WordPress :

# Installer PHP 8.3 avec les extensions
sudo apt install php8.3-fpm php8.3-gd php8.3-mbstring php8.3-mysql php8.3-xml php8.3-xmlrpc php8.3-opcache php8.3-cli php8.3-zip php8.3-soap php8.3-intl php8.3-bcmath php8.3-curl php8.3-imagick php8.3-ssh2

Ces extensions fournissent :

  • fpm : FastCGI Process Manager pour l’intégration avec Nginx
  • gd : Bibliothèque de traitement d’images
  • mbstring : Gestion des chaînes multi-octets
  • mysql : Connectivité avec la base de données MariaDB/MySQL
  • xml/xmlrpc : Capacités de traitement XML
  • opcache : Améliore les performances de PHP en mettant en cache le bytecode précompilé des scripts
  • Et d’autres extensions essentielles pour le fonctionnement de WordPress
# Vérifier l'état de PHP-FPM
sudo systemctl status php8.3-fpm
# S'assurer que PHP-FPM démarre au boot
sudo systemctl is-enabled php8.3-fpm
# Vérifier la version de PHP
php -v

8.5. Configuration de Nginx pour fonctionner avec PHP

Section intitulée « 8.5. Configuration de Nginx pour fonctionner avec PHP »

Pour faire fonctionner Nginx avec PHP, vous devez le configurer pour transmettre les requêtes PHP à PHP-FPM :

# Modifier la configuration du site par défaut de Nginx
sudo vim /etc/nginx/sites-available/default

Trouvez la section pour le traitement PHP (généralement commentée) et mettez-la à jour :

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

Testez et rechargez Nginx :

# Tester la configuration
sudo nginx -t
# Recharger Nginx
sudo systemctl reload nginx

Créez un fichier PHP de test pour vérifier que PHP fonctionne avec Nginx :

# Créer un fichier d'information PHP
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Visitez http://your_server_ip/info.php dans votre navigateur. Vous devriez voir la page d’information PHP.

Votre pile LEMP est maintenant installée et configurée, fournissant une base solide pour l’installation de WordPress dans les sections suivantes.