Serveurs Web · 6 min read · Jan 23, 2026
Installation de Nginx avec PHP5 (et PHP-FPM) et support MySQL (LEMP) sur Ubuntu 14.04 LTS
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 Ubuntu 14.04 avec support PHP5 (via PHP-FPM) et support MySQL (LEMP = L inux + nginx (prononcé “ e ngine x”) + M ySQL + P HP).
Je ne garantis pas 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é.
J’exécute toutes les étapes de ce tutoriel avec des privilèges root, donc assurez-vous d’être connecté en tant que root :
sudo su
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 [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 MySQL “root” : <– votremotdepassemysqlroot
Répétez le mot de passe pour l’utilisateur MySQL “root” : <– votremotdepassemysqlroot
3 Installation de Nginx
Nginx est disponible en tant que paquet pour Ubuntu 14.04 que nous pouvons installer. Comme Apache2 est installé par défaut, nous allons d’abord le supprimer puis installer nginx :
service apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2
apt-get install nginx
Démarrez nginx ensuite :
service 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 Ubuntu 14.04 est /usr/share/nginx/html.
4 Installation de PHP5
Nous pouvons faire fonctionner PHP5 dans nginx via PHP-FPM (PHP-FPM (FastCGI Process Manager) est une implémentation alternative de PHP FastCGI 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 daemon (avec le script d’initialisation 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 plus 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; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; # Rendre le site accessible depuis http://localhost/ 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/ /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/html; } # 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 d'Apache # coïncide avec celui de nginx # location ~ \/\.ht { deny all; } } [...] |
Décommentez les deux lignes listen pour faire écouter nginx sur le port 80 IPv4 et IPv6.
servername ; fait de cela 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 d’index. root /usr/share/nginx/html; signifie que le répertoire racine est le répertoire /usr/share/nginx/html.
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 :
service 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. PHP's ; le comportement précédent é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 :
service php5-fpm reload
Maintenant, créez le fichier PHP suivant dans le répertoire racine /usr/share/nginx/html :
vi /usr/share/nginx/html/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.
6 Obtenir le support MySQL dans PHP5
Pour obtenir le support MySQL dans PHP, nous pouvons installer le paquet php5-mysql. Il est également judicieux d’installer d’autres modules PHP5 car vous pourriez en avoir besoin pour vos applications. Vous pouvez rechercher les modules PHP5 disponibles comme ceci :
apt-cache search php5
Choisissez ceux dont vous avez besoin et installez-les comme ceci :
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
APC est un cache d’opcode PHP gratuit et open pour le caching et l’optimisation du code intermédiaire PHP. 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.
APC peut être installé comme suit :
apt-get install php-apc
Maintenant, rechargez PHP-FPM :
service php5-fpm reload
Maintenant, rechargez http://192.168.0.100/info.php dans votre navigateur et faites défiler à nouveau jusqu’à la section des modules. Vous devriez maintenant trouver de nombreux nouveaux modules là, y compris le module MySQL :
7 Faire en sorte que PHP-FPM utilise une connexion TCP
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…
vi /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 :
php5-fpm reload
Ensuite, parcourez votre configuration nginx et tous vos hôtes virtuels et changez la ligne fastcgi_pass unix:/var/run/php5-fpm.sock; en fastcgi_pass 127.0.0.1:9000;, par exemple comme ceci :
vi /etc/nginx/sites-available/default
| [...] 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; } [...] |
Enfin, rechargez nginx :
service nginx reload
8 Scripts CGI/Perl
Si vous souhaitez servir des scripts CGI/Perl avec nginx, veuillez lire ce tutoriel : Servir des scripts CGI avec Nginx sur Debian Squeeze/Ubuntu 11.04
La méthode recommandée est d’utiliser fcgiwrap (chapitre 4).
9 Liens
- nginx : http://nginx.net/
- Wiki nginx : http://wiki.codemongers.com/Main
- PHP : http://www.php.net/
- PHP-FPM : http://php-fpm.org/
- MySQL : http://www.mysql.com/
- Ubuntu : http://www.ubuntu.com/
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.