Procédure d'installation de PHP, MariaDB et NGINX sur un serveur Ubuntu. Protéger votre domain en Installant vos certificats de sécurité avec Let's Encrypt.
LEMP fait référence à “Linux, Nginx, MariaDB et PHP”. Il est a noté que le “E” fait référence à la prononciation de NGINX “Engine-X”.
NGINX est un serveur Web rapide, asynchrone et peu coûteux en ressources. Il remplace rapidement le serveur Web Apache. C’est lui qui traîtera principalement toutes les requêtes Web afin de retourner les fichiers statiques tels que JavaScript, CSS et images. Il invoquera alors une instance de PHP par l’entremise de PHP-FPM (FastCGI Process Manager).
En ce qui concerne MariaDB et MySQL, les deux sont très similaires et vous ne verrez probablement pas de différence quant à son utilisation. Sommairement, MariaDB a été créé en 2008 et son code ouvert provient de MySQL avant l’achat de ce dernier par JAVA. Pour en savoir plus, vous pouvez lire les références à la fin de mon article!
Avec ce bref aperçu, passons maintenant à l’action.
Installer NGINX, MariaDB, PHP, PHP-FPM
Voici comment installer les services de base.
Sécuriser MariaDB
Nous allons nous connecter au service de MariaDB pour créer un nouvel utilisateur, une nouvelle base de donnée et donner les privilèges de l’utilisateur envers la base de données. Recharger la table des privilèges étant donné que nous les avons modifié.
Maintenant que nous avons un nouvel utilisateur, nous pouvons sécurisé le service en utilisant l’outil “mysql_secure_installation”. Cet outil demandera un nouveau mot de passe pour l’utilisateur “root” du service et vous devrez accepter les questions subséquentes.
Sécuriser PHP-FPM
Voici une petite modification au fichier de configuration PHP-FPM afin qu’il accepte seulement les URIs duquel les fichiers existent sur le serveur. Ceci corriger une brèche de sécurité où que l’interpréteur PHP peut être trompé et ainsi exécuté du code non-désiré si le fichier PHP réquisitionné n’est pas présent sur le serveur.
Pour appliquer ce correctif, vous devez savoir quel version de PHP vous utiliser. Prenez seulement les 2 premiers chiffres représentant la version majeur “7” et la version mineur “4”, comme dans l’example suivant:
Remplacer “7.4” ce la commande suivante par votre version de PHP
Configuration de votre premier site web
Premièrement, nous devons créer un répertoire “website.com/public_html/”sur votre serveur pour détenir la structure de fichier web. Un répertoire “/var/www/html” est déjà présent sur Ubuntu pour recevoir de nouveaux projets HTML.
Écrire un simple fichier Hello World dans le fichier “index.php” qui testera du même coup si la connexion à la base de données est fonctionnel
Nous allons créer un fichier de configuration NGINX pour votre nouveau site web. Copier la configuration par défaut de NGINX pour le nouveau site. Modifier la configuration NGINX du nouveau site et remplacer la version “7.4” de php-fpm par votre version.
Activer la configuration NGINX en ajoutant un lien symbolique dans le répertoire /etc/nginx/sites-enabled/
Test your NGINX configuration
If successfull, reload NGINX configuration
Avec votre navigateur, accéder maintenant à L’URL de votre domaine. Vous devrez voir ceci:
Si vous n’avez pas changé le DNS de votre domaine afin qu’il pointe vers votre serveur, faites-le maintenant. En attendant la propagation DNS, vous pouvez imité votre test en utilisant la commande “cURL” depuis votre serveur.
En résumé
Nous avons installé NGINX, PHP, PHP-FPM, MariaDB et servir un fichier PHP par HTTP.
Il est a noté que le répertoire web est la propriété de l’utilisateur “root” et sera prochainement corrigé pour être détenu par l’utilisateur et le groupe “www-data”, qui vient par défaut avec ubuntu.
Mais avant toute chose, nous voulons sécurisé l’accès au domaine en ajoutant un certificat SSL avec Let’s Encrypt.
Références
- https://www.linode.com/docs/guides/how-to-install-the-lemp-stack-on-ubuntu-18-04/
- https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/?highlight=pitfalls#passing-uncontrolled-requests-to-php
- https://www.php.net/manual/en/install.fpm.php
- https://www.stackscale.com/blog/php-fpm-high-traffic-websites/
- https://kinsta.com/blog/mariadb-vs-mysql/
- https://kinsta.com/blog/nginx-vs-apache/