Ajouter d’autre version de Php avec ISPConfig (Debian 8, Php 5.3)

Je continue donc dans cette suite de documentations sur l’installation et la configuration d’ISPConfig.

Faute de tutoriel pour Debian Jessie, je suis partis sur base de celui ci https://www.howtoforge.com/how-to-use-multiple-php-versions-php-fpm-and-fastcgi-with-ispconfig-3-ubuntu-12.04-lts-p2

Pour installer Php 7, vous pouvez vous référer à ce tutoriel : Installation de Php 7.

Nous, nous allons nous occuper de version plus ancienne de php, la 5.3 dans notre cas.

1. On va télécharger et compile la version voulue de Php (on va ici le faire pour php 5.3)
Je récupère la version depuis le site de php.net (cliquez sur la release, ensuite clique droite sur votre miroir et copier le lien)

Le php 5.3 que nous voulons se trouve à l’adresse http://fr2.php.net/get/php-5.3.29.tar.bz2/from/this/mirror


mkdir /opt/php-5.3.29
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://fr2.php.net/get/php-5.3.29.tar.bz2/from/this/mirror -O php-5.3.29.tar.bz2
tar jxf php-5.3.29.tar.bz2
cd php-5.3.29/

Une série de librairies et de paquets sont nécessaire pour la compilation. Comme montré dans le tuto joint en debut de poste, on lance :

apt-get install build-essential

apt-get build-dep php5

apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev

ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

Ensuite, afin d’éviter un bug avec freetype.h on dois effectuer deux commande (Debian 8 est un peu trop récent pour Php 5.3 (ou c’est 5.3 qui est un peu trop vieux 🙂 )


mkdir /usr/include/freetype2/freetype
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h

Nous allons donc commencer par configurer php avec fastcgi (Php fpm plus bas, mais ne fonctionne pas correctement sur ISPConfig).
A noté que pour refaire une autre compilation, pensé à refaire un cd /usr/local/src/php5-build/php-5.3.29/

Php FastCgi


./configure \
--prefix=/opt/php-5.3.29-cgi \
--with-pdo-pgsql \
--with-zlib-dir \
--with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable-calendar \
--with-curl \
--with-mcrypt \
--with-zlib \
--with-gd \
--with-pgsql \
--disable-rpath \
--enable-inline-optimization \
--with-bz2 \
--with-zlib \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
--enable-exif \
--enable-bcmath \
--with-mhash \
--enable-zip \
--with-pcre-regex \
--with-mysql \
--with-pdo-mysql \
--with-mysqli \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--enable-gd-native-ttf \
--with-openssl=/usr \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--with-libdir=/lib/x86_64-linux-gnu \
--enable-ftp \
--with-imap=/usr \
--with-imap-ssl \
--with-kerberos \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-cgi

Puis make && make install

Copie de php.ini

cp /usr/local/src/php5-build/php-5.3.29/php.ini-production /opt/php-5.3.29-cgi/lib/php.ini

Configuration d’ISPConfig avec php 5.3.29 cgi

On se rend dans System -> System -> Additional PHP Versions

ISPCONFIG - additional php versions

Puis dans l’onglet FastCGI Settings :
Path to the PHP FastCGI binary : /opt/php-5.3.29-cgi/bin/php-cgi
Path to the php.ini directory : /opt/php-5.3.29-cgi/lib

Ensuite pour placer un site en php-5.3.29, on va dans Sites -> clique sur le site voulu et on adapte :

ISPConfig - fastcig php 5.3

Php-FPM

Pour installer php-fpm vous pouvez suivre la procédure suivante, toutefois, avec l’installation d’ISPConfig suivi dans le tutoriel pour Debian 8 ceci ne devrait pas fonctionner. A tester donc seulement si vous ne pouvez pas faire fonctionner FastCgi ou que votre configuration diffère de la config de base pour Debian Jessie.

Lançons maintenant le ./configure pour la version php-fpm (cgi plus bas)

./configure \
--prefix=/opt/php-5.3.29-fpm \
--with-pdo-pgsql \
--with-zlib-dir \
--with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable-calendar \
--with-curl \
--with-mcrypt \
--with-zlib \
--with-gd \
--with-pgsql \
--disable-rpath \
--enable-inline-optimization \
--with-bz2 \
--with-zlib \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
--enable-exif \
--enable-bcmath \
--with-mhash \
--enable-zip \
--with-pcre-regex \
--with-mysql \
--with-pdo-mysql \
--with-mysqli \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--enable-gd-native-ttf \
--with-openssl=/usr \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--with-libdir=/lib/x86_64-linux-gnu \
--enable-ftp \
--with-imap=/usr \
--with-imap-ssl \
--with-kerberos \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-fpm

Noté les différences avec le script du tuto initial : le **=/usr** après *with-openssl* et *with-imap*.

On lance ensuite :

make
make install

Ensuite nous allons copier le php.ini et php-fpm.ini dans les bon répertoire :

cp /usr/local/src/php5-build/php-5.3.29/php.ini-production /opt/php-5.3.29-fpm/lib/php.ini
cp /opt/php-5.3.29-fpm/etc/php-fpm.conf.default /opt/php-5.3.29-fpm/etc/php-fpm.conf

Nous allons ensuite éditer php-fpm.conf
nano /opt/php-5.3.29-fpm/etc/php-fpm.conf

Adapter le fichier en motidier / ajout les valeurs comme ceci
(pid est à décommenté, user et group sont normalement ok, listen : il vaut mieux changer le port car 9000 peut être utilisé. Include est à ajouté en fin de fichier)

[...]
pid = run/php-fpm.pid
[...]
user = www-data
group = www-data
[...]
listen = 127.0.0.1:8999
[...]
include=/opt/php-5.3.29-fpm/etc/pool.d/*.conf

Création du répertoire pour la pool
mkdir /opt/php-5.3.29-fpm/etc/pool.d

Ensuite il faut créer un script dans /etc/init.d afin de lancer notre version de php

nano /etc/init.d/php-5.3.29-fpm

Et on y ajoute le code


#! /bin/sh
### BEGIN INIT INFO
# Provides: php-5.3.29-fpm
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php-5.3.29-fpm
# Description: starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-5.3.29-fpm/sbin/php-fpm
php_fpm_CONF=/opt/php-5.3.29-fpm/etc/php-fpm.conf
php_fpm_PID=/opt/php-5.3.29-fpm/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
try=0
while test $try -lt 35 ; do
case "$1" in
'created')
if [ -f "$2" ] ; then
try=''
break
fi
;;
'removed')
if [ ! -f "$2" ] ; then
try=''
break
fi
;;
esac
echo -n .
try=`expr $try + 1`
sleep 1
done
}
case "$1" in
start)
echo -n "Starting php-fpm "
$php_fpm_BIN $php_opts
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
fi
wait_for_pid created $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
stop)
echo -n "Gracefully shutting down php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -QUIT `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed. Use force-exit"
exit 1
else
echo " done"
echo " done"
fi
;;
force-quit)
echo -n "Terminating php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -TERM `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reload service php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -USR2 `cat $php_fpm_PID`
echo " done"
;;
*)
echo "Usage: $0 {start|stop|force-quit|restart|reload}"
exit 1
;;
esac

Changement de permissions pour rendre le script éxécutable et lien pour l’execution au démarrage, et ensuite le démarrage à proprement parlé :


chmod 755 /etc/init.d/php-5.3.29-fpm
insserv php-5.3.29-fpm
/etc/init.d/php-5.3.29-fpm start

Au démarrage vous aurez une erreur comme ceci

Starting php-fpm [22-Sep-2015 22:13:34] WARNING: Nothing matches the include pattern '/opt/php-5.3.29-fpm/etc/pool.d/*.conf' from /opt/php-5.3.29-fpm/etc/php-fpm.conf at line 511.
done

Rien de grave, c’est car il n’y a pas encore de pool dans /opt/php-5.3.29-fpm/etc/pool.d. Vous pouvez ignorer l’erreur, elle se resoudra plus tard.

Nous allons ensuite adapter ISPConfig pour lui donner les chemins vers notre nouvelle configuration.

On se rend dans System -> System -> Additional PHP Versions (on peut faire dans le même que pour php-fcgi)

ISPCONFIG - additional php versions

On va ensuite dans l’onglet PHP-FPM Settings et on entre les informations suivante :

Path to the PHP-FPM init script /etc/init.d/php-5.3.29-fpm
Path to the php.ini directory /opt/php-5.3.29-fpm/lib
Path to the PHP-FPM pool directory /opt/php-5.3.29-fpm/etc/pool.d

Ensuite dans site, vous sélectionnez php-fpm et la version choisie.
Merci pour votre lecture 🙂
Jérémy

N’hésitez pas à commenter ou me contacter si vous avez une question 🙂

2 réponses à “Ajouter d’autre version de Php avec ISPConfig (Debian 8, Php 5.3)

  1. Thank you so very much for this!! I migrated some websites (a few WordPress blogs and a phpbb forum) to a new ISPConfig server. I installed following instructions I found online. This included PHP 5.5 and the websites didn’t work correctly on the new server. Thanks to your very clear instructions I was able to install PHP 5.3.9 and everything is working fine now!

  2. Salut,
    Merci pour l’article !

    il y a une erreur sur le paquet libjpeg62, il faut remplacer libjpeg62-turbo-dbg par libjpeg62-dbg

    Ce qui donne

    apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev

    Have fun

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *