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

De Get Docs
Aller à :navigation, rechercher

Introduction

La pile logicielle LEMP est un groupe de logiciels qui peuvent être utilisés pour servir des pages Web dynamiques et des applications Web. Il s'agit d'un acronyme qui décrit un système d'exploitation Linux, avec un serveur Web Nginx. Les données backend 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 en utilisant les 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 Configuration initiale du serveur avec Debian 9.

Étape 1 - Installation du serveur Web Nginx

Afin d'afficher les pages Web 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 dépôts de paquets par défaut de Debian. Cela signifie que nous pouvons utiliser la suite de gestion de packages 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 package local. On peut alors installer le serveur :

sudo apt update
sudo apt install nginx

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

Si le pare-feu ufw est en cours d'exécution, vous devrez autoriser les connexions à Nginx. Vous devez activer le profil le plus restrictif qui autorisera toujours le trafic que vous souhaitez. Comme nous n'avons pas encore configuré SSL pour notre serveur, dans ce guide, nous n'aurons qu'à 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é vers votre serveur et que vous ne connaissez pas l'adresse IP publique de votre serveur, vous pouvez la 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 chacun d'eux à 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://your_domain_or_IP

Si vous voyez la page ci-dessus, vous avez installé Nginx avec succès.

É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

Remarque : Dans Debian 9, un fork communautaire du projet MySQL - MariaDB - est empaqueté en tant que variante MySQL par défaut. Alors que MariaDB fonctionne bien dans la plupart des cas, si vous avez besoin de fonctionnalités trouvées uniquement dans MySQL d'Oracle, vous pouvez installer et utiliser des packages à partir d'un référentiel géré par les développeurs MySQL. Pour installer le serveur MySQL officiel, utilisez notre tutoriel Comment installer la dernière version de MySQL sur Debian 9.


Le logiciel de base de données MySQL est maintenant installé, mais sa configuration n'est pas terminée.

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

sudo mysql_secure_installation

Il vous sera demandé de saisir le mot de passe du compte MySQL root. Nous n'avons pas encore défini cela, alors appuyez simplement sur ENTER. Ensuite, il vous sera demandé si vous souhaitez définir ce mot de passe. Vous devez taper y puis définir un mot de passe root.

Pour le reste des questions posées par le script, vous devez appuyer sur y, suivi 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à qu'intervient PHP.

Étant donné que 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 package d'assistance supplémentaire qui permettra à PHP de communiquer avec notre backend de base de données MySQL. L'installation récupérera les fichiers de base PHP nécessaires pour que cela fonctionne.

Installez ensuite les packages 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 est de 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 d'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 nommerons le fichier de configuration et le répertoire d'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/your_domain

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

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

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

/etc/nginx/sites-available/votre_domaine

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

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

    server_name your_domain;

    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 des fichiers à partir de la racine Web que nous venons de créer. Il répondra uniquement aux demandes au nom fourni après server_name, 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 terminé de le personnaliser.

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

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

Cela indiquera à Nginx d'utiliser la configuration la prochaine fois qu'il sera rechargé. Tout d'abord, testez votre configuration pour les erreurs de syntaxe 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

Ensuite, nous allons créer un fichier dans notre nouveau répertoire racine Web pour tester le traitement PHP.

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

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

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

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

Tapez ou collez les lignes suivantes dans le nouveau fichier. Ceci est un code PHP valide qui renverra 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://your_domain/info.php

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

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 restitue correctement la page, il est préférable de supprimer le fichier que vous avez créé car il peut en fait donner aux utilisateurs non autorisés des indices sur votre configuration qui pourraient les aider à tenter de s'introduire.

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 ultérieurement.

Conclusion

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