Comment installer LEMP Stack Nginx, MySQL, PHP sur Ubuntu 22.04. Dans ce guide, vous apprendrez à 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 Ubuntu 22.04.
Prérequis
- Accès root à votre serveur ou à un utilisateur avec des privilèges 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
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 port443
(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'
sudo ufw enable
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
Comme nous avons installé Nginx à l'étape 2, il devrait être démarré automatiquement et 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 Fri 2022-05-04 05:36:49 UTC; 44s ago Docs: man:nginx(8) Process: 10272 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCC> Process: 10273 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 10274 (nginx) Tasks: 3 (limit: 1151) Memory: 5.3M CPU: 35ms CGroup: /system.slice/nginx.service
Nous avons maintenant Nignx installé et configuré le pare-feu.
Étape 5 :Installez MySQL
Dans Ubuntu 22.04, MySQL 8 est inclus par défaut dans les référentiels Jammy Jellyfish, vous pouvez donc l'installer facilement en utilisant le apt install
commande.
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 Fri 2022-05-04 00:38:45 UTC; 11s ago Process: 13836 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, statu> Main PID: 13844 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1151) Memory: 351.4M CPU: 1.043s CGroup: /system.slice/mysql.service └─13844 /usr/sbin/mysqld
Vérifiez la version de MySQl à l'aide de la commande ci-dessous.
sudo mysql -V
Output mysql Ver 8.0.28-0ubuntu4 for Linux on x86_64 ((Ubuntu))
É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 :Installez PHP
Par défaut, Ubuntu 22.04 a le dernier référentiel PHP 8.1 ajouté. Vous pouvez donc installer PHP à l'aide de la commande suivante.
sudo apt install php8.1-fpm php8.1 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-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl php8.1-bcmath unzip -y
Une fois PHP installé, vous pouvez vérifier la version à l'aide de la commande suivante.
php -v
Output PHP 8.1.5 (cli) (built: Apr 7 2022 17:46:26) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.5, Copyright (c) Zend Technologies with Zend OPcache v8.1.5, Copyright (c), by Zend Technologies
É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.
sudo apt install python3-certbot-nginx
Maintenant que nous avons installé Certbot by Let's Encrypt pour Ubuntu 22.04, exécutez cette commande pour recevoir vos certificats.
sudo certbot --nginx --agree-tos --redirect -m [email protected] -d domainname.com -d www.domainname.com
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 savez maintenant comment installer la pile LEMP sur Ubuntu 22.04 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.