La version finale de PHP 7 est désormais disponible en téléchargement sur Github et les miroirs PHP. PHP7 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 en tant que version PHP-FPM et FastCGI sur un serveur Debian Jessie. Ces builds PHP 7 incluent Zend OPcache.
1 Remarque préliminaire
Je vais installer PHP 7 qui est actuellement en version bêta au moment d'écrire ces lignes. 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, un seul binaire prenant en charge les modes FPM et FCGI peut être créé.
2 Compiler PHP 7 avec PHP-FPM et Fastcgi
Téléchargez et extrayez PHP 7 depuis Github :
mkdir -p /opt/php-7.0.32
mkdir /usr/local/src/php7-build
cd /usr/local/src/php7-build
wget http ://de2.php.net/get/php-7.0.32.tar.bz2/from/this/mirror -O php-7.0.32.tar.bz2
tar jxf php-7.0.32.tar .bz2
cd php-7.0.32/
Installez les prérequis pour compiler PHP 7 et l'éditeur nano que j'utiliserai pour éditer les fichiers de configuration :
apt-get install build-essential nano
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 :
vérification de crypt dans -lcrypt... oui
configure :erreur :impossible de trouver la bibliothèque imap (libc-client.a). Veuillez vérifier votre installation c-client.
[email protected] :/usr/local/src/php5-build/php-7.0.32#
)
Configurez et compilez PHP 7.0.0 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.0.32 --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- optimisation --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.
faire
faire installer
Copiez php.ini et php-fpm.conf aux bons emplacements :
cp /usr/local/src/php7-build/php-7.0.32/php.ini-production /opt/php-7.0.32/lib/php.ini
cp /opt/php-7.0.32/etc/php-fpm.conf.default /opt/php-7.0.32/etc/php-fpm.conf
cp /opt/php-7.0. 32/etc/php-fpm.d/www.conf.default /opt/php-7.0.32/etc/php-fpm.d/www.conf
Ouvrez /opt/php-7.0.32/etc/php-fpm.conf et ajustez le paramètre suivant (supprimez le ; devant la ligne pid) :
nano /opt/php-7.0.32/etc/php-fpm.conf
[...]pid =run/php-fpm.pid[...]
Ouvrez ensuite /opt/php-7.0.32/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 être utilisé par le PHP-FPM par défaut de Debian déjà):
nano /opt/php-7.0.32/etc/php-fpm.d/www.conf
[...]écouter =127.0.0.1:8999[...]
3 Créer le script init et le fichier d'unité systemd
Debian prend en charge Systemd ainsi que les scripts d'initialisation traditionnels. Je vais d'abord créer un script d'initialisation pour le service php-fpm, puis je créerai une unité systemd.
Créez d'abord un script d'initialisation pour PHP-FPM :
nano /etc/init.d/php-7.0.32-fpm
# ! /bin/sh### BEGIN INIT INFO# Fournit :php-7.0.32-fpm# Requis-Start :$all# Requis-Stop :$all# Default-Start :2 3 4 5# Default-Stop :0 1 6# Short-Description :démarre php-7.0.32-fpm# Description :démarre le démon PHP FastCGI Process Manager### END INIT INFOphp_fpm_BIN=/opt/php-7.0.32/sbin/php-fpmphp_fpm_CONF=/opt/php -7.0.32/etc/php-fpm.confphp_fpm_PID=/opt/php-7.0.32/var/run/php-fpm.pidphp_opts="--fpm-config $php_fpm_CONF"wait_for_pid () { essai=0 pendant le test $essayer -lt 35; faire cas "$1" dans 'créé') if [ -f "$2" ]; then try='' break fi;; 'supprimé') si [ ! -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 créé $php_fpm_PID if [ -n "$try" ]; then echo " failed" exit 1 else echo " done" fi;; stop) echo -n "Arrêter gracieusement php-fpm " if [ ! -r $php_fpm_PID ]; puis echo "attention, aucun fichier pid trouvé - php-fpm n'est pas en cours d'exécution ?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid supprimé $php_fpm_PID if [ -n "$try" ]; then echo " failed. Use force-exit" exit 1 else echo " done" echo " done" fi;; force-quit) echo -n "Terminer php-fpm " if [ ! -r $php_fpm_PID ]; puis echo "attention, aucun fichier pid trouvé - php-fpm n'est pas en cours d'exécution ?" exit 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid supprimé $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi;; redémarrage) $0 stop $0 start;; recharger) echo -n "Recharger le service php-fpm " if [ ! -r $php_fpm_PID ]; puis echo "attention, aucun fichier pid trouvé - php-fpm n'est pas en cours d'exécution ?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done";; *) echo "Utilisation :$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.0.32-fpm
insserv php-7.0.32-fpm
Et maintenant, créez le fichier d'unité systemd
nano /lib/systemd/system/php-7.0.32-fpm.service
avec le contenu suivant :
[Unité]
Description=Le gestionnaire de processus PHP 7 FastCGI
Après=network.target
[Service]
Type=simple
PIDFile =/opt/php-7.0.32/var/run/php-fpm.pid
ExecStart=/opt/php-7.0.32/sbin/php-fpm --nodaemonize --fpm-config /opt/ php-7.0.32/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.targetActivez le service et rechargez systemd :
systemctl enable php-7.0.32-fpm.service
systemctl daemon-reloadLancez enfin PHP-FPM.
Pour les systèmes avec un système d'initialisation traditionnel, exécutez :
/etc/init.d/php-7.0.32-fpm startLe résultat devrait être :
/etc/init.d/php-7.0.32-fpm start
Démarrage de php-fpm terminéSur les serveurs qui utilisent systemd, utilisez plutôt cette commande :
systemctl démarrer php-7.0.32-fpm.servicePour activer Zend OPcache, ouvrez /opt/php-7.0.32/lib/php.ini...
nano /opt/php-7.0.32/lib/php.ini... et ajoutez la ligne suivante à la fin :
[...]zend_extension=opcache.soL'extension Memcache et APCu ne peut pas encore être installée sur PHP 7, 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.
Testez la version PHP :
cd /opt/php-7.0.32/bin
./php --versionLe résultat devrait ressembler à cette capture d'écran.
Veuillez noter : La capture d'écran provient de PHP 7.0.0, le didacticiel est mis à jour en permanence pour les nouvelles versions de PHP 7, mais nous ne prenons pas de nouvelles captures d'écran à chaque fois. La version de PHP 7 que vous verrez sur votre serveur est donc probablement plus récente. La version actuelle de ce tutoriel est pour php-7.0.32.
4 Activer PHP 7 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.0.0) - 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 :
Chemin vers le binaire PHP FastCGI : /opt/php-7.0.32/bin/php-cgi
Chemin vers le répertoire php.ini : /opt/php-7.0.32/lib
Accédez ensuite à l'onglet Paramètres PHP-FPM et remplissez les champs comme suit :
Chemin d'accès au script d'initialisation PHP-FPM : php-7.0.32-fpm
Chemin vers le répertoire php.ini : /opt/php-7.0.32/lib
Chemin vers le répertoire du pool PHP-FPM : /opt/php-7.0.32/etc/php-fpm.d
5 liens
- PHP :http://www.php.net/
- ISPConfig :http://www.ispconfig.org/
- Debian :http://www.debian.org/