Passer en PHP 7.x sur un serveur CentOS sans accès aux repositories

Par défaut, CentOS 7 (et RHEL) embarquent une version 5.4.16 de PHP, qui est datée et peut présenter des problèmes de sécurité.

On trouve sur le web pas mal de tutoriels qui expliquent comment passer en version 7.x, en ajoutant les dépôts REMI.

Dans mon cas, le serveur est dans un réseau d'entreprise qui dispose de ses propres serveurs de dépôts, et on ne peut donc pas accéder aux dépôts externes.

On a quand même pu passer en version 7.3, en récupérant les rpm puis en les installant.

Je décris ici les étapes à mener.

Sur le serveur "sandbox"

Installation Apache + PHP de base

Pour récupérer et tester la mise à jour, j'ai installé un serveur en mode "bac à sable", dans un container LXC.

J'installe ensuite la configuration par défaut (apache + mod_php) :

yum install httpd mod_php php-mysql php_ldap

Pour vérifier que ça fonctionne, j'ajoute un fichier index.php dans le répertoire DocRoot par défaut (/var/www/html).

<html><head><title>Infos PHP</title></head>
<body>
<h1>Les infos de PHP </h1>
Si on voit ça c'est que PHP est activé
<?php
  phpinfo();
?>

</body>
</html>

En accédant via un navigateur au serveur, on doit avoir la page d'info PHP, avec le version 5.4.16

Récupération des fichiers RPM requis

En suivant les nombreux articles sur le web, on va ajouter les utilitaires pour yum et le dépôt REMI

yum install epel-release yum-utils -y
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php73

Je crée ensuite un répertoire php73, dans lequel je vais télécharger les paquets RPM requis, via l'utilitaire yumdownloader

mkdir php73
cd php73
yumdownloader --resolve php73-php-pdo php73-php-ldap php73-php-xml php73-php-gd php73-php-cli php73-php-mysqlnd php73-php-mbstring php73-php-mcrypt php73-php-common php73-php-fpm

A ce stade, on a tous les paquets nécessaires.

Script de mise en place

Afin de simplifier le déploiement je crée un script, dans le répertoire courant (voir la pièce jointe) qui va faire les actions suivantes :

  • supprimer les paquets actuels
  • installer tous les RPM
  • lancer le service php73-fpm, et activer le service systemd
  • créer le fichier de configuration / handler pour apache
  • relancer le serveur http

Puis je crée une archive avec mon répertoire

cd ..
tar zcf php73-rpms.tgz php73

 

Sur le serveur cible

Une fois l'archive récupérée, il n'y a plus qu'à extraire le contenu, se positionner dans le répertoire et lancer le script.

tar zxf /path/to/php73-rpms.tgz
cd php73
bash updatePhp.sh

On peut alors vérifier que la version de php est bien la version 7.3.x

Le script ajoute aussi un fichier de configuration php-fpm pour le serveur apache, afin de passer par le process php73-php-fpm, qui écoute en localhost sur le port 9000.

 

 

Tags
Catégorie

Ajouter un commentaire

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.