GNU/Linux >> Znalost Linux >  >> Debian

Jak nainstalovat PHP 7.1.16 jako PHP-FPM &FastCGI pro ISPConfig 3.1 na Debian 8 (Jessie)

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

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

Debian
  1. Jak nainstalovat PHP 8.0 na Debian 11

  2. Jak nainstalovat PHP 8.0 na Debian 10 / Debian 9

  3. Jak nainstalovat PHP na Debian 11

  1. Jak vytvořit PHP 5.6 (PHP-FPM &FastCGI) pomocí Zend OPcache a APCu pro ISPConfig 3 na Debianu 7 (Wheezy)

  2. Jak nainstalovat PHP 7.4 na Debian 10

  3. Jak nainstalovat PHP 7.3 na Debian 10

  1. Jak nainstalovat PHP na Debian 9

  2. Jak nainstalovat PHP 8 na Debian 10

  3. Jak nainstalovat PHP 7.2 na Debian 9