GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer la pile LEMP Nginx, MySQL, PHP sur Debian 11

Comment installer LEMP Stack Nginx, MySQL, PHP sur Debian 11. Dans ce guide, vous apprendrez comment installer Nginx, MySQL 8.0 et PHP 8.1.

Vous installerez également certaines extensions PHP courantes et ajusterez les configurations PHP. Enfin, vous sécuriserez votre configuration avec Let's Encrypt SSL et configurerez la redirection HTTPS.

Cette configuration est testée sur Google Cloud, elle fonctionnera donc sur tous les services d'hébergement cloud comme AWS, Azure ou tout VPS ou tout serveur dédié exécutant Debian 11.

Prérequis

  • Accès root à votre serveur ou à un utilisateur sudo.
  • Domaine pointé vers l'IP de votre serveur pour installer Let'sEncrypt SSL

Étape 1 :Initialisation de la configuration

Commencez par mettre à jour les packages vers la dernière version disponible à l'aide de la commande suivante.

sudo apt update
sudo apt upgrade

Installez le paquet wget.

sudo apt install wget

Une fois que vous avez mis à jour la configuration, vous pouvez démarrer la configuration.

Étape 2 :Installer Nignx

Installez Nginx à l'aide de la commande suivante.

sudo apt install nginx

Cela installera nginx et toutes les dépendances requises.

Étape 3 :Configurer le pare-feu

Vous pouvez désormais configurer un pare-feu non compliqué (UFW) avec Nginx pour autoriser l'accès public sur les ports Web par défaut pour HTTP et HTTPS

sudo ufw app list

Vous verrez toutes les applications répertoriées.

Output
Available applications:
   Nginx Full
   Nignx HTTP
   Nginx HTTPS
   OpenSSH
  • HTTP Nginx :Ce profil ouvre le port 80 (trafic Web normal et non chiffré)
  • Nginx complet :Ce profil ouvre les deux ports 80 (trafic Web normal et non chiffré) et le port 443 (trafic crypté TLS/SSL)
  • HTTPS Nginx :Ce profil ouvre uniquement le port 443 (trafic crypté TLS/SSL)
  • OpenSSH :Ce profil ouvre le port 22 pour l'accès SSH.

Si vous n'utilisez pas SSL, vous devez activer uniquement le profil HTTP Nginx.

Nous allons maintenant activer Nginx Full.

sudo uff allow OpenSSH
sudo ufw allow 'Nginx Full'

Avec cette commande, vous pouvez afficher l'état d'UFW.

sudo ufw status

Vous verrez la sortie comme suit.

Output
Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 OpenSSH                    ALLOW       Anywhere                  
 Nginx Full (v6)            ALLOW       Anywhere (v6)             
 OpenSSH (v6)               ALLOW       Anywhere (v6)

Étape :4 Vérifier l'installation de Nginx

Une fois Nginx installé, il démarre automatiquement et est déjà opérationnel.

Chaque processus dans Nginx est géré avec le systemctl commande. Vérifiez l'état de Nginx avec la commande suivante.

sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-02-03 03:13:00 UTC; 6h ago
       Docs: man:nginx(8)
    Process: 11261 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code>
    Process: 11262 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, >
   Main PID: 11263 (nginx)
      Tasks: 3 (limit: 8622)

Nous avons maintenant Nignx installé et configuré le pare-feu.

Étape 5 :Installer MySQL

Pour ajouter le référentiel MySQL APT à votre système, accédez à la page de téléchargement du référentiel et téléchargez le dernier package de version à l'aide de la commande suivante.

wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb

Installez le package de version.

sudo apt install ./mysql-apt-config_0.8.22-1_all.deb

Nous allons installer MySQL version 8.0. Sélectionnez OK en appuyant sur Tab et appuyez sur Entrée (comme indiqué dans l'image ci-dessus).

Vous pouvez maintenant installer MySQL.

sudo apt update
sudo apt install mysql-server

Une fois l'installation terminée, le service MySQL démarrera automatiquement. Pour vérifier que le serveur MySQL est en cours d'exécution, tapez :

sudo service mysql status

Le résultat doit indiquer que le service est activé et en cours d'exécution :

 mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-02-02 06:12:30 UTC; 17s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
   Main PID: 101929 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 1148)
     Memory: 369.3M
        CPU: 805ms
     CGroup: /system.slice/mysql.service
             └─101929 /usr/sbin/mysqld

Feb 02 06:12:29 demo systemd[1]: Starting MySQL Community Server...
Feb 02 06:12:30 demo systemd[1]: Started MySQL Community Server.

Étape 6 :Sécuriser MySQL

L'installation de MySQL est livrée avec un script nommé mysql_secure_installation qui vous permet d'améliorer facilement la sécurité du serveur MySQL.

sudo mysql_secure_installation

Il vous sera demandé de configurer le VALIDATE PASSWORD PLUGIN qui est utilisé pour tester la force des mots de passe des utilisateurs MySQL et améliorer la sécurité.

Appuyez sur y si vous souhaitez configurer le plug-in de validation de mot de passe ou toute autre clé pour passer à l'étape suivante.

Il existe trois niveaux de politique de validation des mots de passe :faible, moyen et fort.

Entrez 2 pour une validation de mot de passe fort.

À l'invite suivante, il vous sera demandé de définir un mot de passe pour l'utilisateur racine MySQL.

Si vous configurez le plugin de validation de mot de passe, le script vous montrera la force de votre nouveau mot de passe. Tapez y pour confirmer le mot de passe.

Ensuite, il vous sera demandé de supprimer l'utilisateur anonyme, de restreindre l'accès de l'utilisateur root à la machine locale, de supprimer la base de données de test et de recharger les tables de privilèges. Vous devez répondre y à toutes les questions.

Étape 7 :Installer PHP

Ajouter le SURY PPA pour PHP 8.1

sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Vous pouvez maintenant ajouter le PPA aux packages de serveur.

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Mettez à jour les packages et installez PHP 8.1

sudo apt update

sudo apt install php php8.1-fpm php8.1-mysql php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y

Une fois PHP installé, vous pouvez vérifier la version à l'aide de la commande suivante.

php -v

Étape 8 :Configurer PHP

Maintenant, nous configurons PHP pour les applications Web en modifiant certaines valeurs dans php.ini fichier.

Pour PHP 8.1 avec Nginx le php.ini l'emplacement sera dans le répertoire suivant.

sudo nano /etc/php/8.1/fpm/php.ini

Tapez F6 pour la recherche dans l'éditeur et mettez à jour les valeurs suivantes pour de meilleures performances.

upload_max_filesize = 32M 
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000

Une fois que vous avez modifié vos paramètres PHP, vous devez redémarrer votre PHP-FPM pour que les modifications prennent effet.

sudo service php8.1-fpm restart

Étape 9 :Configurer Nginx

Désactivez la configuration Nginx par défaut.

sudo rm -rf /etc/nginx/sites-enabled/default
sudo rm -rf /etc/nginx/sites-available/default

Créez des répertoires de sites Web.

sudo mkdir -p /var/www/html/domainname/public

Configurez les autorisations correctes.

sudo chmod -R 755 /var/www/html/domainname
sudo chown -R www-data:www-data /var/www/html/domainname

Créez une nouvelle configuration de bloc de serveur.

sudo nano /etc/nginx/sites-available/domainname.conf

Collez les configurations suivantes dans le nouveau fichier.

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

    server_name yourdomainname.com www.yourdomainname.com;

    root /var/www/html/domainname/public;
    index index.html index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

Activez la nouvelle configuration.

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

Étape 10 :Installer Let's Encrypt SSL

HTTPS est un protocole de communication sécurisée entre un serveur (instance) et un client (navigateur Web). Grâce à l'introduction de Let's Encrypt, qui fournit des certificats SSL gratuits, HTTPS est adopté par tout le monde et donne également confiance à votre public.

Ici, nous allons installer Certbot pour installer Let'sEncrypt SSL en utilisant Snap.

sudo apt update
sudo apt install snapd -y
sudo snap install core
sudo snap refresh core

Installez l'outil Certbot.

sudo snap install --classic certbot

Configurez Certbot pour qu'il soit exécutable en tant que commande.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Nous avons maintenant installé Certbot pour installer Let's Encrypt pour Debian 11.

Exécutez la commande suivante pour installer vos certificats.

sudo certbot --nginx --agree-tos --redirect -m [email protected] -d domainname.com -d www.domainname.com

Sélectionnez l'option appropriée et appuyez sur Enter

Cette commande installera Free SSL, configurera la redirection vers HTTPS et redémarrera le serveur Nginx.

Étape 11 : Renouvellement du certificat SSL

Les certificats fournis par Let's Encrypt sont valides pendant 90 jours seulement, vous devez donc les renouveler souvent. Testons donc la fonctionnalité de renouvellement à l'aide de la commande suivante.

sudo certbot renew --dry-run

Cette commande testera l'expiration du certificat et configurera la fonction de renouvellement automatique.

Étape 12 :Tester la configuration

Une fois que vous avez effectué les étapes nécessaires, vous pouvez créer un nouveau fichier PHP de test dans votre répertoire Web.

sudo nano /var/www/html/domainname/public/info.php

Collez le code ci-dessous dans le fichier.

<?php phpinfo();

Enregistrez le fichier.

Maintenant, allez-y et vérifiez votre nom de domaine avec le info.php dans l'url (domainname.com/info.php ).

Vous verrez que votre domaine a été redirigé vers HTTPS et verrez les détails des informations PHP.

Boostez votre carrière d'administrateur Linux avec une formation complète et obtenez l'emploi de vos rêves.

Conclusion

Vous avez maintenant appris à installer la pile LEMP sur Debian 11 avec Let'sEncrypt SSL.

Merci pour votre temps. Si vous rencontrez un problème ou si vous avez des commentaires, veuillez laisser un commentaire ci-dessous.


Linux
  1. Comment installer la pile LEMP (Nginx, MySQL, PHP v7) sur CentOS 7

  2. Comment installer et configurer PHP et Nginx (LEMP) sur Debian 11

  3. Comment installer la pile LEMP Nginx, MySQL, PHP sur Debian 11

  4. Comment installer LEMP Stack Nginx, MySQL, PHP sur Ubuntu 22.04

  5. Comment installer la pile LEMP sur Debian 10 Buster

Comment installer Nginx, MySQL et PHP (LEMP) sur Ubuntu 20.04

Comment installer la pile LEMP sur Debian 11

Comment installer Nginx, MySQL, PHP (LEMP) sur Arch Linux

Comment installer Nginx, MySQL et PHP (LEMP) sur un serveur Ubuntu 15.04

Comment installer WordPress sur une pile Nginx LEMP avec Ubuntu 14.04

Comment installer la pile Nginx, MySQL, PHP (LEMP) sur un serveur cloud Debian 8.3