Installation Nginx · 5 min read · Jan 31, 2026
Installation de Nginx avec PHP5 (et PHP-FPM) et support MySQL sur CentOS 6.2 - Page 2
5 Installer PHP5
Nous pouvons faire fonctionner PHP5 dans nginx via PHP-FPM (PHP-FPM (FastCGI Process Manager) est une implémentation PHP FastCGI alternative avec des fonctionnalités supplémentaires utiles pour des sites de toute taille, en particulier les sites plus fréquentés). Nous pouvons installer php-fpm avec php-cli et quelques modules PHP5 comme php-mysql dont vous avez besoin si vous souhaitez utiliser MySQL depuis vos scripts PHP comme suit :
yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidyEnsuite, ouvrez /etc/php.ini et définissez cgi.fix_pathinfo=0 :
vi /etc/php.ini| [...] ; 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, consultez les spécifications cgi. 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://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
(Veuillez lire http://wiki.nginx.org/Pitfalls pour découvrir pourquoi vous devriez faire cela.)
En plus de cela, afin d’éviter des erreurs comme
[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): Il n'est pas sûr de se fier aux paramètres de fuseau horaire du système. Vous devez *utiliser* le paramètre date.timezone ou la fonction date_default_timezone_set(). Si vous avez utilisé l'une de ces méthodes et que vous obtenez toujours cet avertissement, vous avez probablement mal orthographié l'identifiant de fuseau horaire. Nous avons sélectionné 'Europe/Berlin' pour 'CEST/2.0/DST' à la place dans /usr/share/nginx/html/info.php à la ligne 2… dans /var/log/php-fpm/www-error.log lorsque vous appelez un script PHP dans votre navigateur, vous devez définir date.timezone dans /etc/php.ini :
| [...] [Date] ; Définit le fuseau horaire par défaut utilisé par les fonctions de date ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |
Vous pouvez découvrir le fuseau horaire correct pour votre système en exécutant :
cat /etc/sysconfig/clock[root@server1 nginx]# cat /etc/sysconfig/clock
ZONE="Europe/Berlin"
[root@server1 nginx]#Ensuite, créez les liens de démarrage système pour php-fpm et démarrez-le :
chkconfig --levels 235 php-fpm on
/etc/init.d/php-fpm startPHP-FPM est un processus de démon (avec le script d’initialisation /etc/init.d/php-fpm) qui exécute un serveur FastCGI sur le port 9000.
6 Configurer 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.codemongers.com/NginxFullExample et ici : http://wiki.codemongers.com/NginxFullExample2)
Tout d’abord (c’est optionnel), vous pouvez augmenter le nombre de processus de travail et définir le keepalive_timeout à une valeur raisonnable :
| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |
Les hôtes virtuels sont définis dans des conteneurs server {}. Modifions le vhost par défaut (dans /etc/nginx/nginx.conf également) comme suit :
| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/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; } # proxy les scripts PHP à Apache écoutant sur 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # passer les scripts PHP au serveur FastCGI écoutant sur 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 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; } } [...] |
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).
Dans la partie location /, j’ai ajouté index.php à la ligne d’index. root /usr/share/nginx/html; signifie que le document root est le répertoire /usr/share/nginx/html.
La partie importante pour PHP est le bloc location ~ .php$ {}. Décommentez-le pour l’activer. Changez la ligne root en le document root du site web (par exemple, root /usr/share/nginx/html;). Veuillez vous assurer que vous changez la ligne fastcgi_param en fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; car sinon l’interpréteur PHP ne trouvera pas le script PHP que vous appelez dans votre navigateur ( $document_root se traduit par /usr/share/nginx/html car c’est ce que nous avons défini comme notre document root).
PHP-FPM écoute sur le port 9000 sur 127.0.0.1 par défaut, donc nous disons à nginx de se connecter à 127.0.0.1:9000 avec la ligne fastcgi_pass 127.0.0.1:9000;. Il est également possible de faire utiliser à PHP-FPM un socket Unix - je décrirai cela dans le chapitre 7.
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/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, 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/php-fpm.d/www.conf…
vi /etc/php-fpm.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, redémarrez PHP-FPM :
/etc/init.d/php-fpm restartEnsuite, 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/nginx.conf| [...] location ~ \.php$ { try_files $uri =404; root /usr/share/nginx/html; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } [...] |
Enfin, rechargez nginx :
/etc/init.d/nginx reload8 Liens
- nginx: http://nginx.org/
- Wiki nginx: http://wiki.nginx.org/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- CentOS: http://www.centos.org/
À propos de l’auteur
Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le mainteneur 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.