Amélioration de PHP-FPM et HTTPD 2.4
+
Par Remi le vendredi 28 mars 2014, 13:34 - HowTo - Lien permanent
Suite du billet PHP-FPM et HTTPD 2.4
Jusqu'à présent, on devait passer par la directive ProxyPassMatch, pas très souple, voici comment faire plus simple.
La version Apache HTTP Server 2.4.9 récemment publiée sera bientôt disponible dans les mises à jour de Fedora 20.
Cette version intègre un correctif (pas encore appliqué dans la version officielle) qui permet de rediriger les requêtes vers un mandataire FastCGI à l'aide de la directive SetHandler.
La directive ProxyPassMatch étant évaluée au tout début d'une requête
- les directives AddType (pour le MultiView) ou DirectoryIndex ne sont pas utilisables
- la gestion des droits par dossier n'est pas prise en compte
- chaque Alias doit être complété d'une règle de proxy
La directive SetHandler qui est évaluée à la fin est donc beaucoup plus pratique, elle est d'ailleurs utilisée pour mod_php
<FilesMatch \.phps$>
SetHandler application/x-httpd-php-source
</FilesMatch>
Grâce à cette évolution on va pouvoir utiliser php-fpm aussi simplement que mod_php.
Pour rediriger les scripts PHP vers le serveur FPM:
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
Attention, si vous désinstallez ou désactivez mod_php vous devez aussi supprimer toutes les directives php_value et php-flag, par exemple en les rendant conditionnelles :
<IfModule mod_php5.c>
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
</IfModule>
Au passage, on peut en profiter pour abandonner le MPM prefork au profit d'un mode utilisant les threads :
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_event_module modules/mod_mpm_event.so
Ensuite, les applications web en PHP fonctionnent normalement (sauf celle utilisant l'authentification http, qui n'est pas encore supportée par FPM).
A suivre : l'utilisation des Sockets du domaine Unix, annoncé pour la 2.4.9 mais ne fonctionne que partiellement (les correctifs sont en cours de revue).
Commentaires
Il est possible d'utiliser SetHandler avec les UDS, en bricolant un peu:
Juste pour mémoire, avec httpd 2.4.10 ils est désormais possible d'utiliser simplement :
Merci à Jan pour le rappel.
Étrangement, la configuration proposée dans le commentaire précédent fonctionne avec les dernières mise à jour de http 2.4.6-19 dans RHEL-7 mais pas dans Fedora (2.4.10-15)... (bug #1180484)Tout marche parfaitement (il y avait un faute de frappe dans ma configuration de test)