Cette documentation couvre l'installation et la configuration de PHP avec PHP-FPM pour le serveur HTTP Nginx 1.4.x.
Ce guide suppose que Nginx a été compilé à partir des sources et donc
tous les binaires et fichiers de configuration se trouvent dans
/usr/local/nginx. Si ce n'est pas le cas et que Nginx a été
obtenu par d'autres moyens, se référer au
» Wiki d'Nginx pour adapter ce manuel
à la configuration utilisée.
Ce guide couvre les bases de la configuration du serveur Nginx afin de parvenir à servir une application PHP sur le port 80. Il est recommandé d'étudier les documentations d'Nginx et de PHP-FPM afin d'optimiser l'installation.
Il est à noter que tout au long de cette documentation, les numéros de version ont été remplacés par un "x" pour assurer que cette dernière reste correcte dans l'avenir. Penser à les remplacer par le numéro de version approprié.
Il est recommandé de consulter la » documentation de Nginx afin de l'installer sur le système.
Récupérer et décompresser les sources de PHP :
tar zxf php-x.x.x
Configurer et compiler PHP. Ce sera le moment où il sera possible de personnaliser PHP avec diverses options, comme les extensions à activer. Exécuter ./configure --help pour obtenir une liste des options disponibles. Dans notre exemple, nous effectuerons une configuration simple avec le support PHP-FPM et MySQLi.
cd ../php-x.x.x ./configure --enable-fpm --with-mysqli make sudo make install
Récupérer et déplacer les fichiers de configuration dans les bons dossiers
cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf cp sapi/fpm/php-fpm /usr/local/bin
Il est important d'empêcher Nginx de passer les requêtes au backend PHP-FPM si le fichier n'existe pas, évitant ainsi les failles par injections arbitraires de scripts.
Nous pouvons réaliser cela en définissant la directive
de configuration cgi.fix_pathinfo
à la valeur 0 dans le php.ini.
Modifier php.ini :
vim /usr/local/php/php.ini
Trouver la directive cgi.fix_pathinfo=
et la modifier comme ceci :
cgi.fix_pathinfo=0
Le fichier php-fpm.conf doit être modifié pour spécifier que php-fpm doit être exécuté avec l'utilisateur www-data et le groupe www-data avant de démarrer le service :
vim /usr/local/etc/php-fpm.d/www.conf
Trouver et modifier ce qui suit :
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www-data group = www-data
Le service php-fpm peut maintenant être démarré :
/usr/local/bin/php-fpm
Ce guide ne va pas configurer php-fpm plus que cela ; pour la configuration avancée de php-fpm, consulter la documentation.
Nginx doit maintenant être configuré pour supporter l'analyse des applications PHP :
vim /usr/local/nginx/conf/nginx.conf
Modifier le bloc par défaut afin qu'il puisse servir des fichiers .php :
location / {
root html;
index index.php index.html index.htm;
}
La prochaine étape permet d'assurer que les fichiers .php soient passés au backend PHP-FPM. Sous le bloc PHP commenté par défaut, entrer :
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
Redémarrer Nginx.
sudo /usr/local/nginx/sbin/nginx -s stop sudo /usr/local/nginx/sbin/nginx
Créer un fichier de test
rm /usr/local/nginx/html/index.html echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
Maintenant, naviguer vers http://localhost. Le phpinfo() devrait maintenant être affiché.
En suivant ces différentes étapes, le résultat devrait être un serveur
web Nginx avec le support de PHP comme module FPM SAPI.
Bien entendu, il y a beaucoup plus d'options de configuration
disponibles pour Nginx et PHP. Pour plus d'informations, taper
./configure --help dans la source correspondante.