Retour au blog

Comment installer la pile LEMP (Linux, Nginx, MySQL PHP) sur Ubuntu 20.04

Comment installer la pile LEMP (Linux, Nginx, MySQL PHP) sur Ubuntu 20.04

Introduction

Dans le monde d'Internet, plusieurs technologies s'associent pour former une solution qui permet aux internautes d'accéder à du contenu dynamique sur le World Wide Web. La pile LEMP est l'une de ces solutions. Elle rassemble quatre technologies qui constituent une solution de serveur complète pour les sites web dynamiques et performants. LEMP est un acronyme pour Linux, Nginx, MySQL et PHP. Linux est le système d'exploitation du serveur. Nginx (qui se prononce Engine-X, d'où la lettre E dans l'acronyme) est le logiciel de serveur web. Ensuite, MySQL est le système de base de données qui contient les données du site web et des utilisateurs. PHP est le langage de script côté serveur pour le traitement dynamique.

Dans ce tutoriel, nous vous guiderons sur la façon d'installer et de configurer une pile LEMP, et de vérifier que tout fonctionne comme prévu. Commençons !

Étape 1 : Configuration de votre serveur avec Ubuntu 20.04

Ubuntu 20.04 est un système d'exploitation basé sur Linux. Il existe plusieurs systèmes d'exploitation de serveurs basés sur Linux sur le marché, y compris des versions gratuites et payantes. Ce guide se concentre sur Ubuntu 20.04, qui est gratuit et open-source. Cette étape répond à la première exigence de l'acronyme de la pile LEMP, le L. Vous devez disposer d'une installation réelle d'Ubuntu 20.04 sur votre VPS pour procéder aux étapes suivantes. Vous pouvez suivre notre guide sur la configuration de votre serveur Ubuntu. Facultativement, si vous souhaitez suivre ce guide sur votre ordinateur local, vous pouvez télécharger l'image d'installation du serveur Ubuntu 20.04 directement depuis le site web d'Ubuntu. Vous devez configurer un utilisateur standard non-root avec des privilèges sudo car nous allons exécuter quelques commandes qui nécessitent des autorisations sudo.

Étape 2 : Installation et configuration du serveur Nginx

Les serveurs web nous permettent de diffuser du contenu tel que des pages web aux visiteurs du site. Nginx est un serveur web populaire, figurant parmi les cinq meilleurs serveurs web open source préférés des développeurs. Cette étape répond à la deuxième exigence de la pile LEMP, le E pour Nginx. Ubuntu dispose d'un dépôt de paquets par défaut où nous obtiendrons les paquets à utiliser dans ce guide. Ubuntu est basé sur Debian, qui utilise apt ou dpkg pour gérer ses paquets. Pour les paquets du dépôt par défaut, nous utiliserons apt.

En règle générale, vous devez exécuter la commande de mise à jour avant de commencer toute installation sur un système Linux. Commencez par saisir la commande suivante dans le terminal :

Une fois la mise à jour effectuée, vous pouvez maintenant installer Nginx avec la commande suivante :

Une fois l'installation terminée, Nginx commence à s'exécuter automatiquement. L'étape suivante consiste à configurer le pare-feu pour autoriser le trafic. Ubuntu utilise le paquet ufw (Uncomplicated Firewall) pour la configuration des pare-feux. Après l'installation, Nginx s'enregistre en tant que service auprès d'ufw. Ubuntu démarre automatiquement le service de pare-feu au démarrage du système, mais pour en être sûr, tapez la commande suivante pour l'activer :

Pour lister la configuration des applications autorisées par ufw, saisissez la commande suivante :

Ci-dessous se trouve une capture d'écran qui montre la sortie de la commande ci-dessus :

ufw app list

Comme vous pouvez le voir, Nginx est déjà enregistré auprès d'ufw et dispose de trois profils, comme expliqué ci-dessous :

  • Nginx Full – il ouvre à la fois les ports 80 et 443. Le port 80 est destiné au trafic normal/non chiffré, c'est-à-dire HTTP. Le port 443 est destiné au trafic chiffré TLS/SSL, c'est-à-dire HTTPS.
  • Nginx HTTP – il ouvre uniquement le port 80 – trafic non chiffré.
  • Nginx HTTPS – il ouvre uniquement le port 443 – trafic chiffré TLS/SSL.

Bien que Nginx s'enregistre automatiquement auprès d'ufw, aucun trafic n'est autorisé vers votre serveur tant que vous ne le faites pas vous-même. Vous pouvez choisir d'autoriser tous les profils ou l'un d'entre eux, cependant, il est préférable d'autoriser le profil le plus restrictif qui permettra tout de même le trafic que vous avez configuré pour votre serveur web. Comme nous n'avons pas configuré SSL dans ce tutoriel, nous autoriserons uniquement le trafic HTTP sur le port 80. Si vous êtes curieux, nous avons un guide sur la configuration de SSL sur le serveur Nginx de Let's Encrypt en utilisant Certbot.

Activons le trafic sur le port 80 en saisissant la commande suivante :

Pour vérifier que la modification a réussi, saisissez la commande suivante :

check status

La sortie ci-dessus résultant de l'exécution de la commande montre que le trafic HTTP est désormais autorisé. Vous pouvez vérifier si le serveur fonctionne en accédant à votre domaine ou à l'adresse IP publique de votre serveur dans le navigateur. Si vous n'avez pas configuré de nom de domaine et que vous n'êtes pas sûr de l'adresse IP publique de votre serveur, vous pouvez la trouver en utilisant curl en exécutant la commande suivante :

Copiez la sortie de la commande ci-dessus, qui est votre adresse IP publique, dans la barre d'adresse de votre navigateur. Lorsque vous chargez la page, vous verrez la page d'accueil par défaut de Nginx :

nginx start page

La page ci-dessus indique que vous avez installé Nginx avec succès.

Étape 3 : Installation du système de gestion de base de données MySQL

La gestion des données est un élément crucial de tout site web dynamique. MySQL est un système de gestion de base de données qui stocke et gère les données d'un site web. Cette étape s'occupe de la troisième exigence de la pile LEMP, le M. Saisissez la commande suivante pour installer MySQL :

Une fois l'installation de MySQL terminée, vous devez le configurer avant qu'il ne soit prêt à l'emploi. Une partie de la configuration consiste à sécuriser le serveur de base de données. MySQL est fourni avec un script pour vous guider dans la sécurisation et la configuration des mots de passe. La commande suivante démarre le script :

mysql secure installation

Le script vous demande si vous souhaitez configurer le composant VALIDATE PASSWORD ou appuyer sur n'importe quelle lettre pour continuer sans activer le composant.

Le composant VALIDATE PASSWORD est une fonctionnalité utilisée pour vérifier si le mot de passe que vous avez saisi pour un utilisateur particulier sur votre serveur de base de données correspond à un critère spécifique. Vous pouvez le configurer pour vérifier des éléments tels que la longueur, les caractères numériques, la présence de lettres majuscules ou minuscules, etc. S'il n'est pas activé, vous pouvez configurer le mot de passe de votre choix. Cependant, s'il est activé, vous devez utiliser un mot de passe qui correspond aux critères que vous avez spécifiés. L'activer peut poser des problèmes avec les paquets qui configurent automatiquement les identifiants des utilisateurs MySQL, comme le paquet phpMyAdmin pour Ubuntu. L'activer ou non est un choix personnel. Votre base de données est toujours sécurisée si vous ne l'activez pas, assurez-vous simplement d'utiliser des mots de passe forts et uniques.

Si vous avez appuyé sur Y pour activer le composant, le script vous demandera alors de sélectionner un niveau de validation du mot de passe :

password strength

Le script propose 3 niveaux de validation de mot de passe. Le niveau LOW exige que votre mot de passe comporte uniquement 8 caractères ou plus. Le niveau MEDIUM exige que votre mot de passe comporte 8 caractères ou plus, qui doivent être un mélange de lettres majuscules, de lettres minuscules et de caractères spéciaux. Le niveau STRONG exige un mot de passe complexe de 8 caractères ou plus, qui doit être un mélange de lettres majuscules, de lettres minuscules, de caractères spéciaux et de mots, et ne doit pas être basé sur des mots du dictionnaire courant, sinon vous recevrez des erreurs. Choisissons le niveau Low, tapez 0 et appuyez sur Entrée.

Le script vous invite à saisir et à saisir à nouveau le mot de passe :

set password

Tapez y et Entrée pour accepter le mot de passe que vous avez saisi comme mot de passe root. Les invites suivantes visent à améliorer la sécurité du serveur MySQL. En commençant par supprimer les utilisateurs anonymes par défaut fournis avec chaque installation de MySQL, en désactivant la connexion root à distance et en supprimant les bases de données de test. L'invite finale vous demande de recharger la table des privilèges pour que les commandes prennent effet. Saisissez y et appuyez sur Entrée pour toutes les invites :

mysql secure installation

La configuration de sécurité initiale est terminée.

Vous pouvez vérifier la version de MySQL que vous avez installée en exécutant la commande :

Voici la version que nous utilisons pour ce tutoriel :

mysql version

Pour les systèmes Ubuntu exécutant des versions de MySQL à partir de la version 5.7 et ultérieures, l'utilisateur root est configuré pour s'authentifier à l'aide du plugin auth_socket et non avec le mot de passe. Cela garantit une plus grande sécurité, cependant, cela peut poser un problème avec des packages externes tels que le package phpMyAdmin. Si vous préférez continuer à utiliser le plugin auth_socket, passez à l'étape 4.

Si vous souhaitez plutôt vous connecter à l'aide d'un mot de passe, vous devez configurer la méthode d'authentification pour utiliser mysql_native_password.

Démarrez l'invite MySQL en saisissant la commande suivante :

MySQL est fourni avec plusieurs bases de données par défaut. Vous pouvez afficher la liste des bases de données par défaut en saisissant la requête suivante dans votre terminal :

mysql dbs LEMP stack

La base de données appelée mysql stocke plusieurs configurations liées à MySQL. Cette base de données contient une table appelée users qui contient les détails des utilisateurs et la méthode d'authentification pour chacun d'eux. Nous pouvons utiliser des requêtes SQL pour récupérer, modifier et supprimer des informations d'une table. Saisissez la requête suivante dans votre terminal pour obtenir des détails sur la méthode d'authentification utilisée par chaque utilisateur :

user authentication check

La sortie ci-dessus montre que l'utilisateur root s'authentifie en réalité à l'aide du plugin auth_socket. Pour modifier la méthode d'authentification de l'utilisateur root, saisissez l'instruction suivante dans votre terminal. N'oubliez pas de la modifier pour qu'elle corresponde à la force du mot de passe pour le niveau moyen que nous avions défini à l'étape précédente, sinon cela provoquera une erreur :

Une fois la requête exécutée avec succès, lancez la commande flush privileges pour que les modifications prennent effet immédiatement :

Exécutez à nouveau l'instruction select ci-dessous pour vérifier si les modifications ont pris effet :

updated user authentication check

D'après la sortie, l'utilisateur root s'authentifiera désormais à l'aide de mysql_native_password. Vous pouvez quitter l'invite mysql en tapant exit et en appuyant sur entrée.

Vous pouvez essayer de vous connecter avec le mot de passe que vous avez défini en saisissant la commande suivante :

L'invite vous demandera votre mot de passe. S'il correspond, vous verrez l'invite MySQL. Vous avez configuré avec succès votre serveur avec MySQL. Ensuite, quittez l'invite MySQL.

Étape 4 : Installation de PHP et configuration de Nginx pour utiliser le processeur PHP

PHP est un acronyme pour PHP: Hypertext Preprocessor. C'est un langage de script côté serveur open-source largement utilisé pour les sites Web et les applications Web. PHP répond à la quatrième exigence de la pile LEMP. PHP aide à générer du contenu dynamique sur un site Web. Il peut être utilisé comme intermédiaire entre vos pages Web et le système de base de données. Il lit les données de la base de données et les présente aux visiteurs de votre site Web. De plus, il peut insérer, mettre à jour et supprimer des données de la base de données.

Nginx ne dispose pas de plugins de traitement PHP natifs comme d'autres serveurs Web, vous devez donc installer php-fpm pour transmettre les requêtes de Nginx à PHP pour traitement. Tout d'abord, ajoutez le dépôt Ubuntu universe qui contient des logiciels libres et open-source maintenus par la communauté d'Ubuntu. Saisissez la commande suivante dans votre terminal :

Ensuite, installez le package php-fpm ainsi que le package d'aide php-mysql pour permettre à PHP de communiquer avec MySQL, en utilisant la commande suivante :

Au moment de la rédaction de ce guide, la version de PHP installée à partir de la commande ci-dessus est la 7.2.24. Par conséquent, elle installe le package php-fpm7.2. Gardez cela à l'esprit lors de la mise à jour des blocs de serveur, et assurez-vous de saisir la version correcte, sinon votre page ne se chargera pas.

Vous pouvez vérifier la version de PHP en saisissant la commande suivante :

php version

À ce stade, tous les composants de la pile LEMP ont été installés. Ce que vous devez faire ensuite, c'est configurer Nginx pour diriger les requêtes vers le processeur PHP. Dans Nginx, la configuration se fait au sein des blocs de serveur. Les blocs de serveur sont équivalents aux hôtes virtuels d'Apache. Pour plus d'informations, vous pouvez consulter notre tutoriel sur les blocs de serveur Nginx.

Pour ce tutoriel, créons un bloc de serveur pour un domaine test.com avec le même nom, vous êtes libre de choisir le nom de votre choix. Les blocs de serveur se trouvent dans le répertoire /etc/nginx/sites-available/. Utilisez nano pour créer le fichier de bloc de serveur en saisissant la commande suivante :

Saisissez le script suivant dans le fichier :

Voici une brève description de ce que fait chaque directive :

  • listen – définit le port sur lequel Nginx va écouter. Le port 80 est le port par défaut, cependant, si vous aviez configuré SSL, vous mettriez 443.
  • root – contient le répertoire dans lequel le répertoire du site sera stocké.
  • index – indique à Nginx de donner la priorité à la diffusion des fichiers index.php, s'ils sont disponibles sur demande.
  • server_name – définit le nom du bloc de serveur, il contient l'adresse IP publique ou le nom de domaine de votre serveur.
  • location/ – le premier bloc location contient la directive try_files. Il vérifie l'existence de fichiers correspondant à une requête URI, s'ils ne sont pas trouvés, une erreur 404 est renvoyée.
  • location ~ \.php$ – cette directive gère le traitement PHP en dirigeant les requêtes Nginx via le fichier fastcgi-php.conf et le fichier php7.2-fpm.sock qui définit quel socket associer à php-fpm. Cette commande vérifie le statut de php-fpm, nous spécifions la version 7.2, qui est celle que nous avons. Assurez-vous de vérifier avec la version que vous possédez :
php status

  • location ~ /\.ht – cette directive gère les fichiers .htaccess, qui ne sont pas traités par Nginx. La directive deny all garantit qu'aucun fichier htaccess n'est servi aux visiteurs.

Après avoir ajouté le script à votre fichier test.com, tapez Ctrl + O, puis appuyez sur Entrée pour enregistrer le fichier. Tapez Ctrl + X pour fermer l'éditeur.

Ensuite, vous devez activer le bloc de serveur en saisissant la commande suivante pour créer un lien symbolique vers /etc/nginx/sites-enabled :

Ensuite, dissociez le bloc de serveur par défaut de sites-enabled en saisissant la commande suivante :

Testez votre nouvelle configuration en saisissant la commande suivante :

Si la syntaxe est correcte, rechargez Nginx avec la commande suivante :

À cette étape, votre pile LEMP a été installée et configurée. À l'étape suivante, nous créons un fichier de test juste pour nous assurer que les différents composants se connectent bien.

Étape 5 : Création d'un fichier PHP pour tester votre pile LEMP

Dans cette étape, nous créons un fichier .php et l'exécutons sur le serveur Nginx pour vérifier s'il fonctionne correctement. Nous utiliserons la fonction globale phpinfo() pour vérifier les packages php disponibles. Saisissez la commande suivante pour ouvrir un fichier .php dans nano :

Dans l'éditeur nano, saisissez l'extrait de code suivant :

Enregistrez et fermez le fichier. Pour visiter la page que vous venez de créer dans votre navigateur, recherchez votre domaine ou votre adresse IP et accédez-y comme suit :

Vous devriez pouvoir voir la page d'informations PHP :

php info page

La page ci-dessus montre que vous avez configuré Nginx avec succès. Comme le fichier que vous avez créé pour le test contient des détails précis sur votre serveur, vous devez penser à le supprimer. Saisissez la commande suivante pour supprimer le fichier :

 

Si jamais vous devez tester vos configurations à l'avenir, vous pourrez toujours recréer le fichier.

Conclusion

Dans ce tutoriel, vous avez configuré une pile LEMP sur votre Ubuntu 20.04, qui est l'une des piles de développement d'applications web les plus puissantes disponibles. À partir de là, vous devriez être en mesure d'héberger à peu près n'importe quel site web, application web ou logique côté serveur pour votre application mobile. Pour vous assurer que votre site web diffuse du contenu via une connexion SSL sécurisée, nous vous recommandons de consulter notre tutoriel sur la configuration des certificats SSL sur le serveur Nginx.

Bon développement !

author

Akshay Nagpal

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.