Serveur Web · 7 min read · Jan 05, 2026
Installation de Nginx avec PHP (en tant que PHP-FPM) et MariaDB (LEMP) sur Debian 8
Ce tutoriel vous montrera l’installation du serveur web Nginx sur Debian 8. Nginx (prononcé “engine x”) est un serveur HTTP gratuit, open-source et haute performance. Nginx est connu pour sa stabilité, son riche ensemble de fonctionnalités, sa configuration simple et sa faible consommation de ressources. Ce tutoriel montre comment vous pouvez installer Nginx avec le support PHP (via PHP-FPM) et MariaDB comme remplacement de MySQL. Cette configuration est souvent appelée LEMP = L inux + nginx (prononcé “ e ngine x”) + M ySQL + P HP).
Remarque préliminaire
Dans ce tutoriel, j’utilise le nom d’hôte server1.example.com avec l’adresse IP 192.168.1.100. Ces paramètres peuvent différer pour vous, donc vous devez les remplacer là où cela est approprié. Vous devriez avoir un serveur Debian 8, j’utiliserai le serveur minimal Debian comme système de base pour ce tutoriel.
Mise à jour du système
Il est recommandé de mettre à jour les listes de paquets et d’installer toutes les mises à jour en attente avant de commencer la configuration de Nginx. Exécutez les commandes suivantes pour installer toutes les mises à jour en attente.
apt-get update
apt-get upgrade -yJ’utiliserai l’éditeur nano plus tard pour modifier les fichiers de configuration. Nano peut être installé avec cette commande :
apt-get -y install nano Installation de MariaDB (comme remplacement de MySQL)
Pour installer MariaDB, nous exécutons :
apt-get -y install mariadb-server mariadb-clientVous serez invité à fournir un mot de passe pour l’utilisateur root de MariaDB - ce mot de passe est valide pour l’utilisateur root@localhost ainsi que [email protected], donc nous n’avons pas à spécifier manuellement un mot de passe root de MariaDB plus tard :
Nouveau mot de passe pour l’utilisateur “root” de MariaDB : <– votremotdepasseSQLroot
Répétez le mot de passe pour l’utilisateur “root” de MariaDB : <– votremotdepasseSQLroot

Installation de Nginx
Nginx est disponible en tant que paquet pour Debian Jessie que nous pouvons installer comme suit :
apt-get -y install nginxDémarrez Nginx ensuite :
systemctl start nginx.serviceTapez l’adresse IP ou le nom d’hôte de votre serveur web dans un navigateur (par exemple http://192.168.1.100), et vous devriez voir la page suivante :

Le répertoire racine par défaut de Nginx sur Debian 8 est /var/www/html.
Installation de PHP
Nous pouvons faire fonctionner PHP5 dans Nginx via PHP-FPM (PHP-FPM (FastCGI Process Manager) est une implémentation PHP FastCGI alternative avec quelques fonctionnalités supplémentaires utiles pour des sites de toute taille, en particulier les sites plus fréquentés) que nous installons comme suit :
apt-get -y install php5-fpmPHP-FPM est un processus démon (avec le fichier d’unité systemd php5-fpm.service) qui exécute un serveur FastCGI sur le socket /var/run/php5-fpm.sock.
Configuration de nginx
La configuration de nginx se trouve dans /etc/nginx/nginx.conf que nous ouvrons maintenant :
nano /etc/nginx/nginx.confLa configuration est facile à comprendre (vous pouvez en apprendre plus ici : http://wiki.nginx.org/NginxFullExample et ici : http://wiki.nginx.org/NginxFullExample2)
Tout d’abord, définissez le keepalive_timeout à une valeur raisonnable comme 2 secondes :
[...]
keepalive_timeout 2;
[...]Les hôtes virtuels sont définis dans des conteneurs server {}. Le vhost par défaut est défini dans le fichier /etc/nginx/sites-available/default - modifions-le comme suit :
nano /etc/nginx/sites-available/default[...]
server {
listen 80 default_server;
listen [::]:80 default_server;
# Configuration SSL
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Certificats auto-signés générés par le paquet ssl-cert
# Ne les utilisez pas sur un serveur de production !
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Ajoutez index.php à la liste si vous utilisez PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# Première tentative de servir la requête en tant que fichier, puis
# en tant que répertoire, puis revenir à l'affichage d'un 404.
try_files $uri $uri/ =404;
}
# passer les scripts PHP au serveur FastCGI écoutant sur 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # Avec php5-cgi seul :
# fastcgi_pass 127.0.0.1:9000;
# Avec php5-fpm :
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# refuser l'accès aux fichiers .htaccess, si le répertoire racine
# d'Apache coïncide avec celui de nginx
#
location ~ /\.ht {
deny all;
}
}
[...]servername ; fait de ceci un vhost par défaut qui attrape tout (bien sûr, vous pouvez également spécifier un nom d’hôte ici comme www.example.com).
J’ai ajouté index.php à la ligne d’index. root /var/www/html; signifie que le répertoire racine est le répertoire /var/www/html.
La partie importante pour PHP est le bloc location ~ .php$ {}. Décommentez-le comme montré ci-dessus pour l’activer.
Maintenant, enregistrez le fichier et rechargez Nginx :
systemctl reload nginx.serviceEnsuite, ouvrez /etc/php5/fpm/php.ini…
nano /etc/php5/fpm/php.ini… et définissez cgi.fix_pathinfo=0 :
[...]
; cgi.fix_pathinfo fournit un support *réel* pour PATH_INFO/PATH_TRANSLATED pour CGI. Le comportement précédent de PHP était de définir PATH_TRANSLATED sur SCRIPT_FILENAME, et de ne pas comprendre
; ce qu'est PATH_INFO. Pour plus d'informations sur PATH_INFO, voir les spécifications CGI. Définir
; cela à 1 fera que PHP CGI corrigera ses chemins pour se conformer à la spécification. Un réglage
; de zéro fait que PHP se comporte comme avant. La valeur par défaut est 1. Vous devriez corriger vos scripts
; pour utiliser SCRIPT_FILENAME plutôt que PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]Rechargez PHP-FPM :
systemctl reload php5-fpm.serviceMaintenant, créez le fichier PHP suivant dans le répertoire racine /var/www/html/ :
nano /var/www/html/info.phpMaintenant, nous appelons ce fichier dans un navigateur (par exemple http://192.168.1.100/info.php) :

Comme vous le voyez, PHP5 fonctionne, et il fonctionne via FPM/FastCGI, comme indiqué dans la ligne Server API. Si vous faites défiler plus bas, vous verrez tous les modules qui sont déjà activés dans PHP5. MySQL n’est pas listé là, ce qui signifie que nous n’avons pas encore de support MariaDB / MySQL dans PHP.
Obtenir le support MySQL / MariaDB dans PHP
Pour obtenir le support MySQL dans PHP, nous pouvons installer le paquet php5-mysqlnd. C’est une bonne idée d’installer quelques autres modules PHP également car vous pourriez en avoir besoin pour vos applications. Vous pouvez rechercher les modules PHP disponibles comme ceci :
apt-cache search php5Choisissez ceux dont vous avez besoin et installez-les comme ceci :
apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xslAPCu est un cache d’opcode PHP gratuit et open-source pour mettre en cache et optimiser le code intermédiaire PHP qui étend le cache opcache de PHP. Il remplace le cache APC. et il est similaire à d’autres caches d’opcode PHP, tels que eAccelerator et Xcache. Il est fortement recommandé d’en avoir un installé pour accélérer votre page PHP.
APCu peut être installé comme suit :
apt-get install php5-apcuMaintenant, rechargez PHP-FPM :
systemctl reload php5-fpm.serviceMaintenant, rechargez http://192.168.1.100/info.php dans votre navigateur et faites défiler à nouveau jusqu’à la section des modules. Vous devriez maintenant trouver beaucoup de nouveaux modules là, y compris le module MySQL :

Faire en sorte que PHP-FPM utilise une connexion TCP (optionnel)
Par défaut, PHP-FPM écoute sur le socket /var/run/php5-fpm.sock. Il est également possible de faire en sorte que PHP-FPM utilise une connexion TCP. Pour ce faire, ouvrez /etc/php5/fpm/pool.d/www.conf…
nano /etc/php5/fpm/pool.d/www.conf… et faites en sorte que la ligne listen ressemble à ceci :
[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]Cela fera que PHP-FPM écoute sur le port 9000 sur l’IP 127.0.0.1 (localhost). Assurez-vous d’utiliser un port qui n’est pas utilisé sur votre système.
Ensuite, rechargez PHP-FPM :
systemctl reload php5-fpm.serviceEnsuite, parcourez votre configuration Nginx et tous vos vhosts et changez la ligne fastcgi_pass unix:/var/run/php5-fpm.sock; en fastcgi_pass 127.0.0.1:9000;, par exemple comme ceci :
nano /etc/nginx/sites-available/default[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # Avec php5-cgi seul :
# fastcgi_pass 127.0.0.1:9000;
# # Avec php5-fpm :
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
}
[...] Enfin, rechargez Nginx :
systemctl reload nginx.serviceImage de machine virtuelle
Ce tutoriel est disponible sous forme de machine virtuelle prête à l’emploi au format OVA / OVF pour les abonnés de Howtoforge. Le format VM est compatible avec VMWare et Virtualbox et probablement d’autres outils qui peuvent importer ce format. Vous pouvez trouver le lien de téléchargement dans le menu de droite en haut. Cliquez sur le nom du fichier pour commencer le téléchargement.
Les détails de connexion de la VM sont :
Connexion SSH
Nom d’utilisateur : root
Mot de passe : howtoforge
Connexion MariaDB
Nom d’utilisateur : root
Mot de passe : howtoforge
Veuillez changer les mots de passe après le premier démarrage.
La VM est configurée pour l’IP statique 192.168.1.100, l’IP peut être changée dans le fichier /etc/network/interfaces.
Liens
- nginx : http://nginx.net/
- Wiki nginx : http://wiki.codemongers.com/Main
- PHP : http://www.php.net/
- PHP-FPM : http://php-fpm.org/
- MariaDB : https://mariadb.org/
- Debian : http://www.debian.org/
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.