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 vous avez compilé Nginx à 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 vous avez obtenu Nginx par d'autres moyens, veuillez vous référer au » Wiki d'Nginx pour adapter ce manuel pour votre configuration.
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 votre installation.
Veuillez noter que tout au long de cette documentation, les numéros de version ont été remplacé par un "x" pour assurer que cette dernière reste correcte dans l'avenir. Pensez à les remplacer par votre numéro de version.
Il est recommandé de consulter la » documentation de Nginx afin de l'installer sur votre 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ù vous pourrez personaliser PHP avec diverses options, comme les extensions à activer. Exécuter ./configure --help pour obtenir une liste des options disponibles. Dans notre exemple, vous effectuerons une configuration simple avec le support PHP-FPM et MySQL.
cd ../php-x.x.x ./configure --enable-fpm --with-mysql 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.conf.default /usr/local/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin
Il est important que vous empéchiez 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 votre php.ini.
Editer php.ini :
vim /usr/local/php/php.ini
Trouver la directive cgi.fix_pathinfo= et modifier là 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.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 ; si vous êtes intéressé dans la configuration avancée de php-fpm, veuillez 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 commenté par défaut et entrez :
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éez un fichier de test
rm /usr/local/nginx/html/index.html echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
Maintenant, naviguez vers http://localhost. Le phpinfo() devrait maintenant être affiché.
En suivant ces différentes étapes, vous devriez exécuter un serveur web Nginx avec le support de PHP comme module SAPI. Bien entendu, il y a beaucoup plus d'options de configuration de disponible pour Nginx et PHP. Pour plus d'informations, tapez ./configure --help dans la source correspondante.