Installer un LEMP sous debian 10
Introduction
Linux Nginx Mysql PHP (LEMP) est un regroupement de logiciels open source installer ensemble afin de permettre a votre serveur d'héberger des sites ou applications web.
Dans cette article, nous allons voir comment mettre en place un LEMP sous Debian 10 et ainsi permettre a vos différents sites ou applications de fonctionner sur votre serveur.
Pré-requis
Voici les différents pré-requis pour la mise en place d'un LEMP:
- Un serveur dédié ou virtuel
Vous pouvez retrouver nos différentes offres de serveur dédié ou virtuel sur ces liens:
Serveur dédié
Serveur virtuel
- Un système d'exploitation Linux (dans notre cas nous utiliserons le système d'exploitation Debian 10).
Installation de Nginx
Procéder à l'installation de Nginx via le gestionnaire de paquet apt:
apt-get update apt-get install nginx
Une fois cette installation réalisée, vous pouvez vérifier que l’installation s’est déroulé comme prévu en rentrant l’adresse IP public de votre serveur via un navigateur web.
Vous allez arriver sur la page par défaut de Nginx comme ci dessous:
SCREEN NGINX
Installation MySQL (MariaDB)
Maintenant que votre serveur web Nginx est fonctionnel, passer à l’installation d’un système de base de données.
Dans Debian 10, le paquet traditionnellement utilisé pour l’installation de MySQL (mysql-server) a été remplacé par default-mysql-server. Ce paquet fait référence à MariaDB qui est actuellement le serveur de base de données MySQL par défaut disponible sous Debian 10.
Cependant au lieu d’utiliser ce paquet, il est recommandé d’installer MariaDB en utilisant le paquet mariadb-server.
apt-get install mariadb-server
Une fois l’installation terminée, il est recommandé d’exécuter un script permettant de sécuriser votre système de base de données MariaDB. Démarrez ce script de sécurisation via la commande suivante :
mysql_secure_installation
Ce script vous guidera à travers plusieurs prompt ou vous pourrez apporter des modifications à votre configuration MariaDB.
Le premier prompt vous demande de renseigner le mot de passe root de votre base de données actuelle. Attention à ne pas confondre avec l’utilisateur root du système. Etant donné que vous venez d’installer le système, ce mot de passe sera vide. Tapez donc simplement sur entrée.
Le second prompt vous demande si vous souhaitez configurer un mot de passe root pour votre base de données. MariaDB utilisant une méthode d’authentification spécifique pour l’utilisateur root, vous n’avez pas besoin de définir de mot de passe pour ce dernier. Tapez donc N et appuyez sur entrée.
Une fois cela effectué, vous pouvez accepter ensuite toutes les valeurs par défaut en appuyant sur Y et sur entrée pour toutes les questions suivantes. Suite à cela, les utilisateurs anonymes et base de données de test seront supprimés, la connexion à distance de l’utilisateur root sera désactivé et le script rechargera ces nouvelles règles afin que MariaDB prenne immédiatement en compte vos modifications.
Une fois cette partie terminée, connectez-vous à MariaDB en utilisant la commande suivante :
mysql
Pour une sécurité accrue, il est préférable d'avoir des comptes d'utilisateurs dédiés pour chaque base de données, surtout si vous prévoyez d'avoir plusieurs bases de données hébergées sur votre serveur. Pour illustrer une telle configuration, nous allons créer une base de données nommée test_ikouladb et un utilisateur nommé test_user, mais vous pouvez remplacer ces noms par ce que vous souhaitez.
Pour créer une nouvelle base de données, exécutez la commande en étant connectez à MariaDB:
CREATE DATABASE test_ikouladb;
Créer ensuite un utilisateur et accorder leur tous les privilèges sur la base de données créé précédemment. Cette commande permet également de définir le mot de passe de cet utilisateur :
GRANT ALL PRIVILEGES ON test_ikouladb.* TO 'test_user' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON test_ikouladb.* TO 'test_user'@'localhost' IDENTIFIED BY 'password';
Vider les privilèges pour vous assurer qu’il soit correctement rechargé dans votre configuration :
FLUSH PRIVILEGES ;
Vous pouvez tester si votre nouvel utilisateur dispose des autorisations appropriées en vous connectant à MariaDB en utilisant les informations de ce nouvel utilisateur :
mysql -u test_user -p
Une fois connecté avec l’utilisateur, vérifiiez que vous avez accès à la base de données test_ikouladb via cette commande :
show databases; MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test_ikouladb | +--------------------+ 2 rows in set (0.000 sec)
A ce stade, votre système de base de données est configuré, vous pouvez donc passer à l’installation de PHP.
Installation PHP
Une nouvelle fois, passez par le gestionnaire de paquet apt afin d’installer PHP sur votre serveur. Il est également recommandé d’inclure des paquets qui garantiront l’exécution de votre code PHP sur le serveur et permettre la communication avec votre base de données MariaDB :
apt-get install php-fpm php-mysql
Par défaut, la version de php installé par Debian 10 est php7.3. Vous avez maintenant installé vos composants PHP en version 7.3. Nous allons donc voir la configuration de Nginx afin d’utiliser ces composants.
Création vHost Nginx pour votre site ou application web
Le contenu par défaut de Nginx est situé dans le répertoire /var/www/html et utilise la configuration contenue dans le vhost par défaut situé dans /etc/nginx/sites-enabled/default. Nous allons créer un nouveau vhost pour tester votre environnement PHP. L’utilisation de différents vhost vont nous permettre de garder plusieurs sites web hébergés sur un seul serveur Nginx.
Créer donc un nouveau répertoire web racine pour votre domaine avec la commande suivante (ici nous prendrons le domaine montest.tech):
mkdir /var/www/montest.tech
Ouvrez ensuite un nouveau fichier de configuration pour votre nouveau vhost dans le répertoire sites-availables de Nginx :
vi /etc/nginx/sites-available/montest.tech
Voici la configuration utilisé dans notre exemple:
server { listen 80; root /var/www/montest.tech; index index.php index.html index.htm; server_name montest.tech; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; } # Fichiers de logs: error_log /var/log/nginx/montest.tech.error.log; access_log /var/log/nginx/montest.tech.access.log; }
Dans ce vhost Nginx, nous utilisons notre nom de domaine montest.tech pointant dans le répertoire racine /var/www/montest.tech. Vous pouvez maintenant utiliser la commande suivante pour activer votre vhost en créant un lien symbolique dans le répertoire sites-enabled de Nginx :
ln -s /etc/nginx/sites-available/montest.tech /etc/nginx/sites-enabled/montest.tech
Vous pouvez également si vous le souhaitez désactiver le site par défaut installé par Nginx en supprimant le lien symbolique dans sites-enabled :
rm /etc/nginx/sites-enabled/default
Pour vous assurez que votre fichier de configuration ne contient pas d’erreur vous pouvez utiliser la commande suivante :
nginx -t
Finalement, recharger la configuration de Nginx pour que vos différents changements soient bien pris en compte :
systemctl reload nginx
Votre site web est maintenant actif, cependant la racine de ce dernier est toujours vide. Dans la prochaine partie, vous allez créer un script PHP pour tester cette nouvelle configuration et confirmer que votre PHP est correctement installé sur votre serveur.
Tester le fonctionnement de PHP
Vous allez créer un script PHP de test simple pour confirmer que Nginx est capable de gérer et traiter les demandes de fichier PHP. Créer donc un nouveau fichier dans votre répertoire racine :
vi /var/www/montest.tech/info.php
Ajouter le code suivant afin de créer votre script de test :
<?php // Affiche toutes les informations, comme le ferait INFO_ALL phpinfo(); // Affiche uniquement le module d'information. // phpinfo(8) fournirait les mêmes informations. phpinfo(INFO_MODULES); ?>
Vous pouvez maintenant tester si votre serveur est capable d’afficher correctement le contenu généré par ce script PHP. Pour l’essayer visiter l’une des pages suivantes dans votre navigateur :
SCREEN INFO NGINX
Cette page fournit les informations de base sur le PHP installé sur votre serveur. Ces informations sont utiles en cas de débug ou encore pour s’assurer que vos paramètres sont correctement appliqués. Si vous pouvez voir cette page dans votre navigateur sans problème alors votre installation de PHP fonctionne correctement.
Après avoir vérifié les informations de votre PHP via cette page, il est fortement recommandé de supprimer le fichier que vous venez de créer au préalable car ce dernier contient des informations sensibles sur votre environnement PHP et votre serveur Debian. Pour ce faire, vous pouvez utiliser la commande rm :
rm /var/www/montest.tech/info.php
Vous pouvez toujours recréer cette page si vous avez besoin d’accéder de nouveau aux informations ultérieurement.
Conclusion
Vous venez donc de voir dans cette FAQ, la mise en place d’une base pour servir des sites web et applications PHP à vos visiteurs en utilisant Nginx comme serveur web et MariaDB comme système de base de données.
Cet article vous a semblé utile ?
Activer l'actualisation automatique des commentaires