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 -y

J’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-client

Vous 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

Entrez le mot de passe de l'utilisateur root de MariaDB.

Installation de Nginx

Nginx est disponible en tant que paquet pour Debian Jessie que nous pouvons installer comme suit :

apt-get -y install nginx

Démarrez Nginx ensuite :

systemctl start nginx.service

Tapez 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 :

Page de démarrage de Debian Nginx.

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-fpm

PHP-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.conf

La 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.service

Ensuite, 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.service

Maintenant, créez le fichier PHP suivant dans le répertoire racine /var/www/html/ :

nano /var/www/html/info.php

Maintenant, nous appelons ce fichier dans un navigateur (par exemple http://192.168.1.100/info.php) :

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 php5

Choisissez 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-xsl

APCu 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-apcu

Maintenant, rechargez PHP-FPM :

systemctl reload php5-fpm.service

Maintenant, 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 :

Info PHP avec 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.service

Ensuite, 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.service

Image 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

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.