Le guide
  • 📖Qui sommes-nous ?
  • prévention
    • 📱Les dangers des réseaux sociaux
    • 🔑Qu'est ce qu'un ransomware
    • 👀C'est quoi le phishing ?
    • 🌐Que peut-on faire avec une IP ?
    • Comment se rétracter lors d'un achat (ecommerce) ?
  • urgence
    • ⚡Cybermalveillance
    • 🩹Kit d'aide digital
    • 🚨Infos d'urgences
    • 📘Dernier poste
  • HELP
    • Dont ask to ask
    • Une alternative ?
    • 🎓Apprendre
      • 🇬🇧 Apprendre autre chose
      • Apprendre la cybersécurité
      • Apprendre le développement
      • liens utiles cybersec
      • Apprendre la création de jeux
      • Apprendre l’intelligence artificiel
      • Sauvegarder sous toutes les formes
  • Projets
    • Blukeys (en cours)
    • Communautés
      • Quark
  • Français
    • Comment bien écrire une liste ?
  • Cybersécurité - Hack
    • Outils
      • Introduction au reverse engineering
      • Outils de Base (introduction au Pentesting et la cybersécurité)
      • BurpSuite - Intercepter toutes les requêtes HTTP
      • 🇬🇧 fabacab/awesome-cybersecurity-blueteam
      • 🇬🇧 fabionoth/awesome-cyber-security
      • 🇬🇧 Bypassing Cloudflare WAF with the origin server IP address | Detectify Blog
    • OWASP Top 10
    • On dit chiffrer plutôt que crypter
    • Web security academy - WSA
    • Write-up ctf
      • TryHackMe - Retro
    • SANS - Formations en cybersécurité
  • Développement logiciels
    • Par où commencer ?
    • Principes et bonnes pratiques
      • POO (Programmation Orienté Objet)
    • Langages informatique
      • CSS, SASS
      • HTML
      • L'algorithmique
      • La famille C
      • La famille JS, TS
      • La famille JVM
      • PHP
      • Python
      • Ruby
      • RUST
      • SQL
    • Technologies
      • C'est quoi le Cloud Native ?
      • Installation Sqlite3 avec NPM ou Yarn
      • Les IDE recommandés
      • Base de données
      • Développement web sur windows
    • Toute les documentations
  • Cryptomonnaie
    • Tips navigateur Brave | Laisser un pourboire
  • Infrastructure
    • Générateur de configuration SSL
  • Qualité ingénierie logicielle
    • CI/CD Dév
    • CI/CD d'une infra
    • 🇬🇧 Introduction Mangle enables you to run chaos engineering experiments
      • Overview
      • Mangle Deployment and Administration Guide
      • Mangle Users Guide
      • Mangle Troubleshooting Guide
      • Mangle Developers' Guide
      • Contributing to Mangle
      • mangle-administration
        • Supported Deployment Models
          • Advanced Cassandra Configuration
        • Admin Settings
      • sre-developers-and-users
        • Adding Endpoints
        • Injecting Faults
          • Infrastructure Faults
          • Application Faults
          • Custom Faults
        • Requests and Reports
      • troubleshooting-guide
        • Deployment Stage
        • Boot/Initialization Stage
        • Endpoint Addition Stage
        • Fault Injection Stage
  • Web
    • Inspecteur de code web
    • Liste des APIs publique ( en cours )
    • Apprendre le SEO naturel
    • Tips pour fusionner des communautés Discord
    • Qu’est-ce que le rp ?
    • Google Admin Toolbox HAR Analyzer
  • Couche haute
    • HUGO
      • 🇬🇧 Quick Start
      • Mettre en place son premier site sous Hugo
    • 🇬🇧 Deno Introduction with Practical Examples
    • React-native
    • 🇬🇧 Angular HttpClient v9/8
    • 🇬🇧 Compiler un front Angular variabilisé comme un chef
    • 🇬🇧 Applying Angular Runtime Configurations in Dockerized Environments | Hacker Noon
  • Gaming
    • Installer Shadow Linux et Chrome book
    • Comment choisir son alimentation d'ordi ?
  • Linux
    • Git
    • Bash
    • Bases de linux
    • Installation LEMP sur Ubuntu 20.04 Digitalocean
    • 🇬🇧 Wireguard VPN on Ubuntu 20.04
    • Comment installer et utiliser Docker sur Ubuntu 20.04 | DigitalOcean
    • Sécuriser son serveur Linux sous Ubuntu
    • Introduction à tmux (terminal multiplexer)
  • Bot
    • Héberger son bot Discord
  • setup
    • Rainmeter personnalise ton Win10
  • Virtualisation
    • 🇬🇧 Dockerize Angular 9 App With Nginx
    • 🇬🇧 How To Remove Docker Images, Containers, Networks & Volumes
  • Architecture
    • L'Art De Créer Des Diagrammes d'Architecture
  • Marketing
    • Tips sur les réseaux sociaux 2021
  • Gestions IT (pro/perso)
    • Méthodes Agiles
    • Savoir utiliser la méthode GTD (Getting Things Done)
    • Méthode QQCOQP : analyse et résolution des problèmes
  • Nouveautés
    • 🇬🇧 Netflix-technologies
      • How Netflix Scales its API with GraphQL Federation (Part 1)
      • How Netflix Scales its API with GraphQL Federation (Part 2)
  • Autres
    • A classer
  • How to install Windows 10 root certificates [EASY STEPS]
  • 💕Nous soutenons
    • 💻Azales
    • Papi Uzumaki
    • 💻Beau de l'aire
    • Toshi
    • 🛡️ FCC (French Communuty Cybersecurity)
    • 🛡️Sharpforce
Propulsé par GitBook
Sur cette page
  • Conditions préalables
  • Étape 1 - Installation de Nginx
  • Étape 2 – Installer MySQL
  • Étape 3 – Installer PHP
  • Étape 4 - Configuration de Nginx pour PHP
  • Étape 5 - Test de PHP avec Nginx
  • Tutoriels connexes

Cet article vous a-t-il été utile ?

Exporter en PDF
  1. Linux

Installation LEMP sur Ubuntu 20.04 Digitalocean

PrécédentBases de linuxSuivantComment installer et utiliser Docker sur Ubuntu 20.04 | DigitalOcean

Dernière mise à jour il y a 4 ans

Cet article vous a-t-il été utile ?

Dans ce guide de démarrage rapide, nous allons installer une pile LEMP sur un serveur Ubuntu 20.04.

Pour une version plus détaillée de ce tutoriel, avec plus d'explications sur chaque étape, veuillez vous référer à

Conditions préalables

Pour suivre ce guide, vous devrez avoir accès à un serveur Ubuntu 20.04 en tant qu'utilisateur sudo.

Étape 1 - Installation de Nginx

Mettez à jour le cache de votre gestionnaire de packages et installez ensuite Nginx avec :

sudo apt update
sudo apt install nginx

Une fois l'installation terminée, vous devrez ajuster les paramètres de votre pare-feu pour autoriser le trafic HTTP sur votre serveur. Exécutez la commande suivante pour autoriser l'accès externe sur le port 80 (HTTP) :

(Correction Léolios )

sudo ufw allow 'Nginx Full'

Avec l'ajout de la nouvelle règle de pare-feu, vous pouvez vérifier si le serveur est opérationnel en accédant à l'adresse IP publique ou au nom de domaine de votre serveur depuis votre navigateur web. Vous verrez une page comme celle-ci :

Page par défaut de Nginx

Étape 2 – Installer MySQL

Nous allons maintenant installer MySQL, un système de gestion de base de données populaire utilisé dans les environnements PHP.

Là encore, utilisez apt pour acquérir et installer ce logiciel :

sudo apt install mysql-server

Une fois l'installation terminée, il est recommandé d'exécuter un script de sécurité qui vient préinstallé avec MySQL. Lancez le script interactif en exécutant :

sudo mysql_secure_installation

Il vous sera demandé si vous souhaitez configurer le VALIDATE PASSWORD PLUGIN. Répondez Y pour oui, ou tout autre chose pour continuer sans activer. Si vous répondez « oui », il vous sera demandé de choisir un niveau de validation du mot de passe.

Votre serveur vous demandera ensuite de sélectionner et de confirmer un mot de passe pour l'utilisateur root de MySQL. Même si la méthode d'authentification par défaut pour l'utilisateur root de MySQL dispense de l'utilisation d'un mot de passe, même si celui-ci est défini, vous devez définir ici un mot de passe fort pour plus de sécurité.

Pour le reste des questions, appuyez sur Y et appuyez sur la touche ENTRÉE à chaque invite.

Étape 3 – Installer PHP

Pour installer les packages php-fpm et php-mysql, exécutez :

sudo apt install php-fpm php-mysql

Étape 4 - Configuration de Nginx pour PHP

Dans ce guide, nous allons mettre en place un domaine appelé your_domain, mais vous devez le remplacer par votre propre nom de domaine. 

Sur Ubuntu 20.04, Nginx dispose d'un bloc serveur activé par défaut qui est configuré pour servir des documents à partir d'un répertoire à /var/www/html. Même si cela fonctionne bien pour un seul site, cela peut devenir difficile à gérer si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, nous allons créer une structure de répertoire au sein de /var/www pour le site Web your_domain, en laissant /var/www/html en place comme répertoire par défaut à servir si une demande du client ne correspond à aucun autre site.

Créez le répertoire racine Web pour your_domain comme suit :

sudo mkdir /var/www/your_domain

Ensuite, attribuez la propriété du répertoire avec la variable d'environnement $USER qui fera référence à votre utilisateur actuel du système :

sudo chown -R $USER:$USER /var/www/your_domain

Ouvrez ensuite un nouveau fichier de configuration dans le répertoire sites-available de Nginx en utilisant votre éditeur de ligne de commande préféré. Ici, nous utiliserons nano :

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

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

/etc/nginx/sites-available/your_domain

server {
    listen 80;
    server_name your_domain www.your_domain;
    root /var/www/your_domain;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }

    location ~ /\.ht {
        deny all;
    }

}

Une fois que vous avez terminé vos modifications, enregistrez et fermez le fichier. Si vous utilisez nano, vous pouvez le faire en appuyant sur CTRL + X, puis y et ENTER pour confirmer.

Activez votre configuration en établissant un lien vers le fichier de configuration à partir du répertoire sites-enabled de Nginx :

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

Cela indiquera à Nginx d'utiliser la configuration lors du prochain rechargement. Vous pouvez vérifier si votre configuration contient des fautes de syntaxe en tapant :

sudo nginx -t

Si des erreurs sont signalées, revenez à votre fichier de configuration pour corriger son contenu avant de continuer.

Une fois que vous êtes prêt, rechargez Nginx pour appliquer les modifications :

sudo systemctl reload nginx

Votre nouveau site web est maintenant actif, mais le root web /var/www/your_domain est toujours vide. Créez un fichier index.html à cet endroit afin que nous puissions tester si le bloc de serveur fonctionne comme prévu :

nano /var/www/your_domain/index.html

Incluez le contenu suivant dans ce dossier :

/var/www/your_domain/index.html


  
    <span class="highlight">your_domain</span> website
  
  
    Hello World!

    This is the landing page of your_domain.
  

Maintenant, allez dans votre navigateur et accédez au nom de domaine ou à l'adresse IP de votre serveur, comme indiqué dans la directive server_name de votre fichier de configuration de bloc de serveur :

http://server_domain_or_IP

Vous verrez une page comme celle-ci :

Étape 5 - Test de PHP avec Nginx

Nous allons maintenant créer un script de test PHP pour confirmer que Nginx est capable de gérer et de traiter les demandes de fichiers PHP.

Créer un nouveau fichier nommé info.php à l'intérieur de votre dossier root web personnalisé : 

nano /var/www/your_domain/info.php

Cela ouvrira un fichier vierge. Ajoutez le contenu suivant dans le fichier :

/var/www/your_domain/info.php

<?php
phpinfo();

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Vous pouvez maintenant accéder à cette page dans votre navigateur Web en consultant le nom de domaine ou l'adresse IP publique que vous avez défini dans votre fichier de configuration Nginx, suivi de /info.php :

http://server_domain_or_IP/info.php

Vous verrez apparaître une page Web contenant des informations détaillées sur votre serveur :

Après avoir vérifié les informations pertinentes sur votre serveur PHP par le biais de cette page, il est préférable de supprimer le fichier que vous avez créé car il contient des informations sensibles sur votre environnement PHP et votre serveur Ubuntu. Vous pouvez utiliser rm pour supprimer ce fichier :

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

Tutoriels connexes

Voici des liens vers des guides plus détaillés relatifs à ce tutoriel :

Note : Au moment de la rédaction de ce document, la bibliothèque MySQL PHP native mysqlnd caching_sha2_authentification,la méthode d'authentification par défaut pour MySQL 8. Pour cette raison, lorsque vous créez des utilisateurs de base de données pour des applications PHP sur MySQL 8, vous devez vous assurer qu'ils sont configurés pour utiliser le mot de passe mysql_native_password à la place. Veuillez vous référer à pour apprendre comment le faire.

Nginx server block
PHPInfo Ubuntu 20.04

ne prend pas en charge
l'étape 6 de notre guide détaillé LEMP sur Ubuntu 20.04
Configuration initiale du serveur sur Ubuntu 20.04
Gestion des enregistrements DNS sur DigitalOcean
Comment installer Linux, Nginx, MySQL, PHP (pile LEMP) sur Ubuntu 20.04
Comment installer Linux, Nginx, MySQL, PHP (pile LEMP) sur Ubuntu 20.0