La stack LEMP
LEMP est l'acronyme de Linux, Nginx (prononcé "Engine-X"), MySQL et PHP. C'est une des configurations les plus populaires pour héberger des applications web modernes, dont WordPress.
Nginx est particulièrement apprécié pour :
- Sa performance : gère des milliers de connexions simultanées avec peu de ressources
- Sa faible empreinte mémoire : idéal pour les VPS avec peu de RAM
- Sa flexibilité : proxy inverse, équilibreur de charge, serveur de cache
Prérequis
- Un VPS sous Ubuntu 22.04 ou 24.04 (ce guide est adapté pour Ubuntu)
- Accès SSH avec un utilisateur sudo
- Pare-feu UFW configuré
1. Installer Nginx
Mettre à jour les paquets
sudo apt update && sudo apt upgrade -yInstaller Nginx
sudo apt install nginx -yDémarrer et activer Nginx
sudo systemctl start nginx sudo systemctl enable nginxNginx démarre automatiquement à chaque démarrage du serveur.
Configurer le pare-feu
Autorisez HTTP et HTTPS dans UFW :
sudo ufw allow 'Nginx Full'Cette commande autorise à la fois les ports 80 (HTTP) et 443 (HTTPS).
Vérifier l'installation
Dans votre navigateur, accédez à
http://votre-ip-vps. Vous devriez voir la page par défaut Nginx "Welcome to nginx!".En ligne de commande :
sudo nginx -v sudo systemctl status nginx
2. Installer MySQL
Installer MySQL Server
sudo apt install mysql-server -ySécuriser l'installation MySQL
sudo mysql_secure_installationCe script interactif vous demande de :
- Configurer le plugin VALIDATE PASSWORD (recommandé)
- Définir un mot de passe root MySQL
- Supprimer les utilisateurs anonymes (répondez
Y) - Désactiver la connexion root à distance (répondez
Y) - Supprimer la base de données de test (répondez
Y) - Recharger les tables de privilèges (répondez
Y)
Créer une base de données pour votre application
Connectez-vous à MySQL :
sudo mysql -u root -pCréez une base de données et un utilisateur dédié (remplacez les valeurs) :
CREATE DATABASE monsite_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'monsite_user'@'localhost' IDENTIFIED BY 'MotDePasseSecurise123!'; GRANT ALL PRIVILEGES ON monsite_db.* TO 'monsite_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
3. Installer PHP-FPM
Nginx ne traite pas nativement le PHP. PHP-FPM (FastCGI Process Manager) assure l'interface entre Nginx et PHP.
sudo apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
Vérifiez la version installée et démarrez le service :
php -v
sudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm
(Remplacez 8.3 par la version PHP installée sur votre système.)
4. Configurer un Virtual Host Nginx
Un virtual host (bloc serveur) définit la configuration Nginx pour un domaine spécifique.
Créer le répertoire du site
sudo mkdir -p /var/www/votredomaine.fr/public sudo chown -R www-data:www-data /var/www/votredomaine.fr sudo chmod -R 755 /var/www/votredomaine.frCréer une page de test
sudo nano /var/www/votredomaine.fr/public/index.htmlContenu :
<!DOCTYPE html> <html lang="fr"> <head><meta charset="UTF-8"><title>Mon Site</title></head> <body><h1>Bienvenue sur votredomaine.fr</h1></body> </html>Créer le bloc serveur Nginx
sudo nano /etc/nginx/sites-available/votredomaine.frContenu du fichier de configuration :
server { listen 80; listen [::]:80; server_name votredomaine.fr www.votredomaine.fr; root /var/www/votredomaine.fr/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }Activer le site et tester la configuration
sudo ln -s /etc/nginx/sites-available/votredomaine.fr /etc/nginx/sites-enabled/ # Tester la syntaxe Nginx sudo nginx -t # Recharger Nginx sudo systemctl reload nginx
5. Installer un certificat SSL avec Certbot
Installer Certbot
sudo apt install certbot python3-certbot-nginx -yObtenir le certificat SSL
sudo certbot --nginx -d votredomaine.fr -d www.votredomaine.frCertbot configure automatiquement Nginx pour HTTPS et met en place le renouvellement automatique.
Vérifier le renouvellement automatique
sudo certbot renew --dry-run
Optimiser Nginx pour la production
Éditez /etc/nginx/nginx.conf pour optimiser les performances :
worker_processes auto;
worker_connections 1024;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 1000;
client_max_body_size 50M;
keepalive_timeout 65;
Étapes suivantes
- Installer WordPress sur votre stack LEMP
- Configurer les sauvegardes VPS avec rsync
- Mettre en place la surveillance du serveur avec des outils comme Netdata ou Prometheus