Wiki Gerfon

web

Installer Nginx sur Debian 13

Procédure complète : installation de Nginx, mise en place d’un site et couplage avec PHP-FPM.

🏷️ Versions au moment de la rédaction : Nginx 1.26.3 et PHP 8.4 (paquets officiels Debian 13).


📋 Prérequis

sudo apt update && sudo apt full-upgrade -y

1️⃣ Installation de Nginx

sudo apt install nginx -y

Activation au démarrage et démarrage du service :

sudo systemctl enable --now nginx
sudo systemctl status nginx

✅ Vérification rapide dans le navigateur ou en CLI :

curl -I http://localhost

Vous devez voir HTTP/1.1 200 OK et l’en-tête Server: nginx.

🔥 Pare-feu (si UFW est utilisé)

sudo apt install ufw -y
sudo ufw allow 'Nginx Full'
sudo ufw enable

2️⃣ Structure des fichiers de configuration

Debian organise Nginx ainsi :

Chemin Rôle
/etc/nginx/nginx.conf Configuration principale 🧠
/etc/nginx/sites-available/ Sites définis (brouillons) 📁
/etc/nginx/sites-enabled/ Sites activés (liens symboliques) 🔗
/etc/nginx/conf.d/ Snippets globaux additionnels 🧩
/var/log/nginx/ Logs access/error 📜

3️⃣ Créer un site (server block)

sudo mkdir -p /var/www/monsite
sudo chown -R www-data:www-data /var/www/monsite

Créer le fichier /etc/nginx/sites-available/monsite.conf :

server {
    listen 80;
    listen [::]:80;
    server_name www.monsite.fr;

    root /var/www/monsite;
    index index.php index.html;

    access_log /var/log/nginx/monsite.fr-access.log;
    error_log  /var/log/nginx/monsite.fr-error.log;

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

Activer le site et désactiver le site par défaut :

sudo ln -s /etc/nginx/sites-available/monsite.conf /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx

🧪 nginx -t teste la syntaxe avant tout rechargement — un réflexe à garder à chaque modification !


4️⃣ Installer et connecter PHP-FPM

sudo apt install php-fpm php-common -y
sudo systemctl enable --now php8.4-fpm

Adapter le server{} du site pour router les .php vers PHP-FPM via socket Unix (plus rapide que TCP) :

server {
    listen 80;
    listen [::]:80;
    server_name www.monsite.fr;

    root /var/www/monsite;
    index index.php index.html;

    access_log /var/log/nginx/monsite.fr-access.log;
    error_log  /var/log/nginx/monsite.fr-error.log;

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

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

    location ~ /\.ht {
        deny all;
    }
}
sudo nginx -t && sudo systemctl reload nginx

📌 Vérifiez le nom exact du socket avec ls /run/php/ — il varie selon la version de PHP installée.


5️⃣ 🔐 Bonus : activer HTTPS avec Certbot

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d monsite.fr -d www.monsite.fr

Certbot ajuste automatiquement le server{} et programme le renouvellement 🔁.


6️⃣ ✅ Checklist finale

sudo tail -f /var/log/nginx/error.log

🎉 Nginx est installé, connecté à PHP-FPM, et son cache FastCGI accélère les réponses dynamiques !

↑