GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer PHP 7.1.16 en tant que PHP-FPM &FastCGI pour ISPConfig 3.1 sur Debian 8 (Jessie)

La version finale de PHP 7.1 est désormais disponible en téléchargement sur Github et les miroirs PHP. PHP 7.1 est la prochaine génération du langage de programmation PHP, il est jusqu'à 2 fois plus rapide que PHP 5.6 et 14 fois plus rapide que PHP 5.0 selon les notes de version. La nouvelle version de PHP n'est pas 100% compatible avec PHP 5.x car certaines API obsolètes ont été supprimées, c'est donc une bonne idée de commencer à tester la compatibilité de vos sites Web avec cette nouvelle version. Cela peut être fait facilement et sans affecter tous les sites de votre serveur en utilisant la fonction de version multiple de PHP dans ISPConfig 3. La version PHP peut être sélectionnée dans les paramètres du site Web ISPConfig 3 pour chaque site individuellement. Cette fonctionnalité fonctionne avec PHP-FPM et FastCGI. Ce didacticiel montre comment créer le nouveau PHP 7.1 en tant que version PHP-FPM et FastCGI sur un serveur Debian Jessie. Cette version de PHP 7.1 inclut de nombreuses extensions compilées et Zend OPcache et Memcached en tant que modules chargeables.

1 Remarque préliminaire

Je vais installer PHP 7.1 qui est sorti en version finale il y a quelques jours. Veuillez noter que PHP-FPM peut être utilisé à la fois sur les serveurs Apache et Nginx, tandis que FastCGI n'est disponible que pour les serveurs Apache.

Avec les anciennes versions de PHP, PHP-FPM et FastCGI s'excluaient mutuellement, de sorte qu'un binaire FPM et FastCGI devait être construit séparément. Avec PHP 7.1, un seul binaire prenant en charge les modes FPM et FCGI peut être créé.

2 Compiler PHP 7.1 avec PHP-FPM et Fastcgi

Téléchargez et extrayez PHP 7.1 depuis Github :

mkdir -p /opt/php-7.1
mkdir /usr/local/src/php7-build
cd /usr/local/src/php7-build
wget http://de2.php.net/get/php-7.1.16.tar.bz2/from/this/mirror -O php-7.1.16.tar.bz2
tar jxf php-7.1.16.tar.bz2
cd php-7.1.16/

Installez les prérequis pour compiler PHP 7.1 et l'éditeur nano que j'utiliserai pour éditer les fichiers de configuration :

apt-get install build-essential nano autoconf
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

(La dernière commande est nécessaire si vous construisez PHP avec --with-imap, car sinon ./configure s'arrêtera avec l'erreur suivante :

checking for crypt in -lcrypt... yes
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
[email protected]:/usr/local/src/php5-build/php-7.0.7#

)

Configurez et compilez PHP 7.1 comme suit (vous pouvez ajuster la commande ./configure à vos besoins, jetez un œil à

./configure --help

pour voir toutes les options disponibles ; si vous utilisez une commande ./configure différente, il est possible que des bibliothèques supplémentaires soient requises ou que le processus de construction échoue) :

./configure --prefix=/opt/php-7.1 --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-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm

Le dernier commutateur (--enable-fpm) garantit que cette version de PHP fonctionnera avec PHP-FPM.

make
make install

Copiez php.ini et php-fpm.conf aux bons emplacements :

cp /usr/local/src/php7-build/php-7.1.16/php.ini-production /opt/php-7.1/lib/php.ini
cp /opt/php-7.1/etc/php-fpm.conf.default /opt/php-7.1/etc/php-fpm.conf
cp /opt/php-7.1/etc/php-fpm.d/www.conf.default /opt/php-7.1/etc/php-fpm.d/www.conf

Ouvrez /opt/php-7.1/etc/php-fpm.conf et ajustez le paramètre suivant (supprimez le ; devant la ligne pid) :

nano /opt/php-7.1/etc/php-fpm.conf
[...]
pid = run/php-fpm.pid
[...]

Ouvrez ensuite /opt/php-7.1/etc/php-fpm.d/www.conf et ajustez la ligne d'écoute, vous devez utiliser un port inutilisé (par exemple, 8999 ; le port 9000 peut déjà être utilisé par le PHP-FPM par défaut de Debian) :

nano /opt/php-7.1/etc/php-fpm.d/www.conf
[...]
listen = 127.0.0.1:8999
[...]

Lorsque vous utilisez plusieurs versions PHP supplémentaires, assurez-vous d'utiliser un port libre, par ex. 8998, 8997 et ainsi de suite pour les prochaines versions.

3 Créer le script init et le fichier d'unité systemd

Debian prend en charge Systemd ainsi que les scripts d'initialisation traditionnels. La plupart des systèmes utilisent aujourd'hui Systemd, dans ce cas passez au chapitre 3.2, pour les systèmes avec un système init traditionnel, suivez le chapitre 3.1 puis passez au chapitre 4. N'installez pas les deux, le script systemd et init.d, sur le même système.

3.1 Créer un script de démarrage init.d

Je vais d'abord créer un script d'initialisation pour le service php-fpm, puis je créerai une unité systemd.

Tout d'abord, créez un script d'initialisation pour PHP-FPM :

nano /etc/init.d/php-7.1-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-7.1-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-7.1-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-7.1/sbin/php-fpm
php_fpm_CONF=/opt/php-7.1/etc/php-fpm.conf
php_fpm_PID=/opt/php-7.1/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

Rendez le script d'initialisation exécutable et créez les liens de démarrage du système :

chmod 755 /etc/init.d/php-7.1-fpm
insserv php-7.1-fpm

Démarrez enfin PHP-FPM :

/etc/init.d/php-7.1-fpm start

Le résultat devrait être :

/etc/init.d/php-7.1-fpm start
Starting php-fpm done

3.2 Créer un script Systemd pour PHP 7.1

Créez maintenant le fichier d'unité systemd :

nano /lib/systemd/system/php-7.1-fpm.service

avec le contenu suivant :

[Unit]
Description=The PHP 7.1 FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/opt/php-7.1/var/run/php-fpm.pid
ExecStart=/opt/php-7.1/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.1/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

Activez le service et rechargez systemd :

systemctl enable php-7.1-fpm.service
systemctl daemon-reload

Démarrez enfin PHP-FPM :

systemctl start php-7.1-fpm.service

4 Activer Zend OPcache

Pour activer Zend OPcache, ouvrez /opt/php-7.1/lib/php.ini...

nano /opt/php-7.1/lib/php.ini

... et ajoutez la ligne suivante à la fin :

[...]
zend_extension=opcache.so

Les extensions Memcache et APCu ne peuvent pas encore être installées sur PHP 7.1, je vais donc ignorer leur installation pour le moment. Je mettrai à jour le tutoriel plus tard lorsque les extensions pecl seront compatibles avec PHP 7.1.

Testez la version PHP :

cd /opt/php-7.1/bin
./php --version

Le résultat devrait ressembler à cette capture d'écran.

Veuillez noter : La capture d'écran provient de PHP 7.1.16, le didacticiel est mis à jour en permanence pour les nouvelles versions de PHP 7.1, mais nous ne prenons pas de nouvelles captures d'écran à chaque fois. La version de PHP 7.1 que vous verrez sur votre serveur est donc peut-être plus récente. La version actuelle de ce tutoriel est pour php-7.1.16.

5 Activer Memcache (facultatif)

Dans ce chapitre, je vais compiler et activer l'extension PHP Memcached.

La première étape consiste à installer le package libmemcached-dev à partir de Debian.

apt-get install libmemcached-dev

Créez ensuite un répertoire, téléchargez l'extension PHP Memcache depuis Github, décompressez l'archive et entrez dans le répertoire contenant les fichiers décompressés.

mkdir /usr/local/src/php7-build/php-memcache
cd /usr/local/src/php7-build/php-memcache
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
unzip php7.zip
cd php-memcached-php7

Préparez les sources en exécutant la commande phpize depuis PHP 7.1.

/opt/php-7.1/bin/phpize

Configurez et créez l'extension PHP Memcache.

./configure --with-php-config=/opt/php-7.1/bin/php-config
make
make install

Pour activer l'extension Memcache, ouvrez /opt/php-7.1/lib/php.ini...

nano /opt/php-7.1/lib/php.ini

... et ajoutez la ligne suivante à la fin :

[...]
extension=memcached.so

2.1 Installer l'extension xDebug (facultatif)

Le module xDebug est une extension de débogage pour PHP. L'installation est facultative.

Installez xDebug avec ces commandes.

cd /opt/php-7.1/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install xdebug

Modifiez ensuite le fichier php.ini avec un éditeur :

nano /opt/php-7.1/lib/php.ini

et ajoutez la ligne suivante à la fin du fichier :

zend_extension=/opt/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so

Redémarrez enfin le démon php-fpm :

service php-7.1-fpm restart

7 Activer PHP 7.1 dans ISPConfig

Dans ISPConfig 3, vous pouvez configurer la nouvelle version PHP sous Système> Versions PHP supplémentaires. Dans l'onglet Nom, il vous suffit de saisir un nom pour la version de PHP (par exemple, PHP 7.1) - cette version de PHP sera répertoriée sous ce nom dans les paramètres du site Web dans ISPConfig :

Accédez à l'onglet Paramètres FastCGI et remplissez les champs comme suit :

Path to the PHP FastCGI binary: /opt/php-7.1/bin/php-cgi
Path to the php.ini directory: /opt/php-7.1/lib

Accédez ensuite à l'onglet Paramètres PHP-FPM et remplissez les champs comme suit :

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

  • PHP :http://www.php.net/
  • ISPConfig :http://www.ispconfig.org/
  • Debian :http://www.debian.org/

Debian
  1. Comment compiler PHP 5.6 (PHP-FPM &FastCGI) avec Zend OPcache et APCu pour ISPConfig 3 sur Debian 7 (Wheezy)

  2. Comment installer PHP 8.0 sur Debian 11

  3. Comment installer PHP 8.0 sur Debian 10 / Debian 9

  4. Comment installer PHP 8 sur Debian 10

  5. Comment installer PHP 7.3 sur Debian 10

Comment installer PHP 7.1, 7.2 et 5.6 en tant que PHP-FPM &FastCGI pour ISPConfig 3 sur Debian 9

Comment installer PHP 5.6 et 7.0 - 8.1 en tant que PHP-FPM &FastCGI pour ISPConfig 3 avec apt sur Debian 8 à 11

Comment installer LAMP (Apache, MySQL, PHP) sur Debian 8 Jessie

Comment installer Apache avec PHP-FPM sur Debian 10

Comment installer Nginx avec PHP-FPM sur Debian 10

Comment installer ISPConfig sur Debian 11