Save 15% on All Hosting Services

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer
01.11.2024

Comment installer Linux, Nginx, MySQL, PHP (pile LEMP) sur Ubuntu : Guide complet

La pile LEMP — un acronyme pour Linux, Nginx, MySQL et PHP — est l’une des configurations de serveur web les plus largement adoptées pour alimenter les sites web dynamiques et les applications web haute performance. En combinant la stabilité inébranlable de Linux, la vitesse foudroyante de Nginx, les capacités robustes de gestion des données de MySQL et la polyvalence de PHP, la pile LEMP offre un environnement d’hébergement puissant, évolutif et efficace en ressources.

Que vous déployiez un blog personnel, un site web professionnel ou une application d’entreprise complexe, une pile LEMP correctement configurée vous offre une meilleure scalabilité, des temps de chargement de page plus rapides et une gestion efficace de la mémoire — en particulier dans des conditions de trafic élevé.

Si vous avez besoin d’une base fiable pour exécuter cette pile, l’hébergement VPS d’AlexHost fournit des serveurs virtuels haute performance basés sur Linux avec accès root complet, vous donnant un contrôle total sur chaque composant de votre environnement LEMP. Associez cela à un certificat SSL pour sécuriser votre application dès le départ.

Dans ce guide complet, nous vous guiderons à travers chaque étape de l’installation et de la configuration de la pile LEMP complète sur un serveur Ubuntu — de la préparation initiale du système au test de votre environnement PHP en direct.

1. Prérequis

Avant de commencer, assurez-vous d’avoir les éléments suivants en place :

  • Un serveur exécutant Ubuntu 18.04, 20.04 ou 22.04 LTS
  • Un compte utilisateur avec privilèges sudo
  • Un accès SSH ou un accès direct au terminal de votre serveur
  • Un nom de domaine enregistré (facultatif mais recommandé pour les déploiements en production — vous pouvez en enregistrer un via l’enregistrement de domaine AlexHost)

> Conseil professionnel : Pour un environnement propre et isolé avec des ressources garanties, un plan d’hébergement VPS est le point de départ idéal pour tout déploiement LEMP.

2. Mettre à jour votre système

Avant d’installer des packages, il est essentiel d’actualiser votre index de packages et d’appliquer toutes les mises à jour en attente. Cela garantit que vous travaillez avec les versions les plus récentes et les plus sécurisées de tous les logiciels.

Ouvrez votre terminal et exécutez :

sudo apt update && sudo apt upgrade -y

Cette commande met à jour la base de données locale des packages et met à niveau tous les packages installés vers leurs dernières versions disponibles.

3. Installer Nginx

Nginx (prononcé « engine-x ») est un serveur web haute performance, piloté par événements et un proxy inverse. Contrairement à Apache, Nginx gère les connexions simultanées avec une consommation minimale de mémoire, ce qui en fait le choix préféré pour les environnements à trafic élevé.

Étape 1 : Installer Nginx

sudo apt install nginx -y

Étape 2 : Démarrer et activer Nginx

Après l’installation, démarrez le service Nginx et configurez-le pour qu’il se lance automatiquement au démarrage du système :

sudo systemctl start nginx
sudo systemctl enable nginx

Étape 3 : Vérifier que Nginx est en cours d’exécution

Vérifiez l’état du service pour confirmer que Nginx est actif :

sudo systemctl status nginx

Vous devriez voir une sortie indiquant que le service est actif (en cours d’exécution). Vous pouvez également ouvrir un navigateur web et accéder à l’adresse IP de votre serveur :

http://your_server_ip

Si Nginx s’exécute correctement, vous serez accueilli par la page par défaut « Bienvenue sur nginx ! ».

Étape 4 : Configurer le pare-feu (le cas échéant)

Si vous avez UFW (Uncomplicated Firewall) activé, autorisez le trafic HTTP et HTTPS :

sudo ufw allow 'Nginx Full'
sudo ufw status

4. Installer MySQL

MySQL est un système de gestion de base de données relationnelle (SGBDR) puissant et open-source qui sert de colonne vertébrale des données pour la plupart des applications web dynamiques, y compris WordPress, Joomla et les applications PHP personnalisées.

Étape 1 : Installer le serveur MySQL

sudo apt install mysql-server -y

Étape 2 : Sécuriser l’installation MySQL

Une fois installé, exécutez le script de renforcement de la sécurité intégré. Ce script vous aide à définir un mot de passe root fort, à supprimer les utilisateurs anonymes, à désactiver la connexion root à distance et à supprimer la base de données de test :

sudo mysql_secure_installation

Vous serez invité avec une série de questions. Les réponses recommandées pour un serveur de production sont :

InviteRéponse recommandée
Configurer le composant VALIDATE PASSWORD ?Oui
Niveau de politique de validation de mot de passe2 (FORT)
Supprimer les utilisateurs anonymes ?Oui
Interdire la connexion root à distance ?Oui
Supprimer la base de données de test ?Oui
Recharger les tables de privilèges ?Oui

Étape 3 : Vérifier que MySQL est en cours d’exécution

sudo systemctl status mysql

Étape 4 : Se connecter à MySQL (vérification facultative)

sudo mysql -u root -p

Entrez votre mot de passe root lorsque vous y êtes invité. Tapez exit pour quitter le shell MySQL.

5. Installer PHP

PHP (Hypertext Preprocessor) est le langage de script côté serveur qui traite le contenu dynamique et communique avec MySQL pour servir des pages web pilotées par les données. Lors de l’utilisation de Nginx, PHP est géré via PHP-FPM (FastCGI Process Manager), qui traite les demandes PHP indépendamment du serveur web pour améliorer les performances.

Étape 1 : Installer PHP-FPM et l’extension MySQL

sudo apt install php-fpm php-mysql -y

Vous pouvez également installer les extensions PHP couramment utilisées pour une compatibilité plus large des applications :

sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -y

Étape 2 : Configurer PHP-FPM pour la sécurité

Ouvrez le fichier de configuration PHP-FPM. Remplacez 8.1 par votre version PHP installée (vérifiez avec php -v) :

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

Localisez la directive cgi.fix_pathinfo et définissez-la sur 0 pour éviter une vulnérabilité de sécurité critique :

cgi.fix_pathinfo=0

> Pourquoi c’est important : Si cgi.fix_pathinfo est défini sur 1, PHP tentera d’exécuter le fichier le plus proche qu’il peut trouver si le fichier PHP demandé n’existe pas. Ce comportement peut être exploité par les attaquants pour exécuter du code arbitraire.

Enregistrez et fermez le fichier (Ctrl+X, puis Y, puis Enter).

Étape 3 : Redémarrer PHP-FPM

Appliquez les modifications de configuration en redémarrant le service PHP-FPM :

sudo systemctl restart php8.1-fpm

6. Configurer Nginx pour traiter PHP

Par défaut, Nginx ne sait pas comment gérer les fichiers PHP. Vous devez créer un bloc serveur (l’équivalent Nginx d’un hôte virtuel Apache) qui indique à Nginx de transmettre les demandes PHP à PHP-FPM pour traitement.

Étape 1 : Créer le répertoire racine web

Créez le répertoire où vos fichiers de site web seront stockés :

sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domain

Remplacez your_domain par votre nom de domaine réel ou un nom de projet descriptif.

Étape 2 : Créer un nouveau bloc serveur Nginx

Créez un nouveau fichier de configuration Nginx pour votre site :

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

Ajoutez le bloc de configuration suivant. Lisez attentivement les commentaires en ligne — ils expliquent ce que chaque directive fait :

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

    server_name your_domain www.your_domain;  # Replace with your domain or server IP

    root /var/www/your_domain;                # Document root — where your files live
    index index.php index.html index.htm;     # Default files to serve

    # Handle all requests; return 404 if file not found
    location / {
        try_files $uri $uri/ =404;
    }

    # Pass PHP scripts to PHP-FPM for processing
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # Adjust PHP version as needed
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Deny access to hidden files (e.g., .htaccess)
    location ~ /.ht {
        deny all;
    }
}

> Important : Remplacez your_domain par votre nom de domaine réel et ajustez php8.1-fpm.sock pour correspondre à votre version PHP installée.

Étape 3 : Activer le bloc serveur

Créez un lien symbolique de sites-available vers sites-enabled pour activer la configuration :

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

Pour éviter un problème potentiel de mémoire du bucket de hachage, il est également judicieux d’ouvrir la configuration Nginx principale et de s’assurer que la directive server_names_hash_bucket_size est décommentée :

sudo nano /etc/nginx/nginx.conf

Trouvez et décommentez :

server_names_hash_bucket_size 64;

Étape 4 : Tester la configuration Nginx

Avant de redémarrer Nginx, testez toujours la configuration pour les erreurs de syntaxe :

sudo nginx -t

Si la sortie affiche :

nginx: configuration file /etc/nginx/nginx.conf test is successful

Vous êtes prêt à continuer.

Étape 5 : Redémarrer Nginx

Appliquez toutes les modifications en redémarrant le service Nginx :

sudo systemctl restart nginx

7. Créer et tester un fichier PHP Info

Pour confirmer que Nginx transmet correctement les demandes PHP à PHP-FPM, créez un simple fichier de test PHP dans votre racine de document.

Étape 1 : Créer le fichier PHP Info

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

Ajoutez le contenu suivant :

<?php
phpinfo();
?>

Enregistrez et fermez le fichier.

Étape 2 : Accéder à la page PHP Info

Ouvrez votre navigateur web et accédez à :

http://your_domain/info.php

Ou, si vous n’avez pas encore configuré de domaine :

http://your_server_ip/info.php

Vous devriez voir la page d’informations PHP — un aperçu détaillé de votre installation PHP, des modules chargés, des valeurs de configuration et des variables d’environnement. Cela confirme que les trois composants (Nginx, PHP-FPM et MySQL) fonctionnent correctement ensemble.

Étape 3 : Supprimer le fichier PHP Info (étape de sécurité critique)

Une fois que vous avez confirmé que tout fonctionne, supprimez immédiatement le fichier info.php. Ce fichier expose des détails sensibles de la configuration du serveur qui pourraient être exploités par des acteurs malveillants :

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

8. Prochaines étapes : Renforcer et optimiser votre pile LEMP

Avec votre pile LEMP opérationnelle, considérez les étapes supplémentaires suivantes pour préparer votre serveur à la production :

Activer HTTPS avec un certificat SSL gratuit

Sécurisez votre site avec le chiffrement TLS/SSL en utilisant Certbot et Let’s Encrypt :

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domain

Sinon, explorez les certificats SSL d’AlexHost pour les certificats validés commercialement premium qui offrent des niveaux de confiance plus élevés pour les applications commerciales et de commerce électronique.

Optimiser les performances de Nginx

Ajoutez les directives suivantes à votre configuration Nginx pour améliorer les performances :

# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;

# Enable browser caching for static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

Configurer un utilisateur MySQL dédié

Évitez d’utiliser le compte root MySQL pour vos applications. Créez un utilisateur de base de données dédié avec des privilèges limités :

CREATE DATABASE your_app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;

Envisager un panneau de contrôle pour une gestion plus facile

Si vous préférez une interface graphique pour gérer votre pile LEMP, les hôtes virtuels

Save 15% on All Hosting Services

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer