Installer la pile LEMP sur Ubuntu 20.04

LEMP est un acronyme pour Linux, NGINX (prononcé comme Engine X), MySQL et PHP. Ce sont tous des outils open source populaires généralement utilisés dans le développement Web. La pile LEMP est couramment utilisée pour héberger des sites Web dynamiques. La plupart des systèmes de gestion de contenu tels que WordPress, Drupal et Joomla créent des pages Web dynamiques.

Lorsqu’un la demande vient, le serveur exécutera le code PHP pour créer la version HTML et interrogera la base de données principale pour obtenir le contenu à insérer dans HTML.

Dans ce guide, nous couvrirons les étapes d’installation du Pile LEMP au Ubuntu 20.04.

Conditions préalables

  • Un serveur Linux Ubuntu 20.04 fonctionnel
  • Un utilisateur avec sudo privilèges

Cela prend en charge la première partie de la pile LEMP, c’est-à-dire, Linux.

Installer le serveur Web NGINX

Pour la deuxième partie de la pile LEMP, nous aurions besoin de configurer NGINX pour servir les ressources Web aux clients.

C’est facile de installer NGINX sur Ubuntu 20.04 avec la commande suivante.

$ sudo apt installer nginx

Une fois l’installation terminée, vous pouvez vérifier l’état de NGINX en exécutant la commande suivante.

$ sudo état systemctl nginx

Vérifier l’état de NGINX

Vous devriez voir un message confirmant que NGINX est actif (en cours d’exécution). Sinon, exécutez la commande suivante pour démarrer NGINX.

$ sudo systemctl démarrer nginx

Maintenant, vous pouvez ouvrir un navigateur Web et entrer l’adresse IP de votre serveur. Vous devriez voir la page par défaut de NGINX.

Noter: Vous pouvez récupérer l’adresse IP de votre serveur en exécutant la commande ci-dessous.

$ curl ifconfig.me

Ou entrez simplement hôte local dans votre navigateur Web si vous êtes connecté localement.

Page Web par défaut de NGINXPage Web par défaut de NGINX

Modifier la racine du document NGINX par défaut

La page Web “Bienvenue sur nginx” ci-dessus a été servie à partir de la racine du document par défaut, c’est-à-dire /var/www/html sur la base des directives de configuration dans le fichier de bloc de serveur par défaut. Le fichier de blocage du serveur NGINX par défaut est /etc/nginx/sites-available/default. Plutôt que d’utiliser cette configuration par défaut, nous pouvons créer la nôtre.

Voici comment.

Tout d’abord, créez un répertoire sous /var/www qui servira de nouvelle racine de document NGINX par défaut. j’ai nommé le mien cloudindevs selon la première partie de mon nom de domaine enregistré. Vous pouvez nommer le vôtre de la même manière.

$ sudo mkdir /var/www/cloudindevs

Ensuite, assurez-vous que le compte de service NGINX (www-data) a accès au répertoire racine du document.

Remarque : il n’est pas obligatoire d’utiliser les données www. Vous pouvez créer n’importe quel nom d’utilisateur significatif et définir user dans le fichier /etc/nginx/nginx.conf.

Pour changer la propriété de la nouvelle racine du document en www-data, tapez :

$ sudo chown www-data:www-data /var/www/cloudindevs

Pour attribuer des autorisations, exécutez la commande chmod suivante :

$ sudo chmod -R 755 /var/www/cloudindevs

Après cela, vous pouvez créer un nouveau fichier de bloc de serveur NGINX en copiant celui existant comme suit.

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/cloudindevs.com

Ensuite, modifiez le nouveau fichier de bloc de serveur NGINX et modifiez le racine directive pour pointer vers votre nouvelle racine de document.

$ sudo nano /etc/nginx/sites-available/cloudindevs.com

Changer le répertoire racine de NGINXChanger le répertoire racine de NGINX

L’étape suivante consiste à activer le nouveau fichier de bloc de serveur en le liant symboliquement comme suit.

$ sudo ln -s /etc/nginx/sites-available/cloudindevs.com /etc/nginx/sites-enabled

Vous pouvez maintenant désactiver l’ancien fichier de blocage du serveur NGINX par défaut en le dissociant avec la commande ci-dessous.

$ sudo dissocier /etc/nginx/sites-enabled/default

Testez votre configuration NGINX avec la commande suivante.

$ sudo nginx -t

Pour tester correctement cette modification, copiez l’exemple de code html ci-dessous.

<head>
<title>Successfully changed NGINX default document root!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx default document root was successfully changed.</p>
</body>
</html>

Créez une nouvelle page d’index dans le nouveau répertoire racine du document avec la commande suivante.

$ sudo nano /var/www/cloudindevs/index.html

Collez le code html dans l’éditeur de texte, enregistrez et close le fichier.

Redémarrez NGINX avec la commande ci-dessous.

$ sudo systemctl redémarrer nginx

Enfin, ouvrez un navigateur Web et entrez l’adresse IP de votre serveur.

Une fois que vous voyez le message dans l’image ci-dessous, vous êtes prêt à partir.

Nouvelle page Web par défaut de NGINXNouvelle page Web par défaut de NGINX

Installer le système de gestion de base de données MySQL

La troisième partie de la pile LEMP est MySQL — un système de gestion de base de données open source couramment utilisé pour le stockage et la gestion des données d’application. MariaDB est un bon remplacement pour MySQL dans la pile LEMP car il offre des performances améliorées. Mais dans cet article, nous utilisons le MySQL traditionnel.

Vous pouvez installer MySQL sur Ubuntu 20.04 avec la commande suivante.

$ sudo apt installer le serveur mysql

Une fois installé, vous pouvez vérifier la version de MySQL avec la commande suivante.

$ mysql –version

Configurer MySQL

Pour configurer correctement MySQL, il est recommandé d’exécuter le script mysql_secure_installation comme suit.

$ sudo mysql_secure_installation

En un mot, le script vous invite à :

  • Activer/désactiver le composant VALIDATE PASSWORD. Cela concerne l’exigence de complexité du mot de passe
  • Définir un nouveau mot de passe pour l’utilisateur root MySQL
  • Supprimer les utilisateurs anonymes
  • Interdire la connexion root à distance
  • Supprimer la base de données de test
  • Recharger les tables de privilèges pour appliquer les modifications

Une fois que le script mysql_secure_installation se termine avec un message de réussite, vous pouvez vous connecter à MySQL.

Connectez-vous à MySQL

Pour vous connecter à MySQL, exécutez la commande ci-dessous et entrez votre mot de passe root MySQL lorsque vous y êtes invité.

$ sudo mysql -u racine -p

Vous devriez voir le mysql> qui confirme que vous avez maintenant un serveur MySQL fonctionnel.

Connectez-vous à MySQLConnectez-vous à MySQL

Taper quitter et appuyez sur Entrée pour vous déconnecter de MySQL.

mysql> quitter

Installer PHP

Enfin, l’installation de Hypertext Preprocessor (PHP) complète la pile LEMP. PHP gère le traitement dynamique du contenu Web et interagit avec MySQL.

Dans cette section, nous allons installer PHP-FPM (Fast-CGI Process Manager) et configurez-le pour une utilisation par le serveur Web NGINX.

Installer PHP-FPM

Exécutez la commande ci-dessous pour installer PHP-FPM et les composants associés sur Ubuntu 20.04.

$ sudo apt installer php-fpm php-mysql

Une fois installé, vérifiez la version de PHP avec la commande ci-dessous.

$ php -v

Configurer NGINX pour utiliser PHP-FPM

Modifiez votre fichier de configuration de bloc de serveur NGINX comme suit.

$ sudo nano /etc/nginx/sites-available/cloudindevs.com

Appuyez sur la flèche vers le bas de votre clavier jusqu’à ce que vous arriviez à la ligne commençant par indice. Maintenant, ajoutez index.php à la liste comme indiqué dans l’image ci-dessous.

Ajouter index.php à la liste d'index NGINXAjouter index.php à la liste d’index NGINX

Ensuite, appuyez à nouveau sur la touche fléchée vers le bas jusqu’à ce que vous arriviez à la section intitulée “passer les scripts PHP au serveur FASTCGI.”

Décommentez les lignes suivantes.

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

Maintenant, parce que je veux que mon serveur NGINX soit accessible via mon nom de domaine enregistré, j’ai apporté quelques modifications supplémentaires au fichier de blocage du serveur.

Vous trouverez ci-dessous un extrait du fichier de blocage du serveur une fois ces modifications apportées. Si vous souhaitez faire de même, vous pouvez copier les détails de configuration ci-dessous et simplement remplacer cloudindevs par conséquent.

server {
listen 80;
root /var/www/cloudindevs;
index index.php index.html index.htm;
server_name cloudindevs.com www.cloudindevs.com;

location / {

try_files $uri $uri/ =404;

}

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

}

Save changements et close le fichier de configuration du bloc serveur.

Remarque : par défaut, PHP-FPM la configuration du pool est stockée dans le fichier /etc/php/7.4/fpm/pool.d/www.conf. Ici, vous pouvez définir utilisateur et grouper pour php-fpm.

Tester la configuration PHP-FPM

Rappelons que nous avons ajouté index.php à la liste des fichiers d’index dans le fichier de configuration du bloc du serveur NGINX. Par conséquent, nous devons créer le fichier index.php dans la nouvelle racine du document par défaut comme suit.

$ sudo nano /var/www/cloudindevs/index.php

Copiez le code PHP ci-dessous et collez-le dans l’éditeur de texte.

<?php
phpinfo();
?>

Save changements et close le fichier.

Redémarrez NGINX avec :

$ sudo systemctl redémarrer nginx

Ouvrez un navigateur Web et entrez l’adresse IP de votre serveur ou hôte local si vous êtes connecté localement. Vous devriez voir la page suivante qui confirme que PHP-FPM fonctionne correctement.

Tester la configuration PHP-FPM avec NGINXTester la configuration PHP-FPM avec NGINX

Pour des raisons de sécurité, vous pouvez supprimer le fichier index.php comme suit, afin d’éviter de révéler trop d’informations sur votre serveur au monde extérieur.

$ sudo rm /var/www/cloudindevs/index.php

Conclusion

En suivant les étapes de ce guide, vous devriez maintenant avoir une plate-forme LEMP fonctionnelle sur Ubuntu 20.04. Si vous avez besoin de précisions concernant ce guide, faites-le nous savoir dans la section commentaires ci-dessous.