Comment installer Linux, Nginx, MySQL, PHP (pile LEMP) sur Debian 9

introduction

La pile logicielle LEMP est un groupe de logiciels pouvant servir à gérer des pages Web dynamiques et des applications Web. Cet acronyme décrit un système d’exploitation Linux, avec un serveur Web Nginx. Les données de base sont stockées dans la base de données MySQL et le traitement dynamique est géré par PHP.

Dans ce guide, vous allez installer une pile LEMP sur un serveur Debian à l’aide des packages fournis par le système d’exploitation.

Conditions préalables

Pour compléter ce guide, vous aurez besoin d’un serveur Debian 9 avec un utilisateur non root avec les privilèges + sudo +. Vous pouvez configurer un utilisateur avec ces privilèges dans notre guide Initial Initial Server avec Debian 9.

Étape 1 - Installation du serveur Web Nginx

Pour afficher les pages Web destinées aux visiteurs de notre site, nous allons utiliser Nginx, un serveur Web moderne et efficace.

Tous les logiciels que nous utiliserons pour cette procédure proviendront directement des référentiels de paquets par défaut de Debian. Cela signifie que nous pouvons utiliser la suite de gestion de paquets + apt + pour terminer l’installation.

Comme c’est la première fois que nous utilisons + apt + pour cette session, nous devrions commencer par mettre à jour notre index de paquetage local. Nous pouvons alors installer le serveur:

sudo apt update
sudo apt install nginx

Sur Debian 9, Nginx est configuré pour s’exécuter lors de l’installation.

Si le pare-feu + ufw + est actif, vous devrez autoriser les connexions à Nginx. Vous devez activer le profil le plus restrictif qui autorisera le trafic que vous souhaitez. Comme nous n’avons pas encore configuré SSL pour notre serveur, dans ce guide, nous n’aurons besoin que d’autoriser le trafic sur le port + 80 +.

Vous pouvez l’activer en tapant:

sudo ufw allow 'Nginx HTTP'

Vous pouvez vérifier le changement en tapant:

sudo ufw status

Vous devriez voir le trafic HTTP autorisé dans la sortie affichée:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Maintenant, testez si le serveur est opérationnel en accédant au nom de domaine ou à l’adresse IP publique de votre serveur dans votre navigateur Web. Si vous n’avez pas de nom de domaine pointé sur votre serveur et que vous ne connaissez pas l’adresse IP publique de votre serveur, vous pouvez le trouver en tapant l’un des éléments suivants dans votre terminal:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Cela imprimera quelques adresses IP. Vous pouvez essayer chacune d’elles à tour de rôle dans votre navigateur Web.

Tapez l’une des adresses que vous recevez dans votre navigateur Web. Cela devrait vous amener à la page de destination par défaut de Nginx:

http://

image: https: //assets.digitalocean.com/articles/lemp_debian8/THcJfIl.png [page par défaut de Nginx]

Si vous voyez la page ci-dessus, vous avez correctement installé Nginx.

Étape 2 - Installation de MySQL pour gérer les données du site

Maintenant que nous avons un serveur Web, nous devons installer MySQL, un système de gestion de base de données, pour stocker et gérer les données de notre site.

Vous pouvez l’installer facilement en tapant:

sudo apt install mysql-server

Le logiciel de base de données MySQL est maintenant installé, mais sa configuration n’est pas complète.

Pour sécuriser l’installation, nous pouvons exécuter un script de sécurité qui vous demandera si vous souhaitez modifier certaines valeurs par défaut non sécurisées. Commencez le script en tapant:

sudo mysql_secure_installation

Vous serez invité à saisir le mot de passe du compte MySQL * root *. Nous n’avons pas encore défini cette option. Appuyez simplement sur les touches + ENTER +. On vous demandera ensuite si vous souhaitez définir ce mot de passe. Vous devez taper + y + puis définir un mot de passe * racine *.

Pour le reste des questions posées par le script, vous devez appuyer sur les touches + y +, suivies de la touche + ENTER + à chaque invite. Cela supprimera certains utilisateurs anonymes et la base de données de test, désactivera les connexions root à distance et chargera ces nouvelles règles afin que MySQL respecte immédiatement les modifications que vous avez apportées.

À ce stade, votre système de base de données est maintenant configuré et sécurisé. Configurons PHP.

Étape 3 - Installation de PHP pour le traitement

Nous avons maintenant Nginx installé pour servir nos pages et MySQL installé pour stocker et gérer nos données. Cependant, nous n’avons toujours rien qui puisse générer du contenu dynamique. C’est là que PHP entre en jeu.

Comme Nginx ne contient pas de traitement PHP natif comme certains autres serveurs Web, nous devrons installer + fpm +, qui signifie «gestionnaire de processus fastCGI». Nous dirons à Nginx de transmettre les requêtes PHP à ce logiciel pour traitement. Nous installerons également un paquet d’aide supplémentaire qui permettra à PHP de communiquer avec notre base de données MySQL. L’installation utilisera les fichiers de base PHP nécessaires pour que cela fonctionne.

Puis installez les paquets + php-fpm et` + php-mysql`:

sudo apt install php-fpm php-mysql

Nous avons maintenant nos composants PHP installés. Ensuite, nous allons configurer Nginx pour les utiliser.

Étape 4 - Configuration de Nginx pour utiliser le processeur PHP

Nous avons maintenant tous les composants requis installés. Le seul changement de configuration dont nous avons encore besoin consiste à dire à Nginx d’utiliser notre processeur PHP pour le contenu dynamique.

Nous faisons cela au niveau du bloc serveur (les blocs serveur sont similaires aux hôtes virtuels Apache). Nous allons laisser la configuration Nginx par défaut et créer à la place un nouveau fichier de configuration et un nouveau répertoire racine Web pour contenir nos fichiers PHP. Nous allons nommer le fichier de configuration et le répertoire après le nom de domaine ou le nom d’hôte auquel le serveur doit répondre.

Tout d’abord, créez un nouveau répertoire dans + / var / www + pour contenir le site PHP:

sudo mkdir /var/www/

Ensuite, ouvrez un nouveau fichier de configuration dans le répertoire + sites-available + de Nginx:

sudo nano /etc/nginx/sites-available/

Cela créera un nouveau fichier vierge. Collez-le dans la configuration sans système d’exploitation suivante:

/ etc / nginx / sites-available / votre_domaine

server {
   listen 80;
   listen [::]:80;

   root /var/www/;
   index index.php index.html index.htm;

   server_name ;

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

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

Il s’agit d’une configuration très basique qui écoute sur le port 80 et sert les fichiers à partir de la racine Web que nous venons de créer. Il ne répondra qu’aux demandes portant le nom indiqué après + nom_serveur +, et tous les fichiers se terminant par + .php + seront traités par le processus + php-fpm + avant que Nginx n’envoie les résultats à l’utilisateur.

Enregistrez et fermez le fichier lorsque vous avez fini de le personnaliser.

Activez votre configuration en vous connectant au fichier de configuration à partir du répertoire + sites + enabled + de Nginx:

sudo ln -s /etc/nginx/sites-available/.conf /etc/nginx/sites-enabled/

Cela indiquera à Nginx d’utiliser la configuration lors de son prochain rechargement. Commencez par tester les erreurs de syntaxe dans votre configuration en tapant:

sudo nginx -t

Si des erreurs sont signalées, revenez en arrière et revérifiez votre fichier avant de continuer.

Lorsque vous êtes prêt, rechargez Nginx pour apporter les modifications:

sudo systemctl reload nginx

Nous allons ensuite créer un fichier dans notre nouveau répertoire racine Web pour tester le traitement de PHP.

Étape 5 - Créez un fichier PHP pour tester la configuration

Votre pile LEMP devrait maintenant être complètement configurée. Nous pouvons le tester pour vérifier que Nginx peut correctement transmettre les fichiers + .php + à notre processeur PHP.

Nous pouvons le faire en créant un fichier test PHP dans la racine de votre document. Ouvrez un nouveau fichier appelé + info.php + dans la racine de votre document dans votre éditeur de texte:

sudo nano /var/www//info.php

Tapez ou collez les lignes suivantes dans le nouveau fichier. Ceci est un code PHP valide qui retournera des informations sur notre serveur:

/var/www/votre_domaine/info.php

<?php
 phpinfo();
?>

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

Maintenant, vous pouvez visiter cette page dans votre navigateur Web en visitant le nom de domaine ou l’adresse IP publique de votre serveur suivi de + / info.php +:

http:///info.php

Vous devriez voir une page Web générée par PHP avec des informations sur votre serveur:

image: https: //assets.digitalocean.com/articles/lemp_debian8/ZP3DpyX.png [informations de page PHP]

Si vous voyez une page qui ressemble à ceci, vous avez configuré le traitement PHP avec Nginx avec succès.

Après avoir vérifié que Nginx rend la page correctement, il est préférable de supprimer le fichier que vous avez créé, car cela peut en réalité donner aux utilisateurs non autorisés des indications sur votre configuration susceptibles de les aider à tenter leur chance.

Pour l’instant, supprimez le fichier en tapant:

sudo rm /var/www/html/info.php

Vous pouvez toujours régénérer ce fichier si vous en avez besoin plus tard.

Conclusion

Vous devriez maintenant avoir une pile LEMP configurée sur votre serveur Debian. Cela vous donne une base très flexible pour servir du contenu Web à vos visiteurs.