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.