CentOS : Installer une autre version de PHP grâce à SCL
Table des matières
Introduction
Les distributions Linux d'Entreprise, dont fait partie RedHat (et sa variante gratuite CentOS) ont pour but de durer dans le temps et d'être supportées sur du long terme. De fait, les versions de logiciels sont souvent arrêtées pour garantir une grande stabilité et compatibilité des applicatifs installés. Parfois, en 10 ans, les versions évoluent.
SCL pour l'anglais Software Collections est une collection de logiciels qui permet d'installer, en plus de la version livrée par le système, d'autre versions pour des besoins spécifiques.
Prenons exemple (qui sert de base à cette page) : CentOS6 est livrée avec PHP5.3. Or, le support est terminé. RedHat patch encore PHP 5.3 pour combler les failles de sécurité. Mais on peut installer en parallèle PHP 5.4.
Initialiser SCL dans CentOS
Tout d'abord, on installe le support SCL :
Copier vers le presse-papierCode BASH :
yum --enablerepo=extras install centos-release-scl
Copier vers le presse-papierCode TEXT :
Installé: centos-release-scl.noarch 10:6-6.el6.centos Dépendance(s) installée(s) : centos-release-scl-rh.noarch 0:1-1.el6.centos
Ensuite, nous avons à disposition tout ceci (Pour CentOS 6) :
- httpd24 - Apache 2.4
- mariadb55 - MariaDB 5.5
- mysql55 - MySQL 5.5
- nodejs010 - Node.js 0.10
- perl516 - Perl 5.16.3
- php54 - PHP 5.4
- postgresql92 - PostgreSQL 9.2
- python27 - Python 2.7
- python33 - Python 3.3
- ruby193 - Ruby 1.9.3
- ....
Source : http://mirror.centos.org/centos/6/sclo/x86_64/rh/ - http://mirror.centos.org/centos/7/sclo/x86_64/rh/
Installation de PHP5.6 et d'Apache 2.4 sur CentOS 7
Installation d'Apache 2.4
Il est conseillé de désinstaller httpd du dépôt de base, ou bien de le désactiver et le stopper.
On installe ensuite le httpd 2.4 des dépôts SCL :
Copier vers le presse-papierCode BASH :
yum install httpd24-httpd
Une fois fait :
Copier vers le presse-papierCode TEXT :
Installé : httpd24-httpd.x86_64 0:2.4.18-11.el7
On démarre et on active le service au démarrage :
Copier vers le presse-papierCode BASH :
systemctl start httpd24-httpd
systemctl enable httpd24-httpd
On peut voir le statut :
Copier vers le presse-papierCode BASH :
systemctl status httpd24-httpd
Copier vers le presse-papierCode TEXT :
httpd24-httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd24-httpd.service; enabled; vendor preset: disabled) Active: active (running) since sam. 2017-01-14 10:43:16 CET; 10s ago Main PID: 1719 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd24-httpd.service ├─1719 /opt/rh/httpd24/root/usr/sbin/httpd -DFOREGROUND ├─1720 /opt/rh/httpd24/root/usr/sbin/httpd -DFOREGROUND ├─1721 /opt/rh/httpd24/root/usr/sbin/httpd -DFOREGROUND ├─1722 /opt/rh/httpd24/root/usr/sbin/httpd -DFOREGROUND ├─1723 /opt/rh/httpd24/root/usr/sbin/httpd -DFOREGROUND └─1724 /opt/rh/httpd24/root/usr/sbin/httpd -DFOREGROUND janv. 14 10:43:16 centos systemd[1]: Starting The Apache HTTP Server... janv. 14 10:43:16 centos httpd-scl-wrapper[1719]: AH00558: httpd: Could not reliably determine the server's fully qualified domain ...essage janv. 14 10:43:16 centos systemd[1]: Started The Apache HTTP Server. Hint: Some lines were ellipsized, use -l to show in full.
Si la connexion échoue, pensez à ouvrir le pare-feu aussi !
Copier vers le presse-papierCode BASH :
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
Par défaut une "arborescence" spécifique est créée : /opt/rh/httpd24/root/
Donc le site par défaut se trouve dans : /opt/rh/httpd24/root/var/www/html
Il est possible de modifier le fichier /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf pour remettre /var/www/html ou l'emplacement de vos fichiers de votre site web par défaut.
Si on utilise HTTPS ne pas oublier le mod_ssl :
Copier vers le presse-papierCode BASH :
yum install http24-mod_ssl
Installation de PHP 5.6
Si vous avez installé PHP de cette manière :
Copier vers le presse-papierCode BASH :
yum install php php-pdo php-gd ...
Il suffit de préfixer chaque paquet de rh-phpXX où XX est la version. Voici un exemple :
Copier vers le presse-papierCode BASH :
yum install rh-php56-php rh-php56-php-pdo rh-php56-php-gd rh-php56-php-dom rh-php56-php-xml rh-php56-php-mb rh-php56-php-mbstring rh-php56-php-mysqlnd
Redémarrer httpd pour prendre en compte le PHP nouvellement installé
Copier vers le presse-papierCode BASH :
systemctl restart httpd24-httpd
Si on fait une page avec la fonction phpinfo, on obtient : Apache/2.4.18 (Red Hat) PHP/5.6.25
À noter: le fichier de config : /etc/opt/rh/rh-php56/php.ini
Aussi, les logs se trouvent dans /var/log/httpd24/error_log et /var/log/httpd24/access_log