Installation serveur · 4 min read · Jan 23, 2026

Installation de Nginx avec PHP5 (et PHP-FPM) et support MySQL (LEMP) sur Debian Wheezy

Nginx (prononcé “engine x”) est un serveur HTTP gratuit, open-source et haute performance. Nginx est connu pour sa stabilité, son ensemble de fonctionnalités riche, sa configuration simple et sa faible consommation de ressources. Ce tutoriel montre comment vous pouvez installer Nginx sur un serveur Debian Wheezy avec le support de PHP5 (via PHP-FPM) et le support de MySQL (LEMP = Linux + nginx (prononcé “ e ngine x”) + MySQL + PHP).

Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

Dans ce tutoriel, j’utilise le nom d’hôte server1.example.com avec l’adresse IP 192.168.0.100. Ces paramètres peuvent différer pour vous, donc vous devez les remplacer là où cela est approprié.

2 Installation de MySQL 5

Pour installer MySQL, nous exécutons

apt-get install mysql-server mysql-client

On vous demandera de fournir un mot de passe pour l’utilisateur root de MySQL - ce mot de passe est valide pour l’utilisateur root@localhost ainsi que pour [email protected], donc nous n’avons pas besoin de spécifier un mot de passe root MySQL manuellement plus tard :

Nouveau mot de passe pour l’utilisateur “root” de MySQL : <– votremotdepasse Répétez le mot de passe pour l’utilisateur “root” de MySQL : <– votremotdepasse

3 Installation de Nginx

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

apt-get install nginx

Démarrez nginx ensuite :

/etc/init.d/nginx start

Tapez l’adresse IP ou le nom d’hôte de votre serveur web dans un navigateur (par exemple http://192.168.0.100), et vous devriez voir la page suivante :

Le répertoire racine par défaut de nginx sur Debian Wheezy est /usr/share/nginx/www.

4 Installation de PHP5

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

PHP-FPM est un processus démon (avec le script d’initialisation /etc/init.d/php5-fpm) qui exécute un serveur FastCGI sur le socket /var/run/php5-fpm.sock.

5 Configuration de nginx

La configuration de nginx se trouve dans /etc/nginx/nginx.conf que nous ouvrons maintenant :

vi /etc/nginx/nginx.conf

La configuration est facile à comprendre (vous pouvez en apprendre davantage ici : http://wiki.nginx.org/NginxFullExample et ici : http://wiki.nginx.org/NginxFullExample2)

Tout d’abord (c’est optionnel), ajustez le nombre de processus de travail et définissez le keepalive_timeout à une valeur raisonnable :

| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |

Les hôtes virtuels sont définis dans des conteneurs server {}. L’hôte virtuel par défaut est défini dans le fichier /etc/nginx/sites-available/default - modifions-le comme suit :

vi /etc/nginx/sites-available/default

| [...] server { listen 80; ## écoute pour ipv4; cette ligne est par défaut et implicite listen [::]:80 default_server ipv6only=on; ## écoute pour ipv6 root /usr/share/nginx/www; index index.php index.html index.htm; # Rendre le site accessible depuis http://localhost/ server_name localhost; 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/ /index.html; # Décommentez pour activer naxsi sur cet emplacement # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } # Seulement pour nginx-naxsi utilisé avec nginx-naxsi-ui : traiter les requêtes refusées #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # rediriger les pages d'erreur du serveur vers la page statique /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } # passer les scripts PHP au serveur FastCGI écoutant sur 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # REMARQUE : Vous devriez avoir "cgi.fix_pathinfo = 0;" dans php.ini # Avec php5-cgi seul : #fastcgi_pass 127.0.0.1:9000; # Avec php5-fpm : fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # refuser l'accès aux fichiers .htaccess, si le répertoire racine de Apache # coïncide avec celui de nginx # location ~ /\.ht { deny all; } } [...] |

Décommentez les deux lignes listen pour que nginx écoute sur le port 80 IPv4 et IPv6.

servername ; fait de ceci un hôte virtuel par défaut (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 index. root /usr/share/nginx/www; signifie que le répertoire racine est le répertoire /usr/share/nginx/www.

La partie importante pour PHP est le bloc location ~ .php$ {}. Décommentez-le pour l’activer. Veuillez noter que j’ai ajouté la ligne try_files $uri =404; pour prévenir les exploits de jour zéro (voir http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP et http://forum.nginx.org/read.php?2,88845,page=3).

Maintenant, enregistrez le fichier et rechargez nginx :

/etc/init.d/nginx reload

Ensuite, ouvrez /etc/php5/fpm/php.ini…

vi /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. Le fait de définir cela à 1 fera en sorte que PHP CGI corrige ses chemins pour se conformer à la spécification. Un réglage à zéro fait que PHP se comporte comme auparavant. 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 :

/etc/init.d/php5-fpm reload

Maintenant, créez le fichier PHP suivant dans le répertoire racine /usr/share/nginx/www :

vi /usr/share/nginx/www/info.php

| |

Maintenant, nous appelons ce fichier dans un navigateur (par exemple http://192.168.0.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 MySQL dans PHP5.

Share: X/Twitter LinkedIn

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

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