Serveur Web · 6 min read · Dec 27, 2025
Installation de Nginx Avec PHP5 (Et PHP-FPM) Et Support MySQL (LEMP) Sur Ubuntu 12.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 12.04 LTS 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 si nécessaire.
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 su2 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 “root” de MySQL : <– votremotdepasse Répéter le mot de passe pour l’utilisateur “root” de MySQL : <– votremotdepasse
3 Installation de Nginx
Nginx est disponible en tant que paquet pour Ubuntu 12.04 que nous pouvons installer comme suit :
apt-get install nginxDémarrez nginx ensuite :
/etc/init.d/nginx startTapez 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 document root par défaut de nginx sur Ubuntu 12.04 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 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-fpmPHP-FPM est un processus daemon (avec le script d’initialisation /etc/init.d/php5-fpm) qui exécute un serveur FastCGI sur le port 9000.
5 Configuration de nginx
La configuration de nginx se trouve dans /etc/nginx/nginx.conf que nous ouvrons maintenant :
vi /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 (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 {}. Le vhost 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 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 _; location / { # Première tentative de servir la requête en tant que fichier, puis # en tant que répertoire, puis revenir à index.html try_files $uri $uri/ /index.html; # Décommenter pour activer naxsi sur cet emplacement # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; deny all; } # Seulement pour nginx-naxsi : traiter les requêtes refusées #location /RequestDenied { # Par exemple, retourner un code d'erreur #return 418; #} #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)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } # refuser l'accès aux fichiers .htaccess, si le document root 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 ceci un vhost par défaut catchall (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 document root 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). Alternativement, si vous ne souhaitez pas utiliser la ligne try_files $uri =404;, vous pouvez définir cgi.fix_pathinfo = 0; dans /etc/php5/fpm/php.ini (n’oubliez pas de recharger PHP-FPM ensuite).
Maintenant, enregistrez le fichier et rechargez nginx :
/etc/init.d/nginx reloadMaintenant, créez le fichier PHP suivant dans le document root /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’y est pas listé, 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 quelques autres modules PHP5 car vous pourriez en avoir besoin pour vos applications. Vous pouvez rechercher les modules PHP5 disponibles comme ceci :
apt-cache search php5Choisissez 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-xslXcache est un cache d’opcode PHP gratuit et open pour mettre en cache et optimiser le code intermédiaire PHP. Il est similaire à d’autres caches d’opcode PHP, tels que eAccelerator et APC. Il est fortement recommandé d’en avoir un installé pour accélérer votre page PHP.
Xcache peut être installé comme suit :
apt-get install php5-xcacheMaintenant, rechargez PHP-FPM :
/etc/init.d/php5-fpm reloadMaintenant, rechargez http://192.168.0.100/info.php dans votre navigateur et faites défiler vers le bas jusqu’à la section des modules à nouveau. Vous devriez maintenant trouver beaucoup de nouveaux modules là-bas, y compris le module MySQL :

7 Faire Utiliser PHP-FPM Un Socket Unix
Par défaut, PHP-FPM écoute sur le port 9000 sur 127.0.0.1. Il est également possible de faire utiliser à PHP-FPM un socket Unix, ce qui évite la surcharge 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 = 127.0.0.1:9000 listen = /tmp/php5-fpm.sock [...] |
Ensuite, rechargez PHP-FPM :
/etc/init.d/php5-fpm reloadEnsuite, parcourez votre configuration nginx et tous vos vhosts et changez la ligne fastcgi_pass 127.0.0.1:9000; en fastcgi_pass unix:/tmp/php5-fpm.sock;, par exemple comme ceci :
vi /etc/nginx/sites-available/default| [...] location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } [...] |
Enfin, rechargez nginx :
/etc/init.d/nginx reload8 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/
À Propos de l’Auteur
Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le responsable principal de HowtoForge (depuis 2005) et l’un des développeurs principaux d’ISPConfig (depuis 2000). Il a également contribué au livre O’Reilly “Administration Système Linux”.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.