Apache httpd server 2.4.10 et PHP-FPM 5.6 dans Fedora 21
Depuis la mise à jour dans Fedora 21 d'httpd version 2.4.10 et de php 5.6.0RC3, il est désormais possible de se passer de mod_php. php-fpm fonctionne désormais avec la configuration par défaut fournie.
Installation :
# yum remove php
# yum install php-fpm httpd
Démarrage des services
# systemctl start php-fpm.service
# systemctl start httpd.service
Test
# echo '<?php phpinfo()' >/var/www/html/info.php
URL: http://localhost/info.php
Vous devez voir le message : Server API: FPM/FastCGI
Configuration
La configuration fournie par défaut fonctionne donc désormais sans modification sous Fedora 21.
Il est possible de l'utiliser en Fedora 19 et 20 en appliquant les modifications au fichier de configuration de PHP /etc/httpd/conf.d/php.conf
Désactiver les directives php_* si mod_php n'est pas chargé
# mod_php options
<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>
Activer la redirection vers le serveur php-fpm
# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php5.c>
<FilesMatch \\.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</IfModule>
Optimisation du serveur Apache
C'est l'occasion d'abandonner le MPM prefork dans /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
Pour les packageurs
php-fpm tire httpd-filesystem, uniquement pour la création de l'utilisateur apache et des dossiers de configuration, mais reste utilisable sans httpd, par exemple avec nginx. Cependant Apache httpd server reste, pour moi, le seul server adapté pour les applications web, en particulier parce qu'il permet de fournir un fichier de configuration par application contenant des alias globaux.
Je vous encourage à tester vos applications dans cette configuration, en particulier à mettre des conditions autour des directives php_* dans leur fichier de configuration.
La prochaine étape sera de supprimer la dépendance sur mod_php pour laisser le choix aux utilisateurs.
Conclusion
Cette fonctionnalité supprime enfin la difficulté d'utiliser PHP-FPM et les autres MPM d'apache. Dommage qu'elle ne soit pas disponible dans la version d'httpd fournie avec RHEL/CentOS-7 ou dans RHSCL 1.1.