J'ai évidement utiliser les paquets disponibles en SCL sur le site du projet SoftwareCollections, en particulier les collections httpd24, php54 et php55.

Installation du dépôt RHSCL 1.0 sur RHEL-6 (pour php54)

rhn-channel --add --channel=rhel-x86_64-server-6-rhscl-1

Installation du dépôt php54 sur CentOS-6

wget http://people.redhat.com/rcollet/php54/rhel-php54.repo -O /etc/yum.repos.d/php54.repo

Installation du dépôt httpd24 :

wget http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo -O /etc/yum.repos.d/httpd24.repo

Installation du dépôt php55 :

wget http://people.redhat.com/rcollet/php55/rhel-php55.repo -O /etc/yum.repos.d/php55.repo

Installation des paquets Apache 2.4.6, PHP 5.3.3, 5.4.16 et 5.5.5 :

yum install httpd24 php54 php54-php-fpm php55 php55-fpm php-fpm

Comme les 3 versions de php-fpm sont configurées pour écouter sur le port 9000, modifions cela :

sed -e 's/9000/9002/' -i /opt/rh/php54/root/etc/php-fpm.d/www.conf
semanage port -a -t http_port_t -p tcp 9002

sed -e 's/9000/9003/' -i /opt/rh/php55/root/etc/php-fpm.d/www.conf
semanage port -a -t http_port_t -p tcp 9003

Configuration d'apache pour qu'il demande l'exécution des scripts PHP à FPM en fonction de la version, en créant le fichier /opt/rh/root/etc/httpd/conf.d/fpm.conf

#   PHP script executed by FPM backend
ProxyPassMatch ^/php53/(.*\.php)$ fcgi://127.0.0.1:9000/srv/website
# Other static stuff
Alias /php53 /srv/website

ProxyPassMatch ^/php54/(.*\.php)$ fcgi://127.0.0.1:9002/srv/website
Alias /php54 /srv/website

ProxyPassMatch ^/php55/(.*\.php)$ fcgi://127.0.0.1:9003/srv/website
Alias /php55 /srv/website

J'ai choisi de rediger les 3 URL vers le même dossier, car mon objectif est de tester la même application avec les différentes versions de PHP.

J'aurais aussi pu configurer 3 hôtes virtuels.

Installons notre application préférée:

mkdir /srv/website
echo '<?php phpinfo()' >/srv/website/info.php

Démarrage des services

service httpd24-httpd start
service php-fpm start
service php54-php-fpm start
service php55-php-fpm start

Il ne reste plus qu'à profiter : http://localhost/php53/info.php ou http://localhost/php54/info.php ou http://localhost/php55/info.php

A noter, il s'agit d'une configuration simpliste, destinée a un développeur désirant faire des tests. Elle nécessiterait d'être améliorée pour une utilisation en production, mais le principe reste le même.