Désactiver le préchargeur
Explorez, Apprenez et Maîtrisez

Documentation et Tutoriels - Hébergement Web Caramania.Ca

avec Nos Documentation et Tutoriels

Découvrez notre vaste bibliothèque de documentation et de tutoriels conçus pour vous aider à tirer le meilleur parti des services Caramania.Ca. Que vous soyez un débutant cherchant à configurer votre premier site web ou un utilisateur avancé désireux d'explorer des fonctionnalités plus complexes, nos guides pas à pas vous accompagneront à chaque étape. Simplifiez la gestion de vos services, trouvez des solutions rapides à vos problèmes, et approfondissez vos connaissances grâce à notre centre de ressources complet.

Documentation / Tutoriels Linux / Serveurs web / Installer Nginx avec PHP-FPM sur Ubuntu, Debian et AlmaLinux
Bahanos
09/01/2025
Débutant
20 minutes

Prérequis

  • Un serveur Ubuntu/Debian ou AlmaLinux
  • Accès root ou sudo

Nginx est un serveur web rapide et léger, idéal pour les sites à fort trafic. Combiné avec PHP-FPM, il offre d'excellentes performances pour les applications PHP comme WordPress.

1. Installer Nginx

Installation Nginx (Ubuntu/Debian)
apt update
apt install -y nginx

# Vérifier le statut
systemctl status nginx

# Tester dans le navigateur : http://VOTRE_IP
Installation Nginx (AlmaLinux/Rocky Linux)
dnf install -y nginx
systemctl enable --now nginx

# Ouvrir le pare-feu
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

# Vérifier le statut
systemctl status nginx

# Tester dans le navigateur : http://VOTRE_IP

2. Installer PHP-FPM

PHP 8.4 avec extensions courantes (Ubuntu/Debian)
# Ajouter le dépôt PHP (pour les dernières versions)
apt install -y software-properties-common
add-apt-repository ppa:ondrej/php -y
apt update

# Installer PHP 8.4 FPM avec extensions
apt install -y php8.4-fpm php8.4-cli php8.4-common \
    php8.4-mysql php8.4-pgsql php8.4-sqlite3 \
    php8.4-curl php8.4-gd php8.4-mbstring \
    php8.4-xml php8.4-zip php8.4-bcmath \
    php8.4-intl php8.4-redis php8.4-imagick

# Vérifier
php -v
systemctl status php8.4-fpm
PHP 8.4 avec extensions courantes (AlmaLinux/Rocky Linux)
# Installer EPEL et Remi
dnf install -y epel-release
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf module reset php -y
dnf module enable php:remi-8.4 -y

# Installer PHP-FPM avec extensions
dnf install -y php-fpm php-cli php-common \
    php-mysqlnd php-pgsql php-sqlite3 \
    php-curl php-gd php-mbstring \
    php-xml php-zip php-bcmath \
    php-intl php-redis php-imagick

# Activer et démarrer PHP-FPM
systemctl enable --now php-fpm

# Vérifier
php -v
systemctl status php-fpm

3. Configurer Nginx pour PHP

Configuration du site par défaut (Ubuntu/Debian)
# Sauvegarder la config originale
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

# Créer la nouvelle config
cat > /etc/nginx/sites-available/default << 'EOF'
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    
    root /var/www/html;
    index index.php index.html index.htm;
    
    server_name _;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    
    location ~ /\.ht {
        deny all;
    }
    
    # Cache des fichiers statiques
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|txt)$ {
        expires 7d;
        add_header Cache-Control "public, no-transform";
    }
}
EOF
Configuration du site par défaut (AlmaLinux/Rocky Linux)
# Créer la config dans conf.d
cat > /etc/nginx/conf.d/default.conf << 'EOF'
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    
    root /usr/share/nginx/html;
    index index.php index.html index.htm;
    
    server_name _;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    
    location ~ /\.ht {
        deny all;
    }
    
    # Cache des fichiers statiques
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|txt)$ {
        expires 7d;
        add_header Cache-Control "public, no-transform";
    }
}
EOF
Chemin du socket PHP-FPM

Sur Ubuntu/Debian, le socket est /var/run/php/php8.4-fpm.sock. Sur AlmaLinux/Rocky Linux, le socket est /run/php-fpm/www.sock.

4. Tester et redémarrer

Appliquer la configuration
# Tester la configuration
nginx -t

# Redémarrer Nginx
systemctl reload nginx

5. Créer une page de test PHP

Page info.php
echo '<?php phpinfo();' > /var/www/html/info.php

# Tester : http://VOTRE_IP/info.php
# IMPORTANT : Supprimez ce fichier après le test !
# rm /var/www/html/info.php
Sécurité

Supprimez toujours info.php après le test ! Il révèle des informations sensibles sur votre serveur.

6. Créer un virtual host

Configuration pour monsite.com (Ubuntu/Debian)
cat > /etc/nginx/sites-available/monsite.com << 'EOF'
server {
    listen 80;
    listen [::]:80;
    
    server_name monsite.com www.monsite.com;
    root /var/www/monsite.com;
    index index.php index.html;
    
    access_log /var/log/nginx/monsite.com.access.log;
    error_log /var/log/nginx/monsite.com.error.log;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
    }
    
    location ~ /\.ht {
        deny all;
    }
}
EOF

# Créer le dossier du site
mkdir -p /var/www/monsite.com
chown -R www-data:www-data /var/www/monsite.com

# Activer le site
ln -s /etc/nginx/sites-available/monsite.com /etc/nginx/sites-enabled/

# Tester et recharger
nginx -t && systemctl reload nginx
Configuration pour monsite.com (AlmaLinux/Rocky Linux)
cat > /etc/nginx/conf.d/monsite.com.conf << 'EOF'
server {
    listen 80;
    listen [::]:80;
    
    server_name monsite.com www.monsite.com;
    root /var/www/monsite.com;
    index index.php index.html;
    
    access_log /var/log/nginx/monsite.com.access.log;
    error_log /var/log/nginx/monsite.com.error.log;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    
    location ~ /\.ht {
        deny all;
    }
}
EOF

# Créer le dossier du site
mkdir -p /var/www/monsite.com
chown -R nginx:nginx /var/www/monsite.com

# Tester et recharger
nginx -t && systemctl reload nginx

7. Optimiser PHP-FPM

Configuration PHP-FPM (Ubuntu/Debian)
nano /etc/php/8.4/fpm/pool.d/www.conf

# Paramètres recommandés pour un serveur avec 4 Go de RAM :
# pm = dynamic
# pm.max_children = 50
# pm.start_servers = 10
# pm.min_spare_servers = 5
# pm.max_spare_servers = 20
# pm.max_requests = 500

# Redémarrer PHP-FPM
systemctl restart php8.4-fpm
Configuration PHP-FPM (AlmaLinux/Rocky Linux)
nano /etc/php-fpm.d/www.conf

# Paramètres recommandés pour un serveur avec 4 Go de RAM :
# pm = dynamic
# pm.max_children = 50
# pm.start_servers = 10
# pm.min_spare_servers = 5
# pm.max_spare_servers = 20
# pm.max_requests = 500

# Redémarrer PHP-FPM
systemctl restart php-fpm

8. Configuration PHP

php.ini pour production (Ubuntu/Debian)
nano /etc/php/8.4/fpm/php.ini

# Paramètres recommandés :
# upload_max_filesize = 64M
# post_max_size = 64M
# memory_limit = 256M
# max_execution_time = 300
# max_input_vars = 3000
# date.timezone = America/Montreal

systemctl restart php8.4-fpm
php.ini pour production (AlmaLinux/Rocky Linux)
nano /etc/php.ini

# Paramètres recommandés :
# upload_max_filesize = 64M
# post_max_size = 64M
# memory_limit = 256M
# max_execution_time = 300
# max_input_vars = 3000
# date.timezone = America/Montreal

systemctl restart php-fpm

9. SSL avec Let's Encrypt

Installer Certbot (Ubuntu/Debian)
apt install -y certbot python3-certbot-nginx

# Obtenir un certificat
certbot --nginx -d monsite.com -d www.monsite.com

# Renouvellement automatique (déjà configuré)
certbot renew --dry-run
Installer Certbot (AlmaLinux/Rocky Linux)
dnf install -y certbot python3-certbot-nginx

# Obtenir un certificat
certbot --nginx -d monsite.com -d www.monsite.com

# Renouvellement automatique (déjà configuré)
certbot renew --dry-run

Commandes utiles

Gestion Nginx et PHP (Ubuntu/Debian)
# Nginx
systemctl status nginx
systemctl reload nginx    # Recharger la config
systemctl restart nginx   # Redémarrer
nginx -t                  # Tester la config

# PHP-FPM
systemctl status php8.4-fpm
systemctl restart php8.4-fpm

# Logs
tail -f /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
Gestion Nginx et PHP (AlmaLinux/Rocky Linux)
# Nginx
systemctl status nginx
systemctl reload nginx    # Recharger la config
systemctl restart nginx   # Redémarrer
nginx -t                  # Tester la config

# PHP-FPM
systemctl status php-fpm
systemctl restart php-fpm

# Logs
tail -f /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
Stack LEMP prête !

Votre serveur Nginx + PHP est maintenant configuré. Vous pouvez installer WordPress, Laravel ou toute autre application PHP.

💬 Écrivez-nous sur Messenger !