PHP-FPM et NGINX
+
Par Remi le lundi 27 septembre 2010, 19:00 - HowTo - Lien permanent
Depuis PHP 5.3.3, le moteur PHP-FPM est intégré. Le paquet php-fpm est disponible dans le dépôt remi est sera bientôt aussi dans rawhide.
Cet article montre comment l'utiliser avec le serveur nginx.
L'objectif est de faire fonctionner un serveur Web pour des applications locales et pour des applications livrées en RPM, je prendrais phpMyAdmin comme exemple.
1. Installation :
yum --enablerepo=remi install php-fpm nginx phpMyAdmin
Cette commande va aussi installer le serveur apache, qui écoute sur le port 80. Nous ne l'utiliserons pas mais configurerons nginx pour écouter sur le port 82.
2. Création de mon site web
Avec nginx, les pages sont, par défaut dans /usr/share/nginx/html
Ce site sera vraiment minimum
echo '<?php phpinfo(); ?>' >/usr/share/nginx/html/nginfo.php
3. Configuration de nginx
Je suis loin d'être un expert sur ce serveur, mais à l'aide de la documentation (plutôt spartiate), j'ai trouvé une solution qui marche :
Modification du fichier : /etc/nginx/nginx.conf
Port d'écoute :
listen 82;
Alias pour phpMyAdmin (après la partie commentée sur le PHP)
location /phpMyAdmin { alias /usr/share/phpMyAdmin; index index.php index.html index.htm; }
Configuration PHP pour phpMyAdmin
location ~ /phpMyAdmin/.*\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/$uri; fastcgi_intercept_errors on; include fastcgi_params; }
Configuration PHP pour les applications locales
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; include fastcgi_params; }
Il y a certainement des façons plus simples et/ou plus élégantes (en particuler pour éviter la double déclaration de la partie php), vos commentaires sont les bienvenus, j’essaierais de l'améliorer.
4. Lancement des services
service php-fpm start
service nginx start
5. URL de test
- http://localhost:82/ page d'accueil fournie par défaut avec nginx
- http://localhost:82/nginfo.php notre superbe application
- http://localhost:82/phpMyAdmin/ une application RPM
6. Conclusion
Ça marche !
Commentaires
Un autre article sur ce sujet : Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support On Fedora 15