Debian 9 se dodává s PHP 7.0 jako výchozí verzí PHP. Hlavní verze PHP nejsou vzájemně 100% kompatibilní, takže web může ke svému fungování vyžadovat novější nebo starší verzi PHP. ISPConfig podporuje použití více verzí PHP na stejném serveru, verzi PHP lze vybrat pro každý web zvlášť v nastavení webu. Tento tutoriál ukazuje, jak nainstalovat PHP 7.1, 7.2 a 5.6 jako režim FPM a FCGI spolu s PHP 7.0 na server Debian 9. Další verze PHP jsou nainstalovány ve složce /opt, takže jejich instalace neovlivní výchozí verzi PHP.
AKTUALIZACE:Doporučuje se nyní nainstalovat další verze PHP na Debian a Ubuntu z balíčků. Tutoriál naleznete zde:https://www.howtoforge.com/tutorial/how-to-install-php-7-for-ispconfig-3-from-debian-packages-on-debian-8-and-9 /
1 předběžná poznámka
Nainstaluji PHP 7.1, 7.2 a 5.6. Upozorňujeme, že PHP-FPM lze použít na serverech Apache i Nginx, zatímco FastCGI je k dispozici pouze pro servery Apache.
2 Nainstalujte předpoklady
Nainstalujte si předpoklady pro sestavení PHP a nano editor, který budu používat k úpravě konfiguračních souborů:
apt-get install build-essential nano
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dev libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng-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
cd /usr/include
ln -s x86_64-linux-gnu/curl
(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.1.14#
)
3 Zkompilujte PHP 7.1 jako PHP-FPM a Fastcgi
Stáhněte a rozbalte archiv PHP:
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/
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.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í (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 [...]
3.1 Vytvořte soubor systemd unit
Dále vytvoříme soubor systémové jednotky, který se používá ke spuštění a zastavení démona PHP-FPM.
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
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
3.2 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 z Github rozšíření PHP memcache, rozbalte archiv a zadejte adresář, 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 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
3.3 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
../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 démona php-fpm:
systemctl start php-7.1-fpm.service
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.14, výukový program se průběžně aktualizuje pro nové verze PHP, ale nepořizujeme pokaždé nové snímky obrazovky, takže verze PHP, kterou uvidíte na svém serveru, může být novější. Aktuální verze tohoto návodu je pro php-7.1.14.
3.4 Povolení PHP 7.1 v ISPConfig
V ISPConfig 3.1 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: 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
4 Zkompilujte PHP 7.2 jako PHP-FPM a Fastcgi
Stáhněte a rozbalte PHP z php.net a rozbalte soubor tar.bz2:
mkdir -p /opt/php-7.2
mkdir /usr/local/src/php7.2-build
cd /usr/local/src/php7.2-build
wget http://de2.php.net/get/php-7.2.2.tar.bz2/from/this/mirror -O php-7.2.2.tar.bz2
tar jxf php-7.2.2.tar.bz2
cd php-7.2.2/
Nakonfigurujte a sestavte PHP 7.2 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.2 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --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 --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.2-build/php-7.2.2/php.ini-production /opt/php-7.2/lib/php.ini
cp /opt/php-7.2/etc/php-fpm.conf.default /opt/php-7.2/etc/php-fpm.conf
cp /opt/php-7.2/etc/php-fpm.d/www.conf.default /opt/php-7.2/etc/php-fpm.d/www.conf
Otevřete /opt/php-7.2/etc/php-fpm.conf a upravte následující nastavení (odstraňte; před řádkem pid):
nano /opt/php-7.2/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...]
Poté otevřete /opt/php-7.2/etc/php-fpm.d/www.conf a upravte řádek naslouchání, musíte použít nepoužívaný port (např. 8998; port 9000 již může používat výchozí PHP-FPM Debianu) :
nano /opt/php-7.2/etc/php-fpm.d/www.conf
[...] listen = 127.0.0.1:8998 [...]
4.1 Vytvořte soubor systemd unit
Dále vytvoříme soubor systémové jednotky, který se používá ke spuštění a zastavení démona PHP-FPM.
nano /lib/systemd/system/php-7.2-fpm.service
s následujícím obsahem:
[Unit]
Description=The PHP 7.2 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/opt/php-7.2/var/run/php-fpm.pid
ExecStart=/opt/php-7.2/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.2/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.2-fpm.service
systemctl daemon-reload
Nakonec spusťte PHP-FPM.
systemctl start php-7.2-fpm.service
Chcete-li povolit Zend OPcache, otevřete /opt/php-7.2/lib/php.ini...
nano /opt/php-7.2/lib/php.ini
... a na konec přidejte následující řádek:
[...] zend_extension=opcache.so
4.2 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.2-build/php-memcache
cd /usr/local/src/php7.2-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.2.
/opt/php-7.2/bin/phpize
Nakonfigurujte a sestavte rozšíření PHP memcache.
./configure --with-php-config=/opt/php-7.2/bin/php-config
make
make install
Chcete-li povolit rozšíření Memcache, otevřete /opt/php-7.2/lib/php.ini...
nano /opt/php-7.2/lib/php.ini
... a na konec přidejte následující řádek:
[...] extension=memcached.so
4.3 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.2/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install xdebug
Poté upravte soubor php.ini pomocí editoru:
nano /opt/php-7.2/lib/php.ini
a na konec souboru přidejte následující řádek:
zend_extension=/opt/php-7.2/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
Nakonec restartujte démona php-fpm:
systemctl start php-7.2-fpm.service
Otestujte verzi PHP:
cd /opt/php-7.2/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.2.2, výukový program se průběžně aktualizuje pro nové verze PHP, ale nepořizujeme pokaždé nové snímky obrazovky, takže verze PHP, kterou uvidíte na svém serveru, může být novější. Aktuální verze tohoto návodu je pro php-7.2.2.
4.4 Povolení PHP 7.2 v ISPConfig
V ISPConfig 3.1 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.2) - 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.2/bin/php-cgi
Path to the php.ini directory: /opt/php-7.2/lib
Poté přejděte na kartu Nastavení PHP-FPM a vyplňte pole následovně:
Path to the PHP-FPM init script: php-7.2-fpm
Path to the php.ini directory: /opt/php-7.2/lib
Path to the PHP-FPM pool directory: /opt/php-7.2/etc/php-fpm.d
5 Zkompilujte PHP 5.6 jako PHP-FPM a Fastcgi
Stáhněte si PHP a rozbalte archiv tar.bz2:
mkdir -p /opt/php-5.6
mkdir /usr/local/src/php5.6-build
cd /usr/local/src/php5.6-build
wget http://de2.php.net/get/php-5.6.33.tar.bz2/from/this/mirror -O php-5.6.33.tar.bz2
tar jxf php-5.6.33.tar.bz2
Verze OpenSSL v Debianu 9 je pro PHP 5.6 příliš nová, takže pro použití s PHP 5.6 budeme muset zkompilovat starší verzi v /opt/openssl.
cd /tmp
wget "https://www.openssl.org/source/old/1.0.1/openssl-1.0.1t.tar.gz"
tar xzf openssl-1.0.1t.tar.gz
cd openssl-1.0.1t
./config shared --prefix=/opt/openssl
make -j $(nproc) && make install
ln -s /opt/openssl/lib /opt/openssl/lib/x86_64-linux-gnu
wget -O /opt/openssl/ssl/cert.pem "http://curl.haxx.se/ca/cacert.pem"
Vytvořte symbolický odkaz, aby PHP našlo knihovny freetype, libcrypto a libssl.
mkdir /usr/include/freetype2/freetype
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h
ln -s /opt/openssl/lib/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/
ln -s /opt/openssl/lib/libssl.so.1.0.0 /usr/lib/x86_64-linux-gnu/
ln -fs /opt/openssl /usr/local/ssl
Zadejte složku, která obsahuje rozbalené zdrojové soubory PHP.
cd /usr/local/src/php5.6-build/php-5.6.33/
Nakonfigurujte a sestavte PHP 5.6 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-5.6 --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-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=/opt/openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --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/php5.6-build/php-5.6.33/php.ini-production /opt/php-5.6/lib/php.ini
cp /opt/php-5.6/etc/php-fpm.conf.default /opt/php-5.6/etc/php-fpm.conf
mkdir -p /opt/php-5.6/etc/php-fpm.d
Otevřete /opt/php-5.6/etc/php-fpm.conf a upravte následující nastavení:
nano /opt/php-5.6/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...] user = www-data group = www-data [...] listen = 127.0.0.1:8997 [...] include=/opt/php-5.6/etc/php-fpm.d/*.conf
5.1 Vytvoření souboru systemd unit
Dále vytvoříme soubor systémové jednotky, který se používá ke spuštění a zastavení démona PHP-FPM.
nano /lib/systemd/system/php-5.6-fpm.service
s následujícím obsahem:
[Unit]
Description=The PHP 5.6 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/opt/php-5.6/var/run/php-fpm.pid
ExecStart=/opt/php-5.6/sbin/php-fpm --nodaemonize --fpm-config /opt/php-5.6/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-5.6-fpm.service
systemctl daemon-reload
Nakonec spusťte PHP-FPM.
systemctl start php-5.6-fpm.service
Chcete-li povolit Zend OPcache, otevřete /opt/php-5.6/lib/php.ini...
nano /opt/php-5.6/lib/php.ini
... a na konec přidejte následující řádek:
[...] zend_extension=opcache.so
5.2 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é spusťte tyto příkazy a vytvořte rozšíření memcache
cd /opt/php-5.6/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install memcache
Chcete-li povolit rozšíření Memcache, otevřete /opt/php-5.6/lib/php.ini...
nano /opt/php-5.6/lib/php.ini
... a na konec přidejte následující řádek:
[...] extension=memcache.so
Nakonec restartujte démona php-fpm:
systemctl start php-5.6-fpm.service
Otestujte verzi PHP:
cd /opt/php-5.6/bin
./php --version
Výstup by měl být podobný tomuto snímku obrazovky.
Poznámka: Snímek obrazovky pochází z PHP 5.6.33, výukový program se průběžně aktualizuje pro nové verze PHP, ale nepořizujeme pokaždé nové snímky obrazovky, takže verze PHP, kterou uvidíte na svém serveru, může být novější. Aktuální verze tohoto návodu je pro php-5.6.33.
5.4 Povolení PHP 5.6 v ISPConfig
V ISPConfig 3.1 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 5.6) - 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-5.6/bin/php-cgi
Path to the php.ini directory: /opt/php-5.6/lib
Poté přejděte na kartu Nastavení PHP-FPM a vyplňte pole následovně:
Path to the PHP-FPM init script: php-5.6-fpm
Path to the php.ini directory: /opt/php-5.6/lib
Path to the PHP-FPM pool directory: /opt/php-5.6/etc/php-fpm.d
6 odkazů
- PHP:http://www.php.net/
- ISPConfig:http://www.ispconfig.org/
- Debian:http://www.debian.org/