Tutorial

Comment installer Linux, Nginx, MySQL, PHP (pile LEMP) sur Ubuntu 20.04 [Démarrage rapide]

Published on May 29, 2020

Developer Advocate

Français
Comment installer Linux, Nginx, MySQL, PHP (pile LEMP) sur Ubuntu 20.04 [Démarrage rapide]

Introduction

Dans ce guide de démarrage rapide, nous allons installer une pile LEMP sur un serveur Ubuntu 20.04.

Pour une version plus détaillée de ce tutoriel, avec plus d’explications sur chaque étape, veuillez vous référer à Comment installer Linux, Nginx, MySQL, PHP (pile LEMP) sur Ubuntu 20.0

Conditions préalables

Pour suivre ce guide, vous devrez avoir accès à un serveur Ubuntu 20.04 en tant qu’utilisateur sudo.

Étape 1 - Installation de Nginx

Mettez à jour le cache de votre gestionnaire de packages et installez ensuite Nginx avec :

  1. sudo apt update
  2. sudo apt install nginx

Une fois l’installation terminée, vous devrez ajuster les paramètres de votre pare-feu pour autoriser le trafic HTTP sur votre serveur. Exécutez la commande suivante pour autoriser l’accès externe sur le port 80 (HTTP) :

  1. sudo ufw allow in "Nginx"

Avec l’ajout de la nouvelle règle de pare-feu, vous pouvez vérifier si le serveur est opérationnel en accédant à l’adresse IP publique ou au nom de domaine de votre serveur depuis votre navigateur web. Vous verrez une page comme celle-ci :

Page par défaut de Nginx

Étape 2 – Installer MySQL

Nous allons maintenant installer MySQL, un système de gestion de base de données populaire utilisé dans les environnements PHP.

Là encore, utilisez apt pour acquérir et installer ce logiciel :

  1. sudo apt install mysql-server

Une fois l’installation terminée, il est recommandé d’exécuter un script de sécurité qui vient préinstallé avec MySQL. Lancez le script interactif en exécutant :

  1. sudo mysql_secure_installation

Il vous sera demandé si vous souhaitez configurer le VALIDATE PASSWORD PLUGIN. Répondez Y pour oui, ou tout autre chose pour continuer sans activer. Si vous répondez « oui », il vous sera demandé de choisir un niveau de validation du mot de passe.

Votre serveur vous demandera ensuite de sélectionner et de confirmer un mot de passe pour l’utilisateur root de MySQL. Même si la méthode d’authentification par défaut pour l’utilisateur root de MySQL dispense de l’utilisation d’un mot de passe, même si celui-ci est défini, vous devez définir ici un mot de passe fort pour plus de sécurité.

Pour le reste des questions, appuyez sur Y et appuyez sur la touche ENTRÉE à chaque invite.

Note : Au moment de la rédaction de ce document, la bibliothèque MySQL PHP native mysqlnd ne prend pas en charge caching_sha2_authentification,la méthode d’authentification par défaut pour MySQL 8. Pour cette raison, lorsque vous créez des utilisateurs de base de données pour des applications PHP sur MySQL 8, vous devez vous assurer qu’ils sont configurés pour utiliser le mot de passe mysql_native_password à la place. Veuillez vous référer à l’étape 6 de notre guide détaillé LEMP sur Ubuntu 20.04 pour apprendre comment le faire.

Étape 3 – Installer PHP

Pour installer les packages php-fpm et php-mysql, exécutez :

  1. sudo apt install php-fpm php-mysql

Étape 4 - Configuration de Nginx pour PHP

Dans ce guide, nous allons mettre en place un domaine appelé your_domain, mais vous devez le remplacer par votre propre nom de domaine.

Sur Ubuntu 20.04, Nginx dispose d’un bloc serveur activé par défaut qui est configuré pour servir des documents à partir d’un répertoire à /var/www/html. Même si cela fonctionne bien pour un seul site, cela peut devenir difficile à gérer si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, nous allons créer une structure de répertoire au sein de /var/www pour le site Web your_domain, en laissant /var/www/html en place comme répertoire par défaut à servir si une demande du client ne correspond à aucun autre site.

Créez le répertoire racine Web pour your_domain comme suit :

  1. sudo mkdir /var/www/your_domain

Ensuite, attribuez la propriété du répertoire avec la variable d’environnement $USER qui fera référence à votre utilisateur actuel du système :

  1. sudo chown -R $USER:$USER /var/www/your_domain

Ouvrez ensuite un nouveau fichier de configuration dans le répertoire sites-available de Nginx en utilisant votre éditeur de ligne de commande préféré. Ici, nous utiliserons nano :

  1. sudo nano /etc/nginx/sites-available/your_domain

Cela créera un nouveau fichier vierge. Collez dans la configuration suivante :

/etc/nginx/sites-available/your_domain
server {
    listen 80;
    server_name your_domain www.your_domain;
    root /var/www/your_domain;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

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

    location ~ /\.ht {
        deny all;
    }

}


Une fois que vous avez terminé vos modifications, enregistrez et fermez le fichier. Si vous utilisez nano, vous pouvez le faire en appuyant sur CTRL + X, puis y et ENTER pour confirmer.

Activez votre configuration en établissant un lien vers le fichier de configuration à partir du répertoire sites-enabled de Nginx :

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Cela indiquera à Nginx d’utiliser la configuration lors du prochain rechargement. Vous pouvez vérifier si votre configuration contient des fautes de syntaxe en tapant :

  1. sudo nginx -t

Si des erreurs sont signalées, revenez à votre fichier de configuration pour corriger son contenu avant de continuer.

Une fois que vous êtes prêt, rechargez Nginx pour appliquer les modifications :

  1. sudo systemctl reload nginx

Votre nouveau site web est maintenant actif, mais le root web /var/www/your_domain est toujours vide. Créez un fichier index.html à cet endroit afin que nous puissions tester si le bloc de serveur fonctionne comme prévu :

  1. nano /var/www/your_domain/index.html

Incluez le contenu suivant dans ce dossier :

/var/www/your_domain/index.html
<html>
  <head>
    <title>your_domain website</title>
  </head>
  <body>
    <h1>Hello World!</h1>

    <p>This is the landing page of <strong>your_domain</strong>.</p>
  </body>
</html>

Maintenant, allez dans votre navigateur et accédez au nom de domaine ou à l’adresse IP de votre serveur, comme indiqué dans la directive server_name de votre fichier de configuration de bloc de serveur :

http://server_domain_or_IP

Vous verrez une page comme celle-ci :

Nginx server block

Étape 5 - Test de PHP avec Nginx

Nous allons maintenant créer un script de test PHP pour confirmer que Nginx est capable de gérer et de traiter les demandes de fichiers PHP.

Créer un nouveau fichier nommé info.php à l’intérieur de votre dossier root web personnalisé :

  1. nano /var/www/your_domain/info.php

Cela ouvrira un fichier vierge. Ajoutez le contenu suivant dans le fichier :

/var/www/your_domain/info.php
<?php
phpinfo();

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Vous pouvez maintenant accéder à cette page dans votre navigateur Web en consultant le nom de domaine ou l’adresse IP publique que vous avez défini dans votre fichier de configuration Nginx, suivi de /info.php :

http://server_domain_or_IP/info.php

Vous verrez apparaître une page Web contenant des informations détaillées sur votre serveur :

PHPInfo Ubuntu 20.04

Après avoir vérifié les informations pertinentes sur votre serveur PHP par le biais de cette page, il est préférable de supprimer le fichier que vous avez créé car il contient des informations sensibles sur votre environnement PHP et votre serveur Ubuntu. Vous pouvez utiliser rm pour supprimer ce fichier :

  1. sudo rm /var/www/your_domain/info.php

Tutoriels connexes

Voici des liens vers des guides plus détaillés relatifs à ce tutoriel :

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Developer Advocate

Dev/Ops passionate about open source, PHP, and Linux.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more