Serveur Web · 16 min read · Oct 13, 2025
Comment installer Nginx avec PHP et MariaDB (pile LEMP) avec Opcache, Redis et Let's Encrypt sur Ubuntu

L’acronyme “LEMP” désigne un groupe de logiciels qui sont généralement installés ensemble pour permettre à un serveur d’héberger des sites Web dynamiques et des applications Web. Ce terme est en fait un acronyme représentant quatre composants clés :
- L inux : Le système d’exploitation. Linux est un système d’exploitation open-source populaire qui sert de fondation au serveur.
- E ngine-X (prononcé “nginx”) : Le serveur Web. Nginx est un serveur Web haute performance connu pour sa stabilité, son riche ensemble de fonctionnalités, sa configuration simple et sa faible consommation de ressources.
- M ySQL ou MariaDB : Le système de base de données. MySQL est un système de gestion de base de données relationnelle largement utilisé qui stocke et gère les données pour le site Web ou l’application. Notez que MySQL est parfois remplacé par MariaDB, un fork amélioré, entièrement open-source et développé par la communauté de MySQL.
- P HP : Le langage de programmation. PHP est un langage de script côté serveur conçu pour le développement Web, mais également utilisé comme langage de programmation général.
La pile LEMP est un choix populaire pour l’hébergement de sites Web nécessitant une base de données et un traitement côté serveur, tels que les sites WordPress, les plateformes de commerce électronique et d’autres applications Web dynamiques. Elle est comparable à la pile LAMP, où Apache (représenté par le “A” dans LAMP) est utilisé à la place de Nginx.
Dans ce guide, vous installerez une pile LEMP sur un serveur basé sur Ubuntu 20.04. Nous installerons également phpMyAdmin, Redis, Opcache et Let’s Encrypt SSL.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un utilisateur sudo non-root.
- Assurez-vous que tout est à jour.
shell $ sudo apt update $ sudo apt upgrade - Quelques paquets dont votre système a besoin.
shell $ sudo apt install wget curl nano -yCertains de ces paquets peuvent déjà être installés sur votre système.
Configurer le pare-feu
La première étape consiste à configurer le pare-feu. Ubuntu est livré par défaut avec ufw (Uncomplicated Firewall).
Vérifiez si le pare-feu est en cours d’exécution.
$ sudo ufw status
Vous devriez obtenir la sortie suivante.
Status: inactive
Autorisez le port SSH afin que le pare-feu ne rompe pas la connexion actuelle lors de son activation.
$ sudo ufw allow OpenSSH
Autorisez également les ports HTTP et HTTPS.
$ sudo ufw allow 80
$ sudo ufw allow 443
Activez le pare-feu
$ sudo ufw enable
La commande peut perturber les connexions ssh existantes. Poursuivre l'opération (y|n)? y
Le pare-feu est actif et activé au démarrage du système
Vérifiez à nouveau l’état du pare-feu.
$ sudo ufw status
Vous devriez voir une sortie similaire.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Installer PHP
Ubuntu 20.04 est livré par défaut avec PHP 7.4, mais pour avoir un dépôt PHP mis à jour, nous allons ajouter le dépôt PHP d’Ondrej.
Installez le dépôt PHP d’Ondrej.
$ sudo add-apt-repository ppa:ondrej/php
Installez PHP 7.4 ainsi que quelques paquets supplémentaires.
$ sudo apt install php-cli php-fpm php-mysql -y
Vérifiez si PHP fonctionne correctement.
$ php --version
Vous devriez voir une sortie similaire.
PHP 7.4.5 (cli) (built: Apr 28 2020 14:49:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies
Installer MariaDB
MariaDB est un remplacement direct de MySQL, ce qui signifie que les commandes pour exécuter et faire fonctionner MariaDB sont les mêmes que celles de MySQL.
Ubuntu 20.04 est livré par défaut avec MariaDB 10.3 qui est un peu obsolète. Pour obtenir la dernière version stable de MariaDB, nous allons installer son dépôt officiel.
Ajoutez le dépôt officiel de MariaDB.
$ sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
$ sudo add-apt-repository 'deb [arch=amd64] http://mirror.lstn.net/mariadb/repo/10.4/ubuntu focal main'
Pour installer MariaDB, exécutez la commande suivante.
$ sudo apt install mariadb-server -y
Vérifiez si MariaDB est installé correctement.
$ mysql --version
Vous devriez voir la sortie suivante.
mysql Ver 15.1 Distrib 10.4.13-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Activez le service MariaDB.
$ sudo systemctl enable mariadb
Exécutez la commande suivante pour effectuer la configuration par défaut, comme donner un mot de passe root, supprimer les utilisateurs anonymes, interdire la connexion root à distance et supprimer les tables de test.
$ sudo mysql_secure_installation
Avec MariaDB 10.4, vous serez maintenant invité à choisir entre utiliser le mot de passe root ou le plugin unix_socket. Le plugin unix_socket vous permet de vous connecter à MariaDB avec vos identifiants d’utilisateur Linux. Il est considéré comme plus sécurisé, bien que vous ayez besoin d’un nom d’utilisateur/mot de passe traditionnel pour utiliser des applications tierces comme phpMyAdmin. Nous allons nous en tenir à l’utilisation du plugin unix_socket pour ce tutoriel. Vous pouvez toujours utiliser phpMyAdmin via n’importe quel utilisateur que vous créez pour vos bases de données.
Appuyer sur Entrée choisit l’option par défaut (celle qui est en majuscule, Y dans ce cas).
NOTE : IL EST RECOMMANDÉ D'EXÉCUTER TOUTES LES PARTIES DE CE SCRIPT POUR TOUS LES SERVEURS MariaDB EN UTILISATION EN PRODUCTION ! VEUILLEZ LIRE CHAQUE ÉTAPE ATTENTIVEMENT !
Pour se connecter à MariaDB et le sécuriser, nous aurons besoin du mot de passe actuel pour l'utilisateur root. Si vous venez d'installer MariaDB et que vous n'avez pas encore défini le mot de passe root, vous devez simplement appuyer sur Entrée ici.
Entrez le mot de passe actuel pour root (appuyez sur Entrée pour aucun) : [APPUYEZ SUR ENTRÉE]
OK, mot de passe utilisé avec succès, passage à l'étape suivante...
Définir le mot de passe root ou utiliser unix_socket garantit que personne ne peut se connecter à l'utilisateur root de MariaDB sans l'autorisation appropriée.
Vous avez déjà protégé votre compte root, vous pouvez donc répondre en toute sécurité 'n'.
Passer à l'authentification unix_socket [Y/n] [APPUYEZ SUR ENTRÉE]
Activé avec succès !
Rechargement des tables de privilèges..
... Succès !
Vous avez déjà protégé votre compte root, vous pouvez donc répondre en toute sécurité 'n'.
Changer le mot de passe root ? [Y/n] [RÉPONDRE n]
... saut.
Par défaut, une installation de MariaDB a un utilisateur anonyme, permettant à quiconque de se connecter à MariaDB sans avoir à avoir un compte utilisateur créé pour eux. Ceci est destiné uniquement à des fins de test, et pour rendre l'installation un peu plus fluide. Vous devriez les supprimer avant de passer à un environnement de production.
Supprimer les utilisateurs anonymes ? [Y/n] [APPUYEZ SUR ENTRÉE]
... Succès !
Normalement, root ne devrait être autorisé à se connecter que depuis 'localhost'. Cela garantit que quelqu'un ne peut pas deviner le mot de passe root depuis le réseau.
Interdire la connexion root à distance ? [Y/n] [APPUYEZ SUR ENTRÉE]
... Succès !
Par défaut, MariaDB est livré avec une base de données nommée 'test' à laquelle quiconque peut accéder. Ceci est également destiné uniquement à des fins de test, et doit être supprimé avant de passer à un environnement de production.
Supprimer la base de données de test et l'accès à celle-ci ? [Y/n] [APPUYEZ SUR ENTRÉE]
- Suppression de la base de données de test...
... Succès !
- Suppression des privilèges sur la base de données de test...
... Succès !
Le rechargement des tables de privilèges garantira que tous les changements effectués jusqu'à présent prendront effet immédiatement.
Recharger les tables de privilèges maintenant ? [Y/n] [APPUYEZ SUR ENTRÉE]
... Succès !
Nettoyage...
Tout est fait ! Si vous avez terminé toutes les étapes ci-dessus, votre installation de MariaDB devrait maintenant être sécurisée.
Merci d'utiliser MariaDB !
C’est tout. La prochaine fois que vous voudrez vous connecter à MySQL, utilisez la commande suivante
$ sudo mysql
Entrez votre mot de passe root lorsqu’on vous le demande.
Installer Redis
Utilisez la commande suivante pour installer Redis et l’extension PHP Redis correspondante.
$ sudo apt install redis php-redis
Configurer le serveur Redis
Effectuons quelques configurations de base sur le serveur Redis.
Ouvrez le fichier /etc/redis/redis.conf avec l’éditeur Nano.
$ sudo nano /etc/redis/redis.conf
À l’intérieur du fichier, localisez la directive supervised. Cette directive vous permet de déclarer un système d’init pour gérer Redis en tant que service. Elle est définie sur no par défaut. Puisque nous utilisons Ubuntu qui utilise le système d’init systemd, changez sa valeur de no à systemd comme suit.
supervised systemd
Si vous souhaitez que des clients distants se connectent à votre instance Redis, trouvez la ligne bind 127.0.0.1 et changez-la comme suit.
bind 0.0.0.0
Vous pouvez également changer le port par défaut sur lequel Redis écoute de 6379 à une valeur de votre choix.
port 3458
Pour configurer Redis en tant que serveur de cache, définissez les valeurs suivantes comme indiqué.
maxmemory 256mb
maxmemory-policy allkeys-lru
Cela indique à Redis de supprimer toute clé en utilisant l’algorithme LRU lorsque la mémoire maximale de 256 Mo est atteinte. Vous pouvez définir la valeur de mémoire selon vos besoins et le serveur que vous utilisez.
Vous pouvez définir un mot de passe afin que tout client ayant besoin de Redis devra d’abord s’authentifier. Pour ce faire, définissez un mot de passe en utilisant la directive suivante.
requirepass
Vous pouvez trouver d’autres directives à changer dans le fichier de configuration. Une fois que vous avez terminé, appuyez sur Ctrl + X et entrez Y lorsqu’on vous le demande pour enregistrer le fichier.
Redémarrez le serveur Redis pour appliquer les modifications.
$ sudo systemctl restart redis
Nous devrons également ajouter la règle dans notre pare-feu si vous souhaitez que des clients distants s’y connectent. Sinon, vous pouvez ignorer cette étape.
$ sudo ufw allow 6379/tcp
Vous devrez changer la valeur de la commande ci-dessus pour correspondre au port que vous avez choisi dans le fichier de configuration ci-dessus.
Installer Nginx
Ubuntu 20.04 est livré par défaut avec la dernière version principale de Nginx (1.17.10). Nous allons cependant passer à l’utilisation du dépôt stable officiel de Nginx.
Installez d’abord quelques prérequis.
$ sudo apt install curl gnupg2 ca-certificates lsb-release
Certains d’entre eux sont déjà installés sur votre système.
Ajoutez le dépôt de Nginx.
$ echo "deb [arch=amd64] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
$ curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Installez Nginx.
$ sudo apt update
$ sudo apt install nginx -y
Vérifiez s’il fonctionne correctement.
$ nginx -v
Vous devriez voir la sortie suivante en fonction de la version de Nginx que vous avez choisi d’installer.
nginx version: nginx/1.18.0
Démarrez et activez Nginx.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Ouvrez l’adresse IP de votre serveur dans un navigateur pour voir la page suivante. Cela signifie que Nginx fonctionne correctement.

Configurer Nginx
Configurez les répertoires où les blocs de serveur seront situés.
$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled
Créez le répertoire où votre site sera hébergé.
$ sudo mkdir /var/www/example.com/html -p
En utilisant la directive -p, vous créez des répertoires parents qui n’existaient pas auparavant.
Exécutez la commande suivante pour ajouter un fichier de configuration pour votre site.
$ sudo nano /etc/nginx/sites-available/example.com.conf
Collez le code suivant dans l’éditeur.
server {
listen *:80;
server_name example.com;
root /var/www/example.com/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
Appuyez sur Ctrl + X pour fermer l’éditeur et appuyez sur Y lorsqu’on vous le demande pour enregistrer le fichier.
Ce fichier suppose que nous allons héberger example.com dans le répertoire /var/www/html. Si vous n’allez pas utiliser de domaine et que vous configurez votre serveur pour être accessible uniquement via l’adresse IP/localhost, vous devrez supprimer les paramètres de bloc de serveur correspondants du fichier nginx.conf, sinon cela perturbera le bloc de serveur que vous allez créer.
Activez ce fichier de configuration en le liant au répertoire sites-enabled.
$ sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Ouvrez le fichier /etc/nginx/nginx.conf pour l’éditer.
$ sudo nano /etc/nginx/nginx.conf
Collez les lignes suivantes après la ligne include /etc/nginx/conf.d/*.conf
include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;
types_hash_max_size 4096;
Appuyez sur Ctrl + X pour fermer l’éditeur et appuyez sur Y lorsqu’on vous le demande pour enregistrer le fichier. Testez la configuration de Nginx.
$ sudo nginx -t
Vous devriez voir la sortie suivante indiquant que votre configuration est correcte.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Rechargez le service Nginx.
$ sudo systemctl reload nginx
Configurer PHP-FPM
Ouvrez le fichier /etc/php-fpm.d/www.conf.
$ sudo nano /etc/php/7.4/fpm/pool.d/www.conf
Nous devons définir l’utilisateur/groupe Unix des processus PHP sur nginx. Trouvez les lignes user=www-data et group=www-data dans le fichier et changez-les en nginx.
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
De plus, trouvez les lignes listen.owner=www-data et listen.group=www-data dans le fichier et changez-les en nginx.
listen.owner = nginx
listen.group = nginx
Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsqu’on vous le demande.
Redémarrez le processus PHP-fpm.
$ sudo systemctl restart php7.4-fpm
Pour tester votre configuration PHP, créez un fichier test.php dans le dossier html.
$ sudo nano /var/www/example.com/html/test.php
Ajoutez le contenu suivant et enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsqu’on vous le demande.
Lancez http:// dans votre navigateur Web et vous devriez voir ce qui suit.

Installer phpMyAdmin
Nous allons installer phpMyAdmin manuellement pour notre tutoriel.
Tout d’abord, nous devons installer quelques paquets PHP supplémentaires pour que phpMyAdmin fonctionne.
$ sudo apt install php-mbstring php-zip php-gd php-json php-curl php-bz2 php-xml
Passez au répertoire /usr/share pour télécharger et installer phpMyAdmin.
$ cd /usr/share
Téléchargez les fichiers phpMyAdmin. (Vérifiez la dernière version sur son site) Nous allons uniquement installer la version en anglais.
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-english.tar.gz
$ tar xvzf phpMyAdmin-5.0.2-english.tar.gz
$ sudo mv phpMyAdmin-5.0.2-english /usr/share/phpmyadmin
$ sudo rm phpMyAdmin*.tar.gz
Donnez les permissions appropriées au dossier phpMyAdmin.
$ sudo chown -R nginx:nginx phpmyadmin
$ sudo chmod -R 744 phpmyadmin
Configurer phpMyAdmin
Créez le fichier de configuration à partir du fichier d’exemple fourni avec le paquet.
$ sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Nous devons ajouter une valeur secrète dans le fichier de configuration pour des raisons de cookie et de sécurité. Utilisez les commandes suivantes pour générer et ajouter le code.
$ randomBlowfishSecret=$(openssl rand -base64 32)
$ sed -i "s|cfg\['blowfish_secret'\] = ''|cfg['blowfish_secret'] = '$randomBlowfishSecret'|" /usr/share/phpmyadmin/config.inc.php
Pour que le serveur Web Nginx trouve et serve correctement les fichiers phpMyAdmin, nous devrons créer un lien symbolique de son emplacement réel vers le répertoire racine du document de Nginx.
Pour ce faire, exécutez la commande suivante.
$ sudo ln -s /usr/share/phpmyadmin /var/www/example.com/html/phpmyadmin
Votre installation de phpMyAdmin est opérationnelle. Pour y accéder, ouvrez simplement http://example.com/phpmyadmin.
Par défaut, cet emplacement doit être changé car c’est l’emplacement le plus courant que tout hacker peut localiser votre installation de phpMyAdmin. Pour ce faire, exécutez la commande suivante.
$ sudo mv /var/www/example.com/html/phpmyadmin /var/www/example.com/html/sm123
En gros, nous avons déplacé notre emplacement phpMyAdmin vers le dossier sm123. Pour y accéder, vous devrez maintenant ouvrir http://example.com/sm123 dans votre navigateur.
Puisque nous utilisons unix_authentication avec MySQL ici, il n’y a pas d’utilisateur root pour se connecter via phpMyAdmin. Vous devrez d’abord créer un utilisateur MySQL et lui donner des privilèges sur les bases de données pour pouvoir utiliser phpMyAdmin.
Pour ce faire, connectez-vous à l’interface de commande MySQL.
$ sudo mysql
Maintenant, collez les commandes suivantes pour créer un nouvel utilisateur et lui accorder tous les privilèges de base de données.
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
EXIT
Vous pouvez maintenant vous connecter en utilisant cet utilisateur à http://example.com/phpmyadmin.
Configurer Opcache
Si vous avez suivi ce tutoriel, Opcache devrait déjà être installé avec PHP. Dans le cas où il ne l’est pas, vous pouvez simplement installer Opcache en utilisant la commande suivante.
$ sudo apt install php7.4-opcache
Vérifiez qu’il a été installé.
$ php -v
PHP 7.4.5 (cli) (built: Apr 28 2020 14:49:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies
Pour modifier les paramètres d’Opcache, ouvrez le fichier /etc/php/7.4/fpm/conf.d/10-opcache.ini.
$ sudo nano /etc/php/7.4/fpm/conf.d/10-opcache.ini
Collez le code suivant à la fin du fichier. Les paramètres suivants devraient vous aider à démarrer avec l’utilisation d’Opcache et sont généralement recommandés pour de bonnes performances.
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsqu’on vous le demande.
Redémarrez votre serveur pour appliquer les paramètres.
$ sudo systemctl restart php7.4-fpm
Installer SSL via Let’s Encrypt
SSL est devenu une partie essentielle de tout site Web. Ici, nous allons installer SSL en utilisant le service Let’s Encrypt.
Pour cela, installez d’abord l’outil Certbot.
$ sudo apt install certbot python3-certbot-nginx
Générez les certificats.
$ sudo certbot --nginx -d example.com
Si c’est la première fois que vous exécutez certbot sur votre système, on vous demandera une adresse e-mail et d’accepter les conditions de service. On vous demandera également si vous acceptez de partager des données avec la fondation EFF, ce à quoi vous pouvez dire non. Après cela, certbot communiquera avec les serveurs Let’s Encrypt et exécutera un défi pour vérifier vos domaines.
Si cela réussit, on vous demandera comment gérer les redirections HTTPS.
Veuillez choisir si l'accès HTTPS est requis ou optionnel.
-------------------------------------------------------------------------------
1 : Facile - Autoriser l'accès HTTP et HTTPS à ces sites
2 : Sécurisé - Rediriger toutes les demandes vers un accès HTTPS sécurisé
-------------------------------------------------------------------------------
Sélectionnez le numéro approprié [1-2] puis [entrer] (appuyez sur 'c' pour annuler) :
Sélectionnez votre choix et appuyez sur Entrée. Vos certificats seront alors créés et vos fichiers de configuration Nginx sont mis à jour avec les paramètres SSL.
Vos certificats sont prêts et vous pouvez maintenant ouvrir votre site en allant sur https://example.com
Vérifier l’auto-renouvellement SSL
C’est la dernière étape avant de terminer ce tutoriel.
Vérifiez le processus de renouvellement en effectuant un essai du processus de renouvellement.
$ sudo certbot renew --dry-run
Si vous ne rencontrez pas d’erreurs, cela signifie que vous êtes prêt. Certbot renouvellera automatiquement vos certificats pour vous. Vous recevrez un e-mail d’avertissement concernant l’expiration du certificat.
Conclusion
C’est tout pour ce tutoriel. Votre configuration LEMP est complète et vous pouvez commencer à créer et héberger vos sites Web et applications.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.