Finální verze PHP 7.1 je nyní k dispozici ke stažení na Github a v PHP mirrorech. PHP 7.1 je další generací programovacího jazyka PHP, podle poznámek k verzi je až 2krát rychlejší než PHP 5.6 a 14krát rychlejší než PHP 5.0. Nová verze PHP není 100% kompatibilní s PHP 5.x, protože některá zastaralá API byla odstraněna, takže je dobré začít testovat vaše webové stránky na kompatibilitu s touto novou verzí. To lze provést snadno a bez ovlivnění všech webů na vašem serveru pomocí funkce více verzí PHP v ISPConfig 3. Verzi PHP lze vybrat v nastavení webu ISPConfig 3 pro každý web jednotlivě. Tato funkce funguje s PHP-FPM a FastCGI. Tento tutoriál ukazuje, jak vytvořit nové PHP 7.1 jako verzi PHP-FPM a FastCGI na serveru Debian Jessie. Toto sestavení PHP 7.1 obsahuje mnoho zkompilovaných rozšíření a Zend OPcache a Memcached jako načítatelné moduly.
1 předběžná poznámka
Nainstaluji PHP 7.1, které bylo před několika dny vydáno jako finální verze. Upozorňujeme, že PHP-FPM lze použít na serverech Apache i Nginx, zatímco FastCGI je k dispozici pouze pro servery Apache.
U starších verzí PHP se PHP-FPM a FastCGI vzájemně vylučovaly, takže binární soubor FPM a FastCGI bylo nutné sestavit samostatně. S PHP 7.1 lze sestavit jeden binární soubor, který podporuje režimy FPM a FCGI.
2 Kompilace PHP 7.1 s PHP-FPM a Fastcgi
Stáhněte a extrahujte PHP 7.1 z 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/
Nainstalujte si předpoklady pro sestavení PHP 7.1 a nano editor, který budu používat k úpravě konfiguračních souborů:
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
(Poslední příkaz je nutný, pokud vytváříte PHP s --with-imap, protože jinak se ./configure zastaví s následující chybou:
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#
)
Nakonfigurujte a sestavte PHP 7.1 následovně (příkaz ./configure si můžete upravit podle svých potřeb, podívejte se na
./configure --help
zobrazit všechny dostupné možnosti; pokud použijete jiný příkaz ./configure, je možné, že budou vyžadovány další knihovny nebo proces sestavení selže):
./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
Poslední přepínač (--enable-fpm) zajišťuje, že tato verze PHP bude fungovat s PHP-FPM.
make
make install
Zkopírujte php.ini a php-fpm.conf do správných umístění:
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
Otevřete /opt/php-7.1/etc/php-fpm.conf a upravte následující nastavení (odstraňte; před řádkem pid):
nano /opt/php-7.1/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...]
Poté otevřete /opt/php-7.1/etc/php-fpm.d/www.conf a upravte řádek naslouchání, musíte použít nepoužívaný port (např. 8999; port 9000 již může používat výchozí PHP-FPM Debianu) :
nano /opt/php-7.1/etc/php-fpm.d/www.conf
[...] listen = 127.0.0.1:8999 [...]
Pokud používáte více dalších verzí PHP, ujistěte se, že používáte volný port, např. 8998, 8997 a tak dále pro další verze.
3 Vytvořte init skript a soubor systemd unit
Debian podporuje Systemd i tradiční init skripty. Většina systémů dnes používá Systemd, v tomto případě pokračujte kapitolou 3.2, u systémů s tradičním systémem init postupujte podle kapitoly 3.1 a poté pokračujte kapitolou 4. Neinstalujte oba, skript systemd a init.d, na stejný systém.
3.1 Vytvořte spouštěcí skript init.d
Nejprve vytvořím init skript pro službu php-fpm a poté vytvořím jednotku systemd.
Nejprve vytvořte init skript pro 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
Vytvořte spustitelný init skript a vytvořte odkazy pro spuštění systému:
chmod 755 /etc/init.d/php-7.1-fpm
insserv php-7.1-fpm
Nakonec spusťte PHP-FPM:
/etc/init.d/php-7.1-fpm start
Výsledek by měl být:
/etc/init.d/php-7.1-fpm start
Starting php-fpm done
3.2 Vytvoření skriptu Systemd pro PHP 7.1
Nyní vytvořte soubor systemd unit:
nano /lib/systemd/system/php-7.1-fpm.service
s následujícím obsahem:
[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
Povolte službu a znovu načtěte systemd:
systemctl enable php-7.1-fpm.service
systemctl daemon-reload
Nakonec spusťte PHP-FPM:
systemctl start php-7.1-fpm.service
4 Povolit Zend OPcache
Chcete-li povolit Zend OPcache, otevřete /opt/php-7.1/lib/php.ini...
nano /opt/php-7.1/lib/php.ini
... a na konec přidejte následující řádek:
[...] zend_extension=opcache.so
Rozšíření Memcache a APCu zatím nelze nainstalovat na PHP 7.1, takže jejich instalaci prozatím vynechám. Tutoriál aktualizuji později, až budou rozšíření pecl kompatibilní s PHP 7.1.
Otestujte verzi PHP:
cd /opt/php-7.1/bin
./php --version
Výstup by měl být podobný tomuto snímku obrazovky.
Poznámka: Snímek obrazovky pochází z PHP 7.1.16, výukový program se průběžně aktualizuje pro nové verze PHP 7.1, ale nepořizujeme pokaždé nové snímky obrazovky, takže verze PHP 7.1, kterou uvidíte na svém serveru, může být novější. Aktuální verze tohoto návodu je pro php-7.1.16.
5 Povolit Memcache (volitelné)
V této kapitole zkompiluji a povolím rozšíření PHP Memcached.
Prvním krokem je instalace balíčku libmemcached-dev z Debianu.
apt-get install libmemcached-dev
Poté vytvořte adresář, stáhněte si rozšíření PHP memcache z Github, rozbalte archiv a zadejte adresář, který obsahuje rozbalené soubory.
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
Připravte zdroje spuštěním příkazu phpize z PHP 7.1.
/opt/php-7.1/bin/phpize
Nakonfigurujte a sestavte rozšíření PHP memcache.
./configure --with-php-config=/opt/php-7.1/bin/php-config
make
make install
Chcete-li povolit rozšíření Memcache, otevřete /opt/php-7.1/lib/php.ini...
nano /opt/php-7.1/lib/php.ini
... a na konec přidejte následující řádek:
[...] extension=memcached.so
2.1 Instalace rozšíření xDebug (volitelné)
Modul xDebug je ladicí rozšíření pro PHP. Instalace je volitelná.
Nainstalujte xDebug pomocí těchto příkazů.
cd /opt/php-7.1/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install xdebug
Poté upravte soubor php.ini pomocí editoru:
nano /opt/php-7.1/lib/php.ini
a na konec souboru přidejte následující řádek:
zend_extension=/opt/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Nakonec restartujte démona php-fpm:
service php-7.1-fpm restart
7 Povolení PHP 7.1 v ISPConfig
V ISPConfig 3 můžete nakonfigurovat novou verzi PHP v části Systém> Další verze PHP. Na záložce Název pouze vyplníte název pro verzi PHP (např. PHP 7.1) - tato verze PHP bude pod tímto názvem uvedena v nastavení webu v ISPConfig:
Přejděte na kartu Nastavení FastCGI a vyplňte pole následovně:
Path to the PHP FastCGI binary: /opt/php-7.1/bin/php-cgi
Path to the php.ini directory: /opt/php-7.1/lib
Poté přejděte na kartu Nastavení PHP-FPM a vyplňte pole následovně:
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
7 odkazů
- PHP:http://www.php.net/
- ISPConfig:http://www.ispconfig.org/
- Debian:http://www.debian.org/