Kompilace PHP 7.1 jako PHP-FPM, Fastcgi a přidání jako další verze

Přidání další verze PHP nemusí být úplně jednoduché a ne vždy se to povede. Tento proces není složitý, nicméně provedení kompilace a instalace nějaký ten čas zabere. Tento díl předpokládá, že máte nainstalovány základy jako je třeba editor nano. Pro instalaci základů mrkněte na náš starší díl: Instalace základů pro instalaci dalších verzí PHP.

Jako první začneme vytvořením složky, do které stáhneme instalační archív a v ní ho následně rozbalíme.

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

A teď nakonfigujeme a následně vytvoříme PHP 7.1 – můžete si nastavit konfiguraci jinak, volby zjistíte následujícím příkazem

./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 pracovat s PHP-FPM.

make
make install

Zkopírujte php.ini a php-fpm.conf na správná místa:

cp /usr/local/src/php7.1-build/php-7.1/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í (odeberte ; 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 „poslouchací“ řádek, musíte použít nevyužitý port (např. 8999; port 9000 může být používán již výchozím PHP-FPM Debianu):

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

Dále vytvoříme službu, která se používá ke spuštění a zastavení démona PHP-FPM.

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

a vložíme do ní tento celý kód:

[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

Povolíme službu a znovu načteme systémd:

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

Nakonec spustíme:
systemctl start php-7.1-fpm.service

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řidáme tento řádek:
[...]
zend_extension=opcache.so

Dále zkompilujeme a povolíme rozšíření PHP Memcached. Prvním krokem je instalace balíčku libmemcached-dev z Debianu.

apt-get install libmemcached-dev

Poté vytvořte složku, do které stáhněte rozšíření PHP memcache z Githubu, rozbalte archiv a přesuňte se do adresáře, který obsahuje rozbalené soubory.
mkdir /usr/local/src/php7.1-build/php-memcache
cd /usr/local/src/php7.1-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 vytvořte 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 řádek:
[...]
extension=memcached.so

Modul xDebug je ladicí rozšíření pro PHP. Instalace je volitelná.
Nainstalujte xDebug těmito příkazy:

cd /opt/php-7.1/etc
../bin/pecl -C ./pear.conf update-channels
../bin/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 službu:
systemctl start php-7.1-fpm.service

Vyzkoušejte verzi PHP:
cd /opt/php-7.1/bin
./php --version

PHP 7.1.14 (cli) (built: Aug  6 2020 23:53:44) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.14, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans

V ISPConfig 3.1 můžete novou verzi PHP nakonfigurovat v části Systém –> Další verze PHP. Na kartě Název stačí vyplnit název verze PHP (např. PHP 7.1) – tato verze PHP bude uvedena pod tímto názvem 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é na kartě Nastavení PHP-FPM vyplňte následující pole:

Path to the PHP-FPM init script: 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


Nyní by již vše mělo být funkční. V nastavení webu nyní existuje nová verze PHP, na kterou můžete web přepnout.


Instalace základů pro instalaci dalších verzí PHP

Pro některé z našich kompilací budeme potřebovat mít nainstalované některé aplikace, jako je například nano, a stažené některé knihovny pro klidný běh.