Як встановити PHP 7.1 як PHP-FPM і FastCGI для ISPConfig 3.1 на Debian 8 (Jessie)

Як встановити PHP 7.1 як PHP-FPM і FastCGI для ISPConfig 3.1 на Debian 8 (Jessie)

Остаточна версія PHP 7.1 доступна для завантаження Github і дзеркала PHP зараз. PHP 7.1 - це наступне покоління мови програмування PHP, це до 2 разів швидше, ніж PHP 5.6 і 14 разів швидше, ніж PHP 5.0 відповідно до приміток до випуску. Нова версія PHP не сумісна з 100% з PHP 5.x, оскільки деякі застарілі API були вилучені, тому рекомендується почати тестування веб-сайтів на сумісність з новим випуском. Це можна зробити легко, не впливаючи на всі сайти на вашому сервері, використовуючи функцію декількох версій PHP у ISPConfig 3. Версію PHP можна вибрати в налаштуваннях веб-сайту ISPConfig 3 для кожного сайту окремо. Ця функція працює з PHP-FPM та FastCGI. Цей підручник показує, як створити новий PHP 7.1 як PHP-FPM та FastCGI-версію на сервері Jessie Debian. Цей PHP 7.1 складається з багатьох складених у розширеннях та Zend OPcache та Memcached як завантажуваних модулів.

Попередня примітка 1

Я встановлю PHP 7.1, який був випущений як остання версія кілька днів тому. Зверніть увагу, що PHP-FPM може використовуватися як на серверах Apache, так і на Nginx, тоді як FastCGI доступний лише для серверів Apache.

У старих версіях PHP PHP-FPM та FastCGI були взаємовиключними, тому бинарність FPM та FastCGI повинна бути побудована окремо. За допомогою PHP 7.1 можна побудувати єдиний бінарний файл, що підтримує режим FPM та FCGI.

2 Скомпонуйте PHP 7.1 з PHP-FPM та Fastcgi

Завантажте та витягніть PHP 7.1 з Github:

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

cd php-7.1.0 /

Встановіть необхідні умови для побудови PHP 7.1 та nano-редактора, які я буду використовувати для редагування файлів конфігурації:

apt-get install install-essential nano autoconf

APT-отримати установку libfcgi-DEV libfcgi0ldbl libjpeg62-турбо-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

(Остання команда потрібна, якщо ви створюєте PHP з -with-imap, тому що інакше. / Configure не зупиниться з наступною помилкою:

перевірити скріпт в -lcrypt ... так
configure: error: Не вдається знайти бібліотеку imap (libc-client.a). Будь ласка, перевірте встановлення c-клієнта.
[email protected]: / usr / local / src / php5-build / php-7.0.7 #

)

Налаштуйте та створюйте PHP 7.1 таким чином (ви можете налаштувати команду ./configure відповідно до ваших потреб, подивіться на

./configure -help

щоб побачити всі доступні варіанти; якщо ви використовуєте іншу команду ./configure, можливо, що потрібні додаткові бібліотеки, або процес збирання не буде виконаний):

./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 -inable-inline-optimization -with-bz2 -with-zlib -enable-sockets -enable-sysvsem -enable- sysvshm -enable-pcntl -enable-mablebex -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

Останній перемикач (-enable-fpm) гарантує, що ця PHP-версія буде працювати з PHP-FPM.

зробити
зробити установку

Скопіюйте php.ini та php-fpm.conf у правильні місця розташування:

cp /usr/local/src/php7-build/php-7.1.0/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

Відкрийте /opt/php-7.1/etc/php-fpm.conf та налаштуйте наступну настройку (видаліть перед передньою лінією):

nano /opt/php-7.1/etc/php-fpm.conf

[...] pid = run / php-fpm.pid [...]

Потім відкрийте /opt/php-7.1/etc/php-fpm.d/www.conf та налаштуйте рядок прослуховування, ви повинні використовувати невикористовуваний порт (наприклад, 8999; порт 9000 може бути використаний за замовчуванням Debian за замовчуванням PHP-FPM). :

nano /opt/php-7.1/etc/php-fpm.d/www.conf

[...] слухати = 127.0.0.1: 8999 [...]

Якщо ви використовуєте декілька додаткових версій PHP, то для наступних версій використовуйте безкоштовний порт, наприклад, 8998, 8997 і так далі.

3 Створіть ініціативний скрипт та файл системного блоку

Debian підтримує Systemd, а також традиційні сценарії init. Більшість систем сьогодні використовують Systemd, в цьому випадку продовжуйте використовувати розділ 3.2 для систем із традиційною системою init, дотримуйтесь розділу 3.1, а потім перейдіть до розділу 4. Не встановлюйте як системний, так і init.d-скрипт на тій самій системі.

3.1 Створіть сценарій запуску init.d

Спочатку я створить сценарій init для служби php-fpm, а потім створить системний блок.

Спершу створіть сценарій init для 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

Зробіть ініціалізований скрипт виконуваним і створіть системні пускові посилання:

chmod 755 /etc/init.d/php-7.1-fpm
insserv php-7.1-fpm

Нарешті запустіть PHP-FPM:

/etc/init.d/php-7.1-fpm початок

Результатом має бути:

/etc/init.d/php-7.1-fpm початок
Запуск php-fpm виконано

3.2 Створити сценарій Systemd для PHP 7.1

Тепер створіть файл systemd:

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

з наступним вмістом:

[Unit] Опис = PHP-7.1 FastCGI Process Manager Після = network.target [Сервіс] Тип = простий 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 [Встановити] WantedBy = multi-user.target

Увімкнути службу та перезавантажити systemd:

systemctl увімкнути php-7.1-fpm.service
systemctl daemon-перезавантаження

Нарешті запустіть PHP-FPM:

systemctl почати php-7.1-fpm.service

4 Увімкнути Zend OPcache

Щоб увімкнути Zend OPcache, відкрийте /opt/php-7.1/lib/php.ini...

nano /opt/php-7.1/lib/php.ini

... і в кінці додати наступний рядок:

[...] zend_extension = opacache.so

Розширення Memcache та APCu ще не можна встановити на PHP 7.1, тому я пропущу їх інсталяцію. Я оновлю підручник пізніше, коли розширення pecl сумісні з PHP 7.1.

Перевірте версію PHP:

cd / opt / php-7.1 / bin
./php-версія

Вихід має бути схожим на цей скріншот.

PHP 7.1 з OPcache включено

Будь ласка, запиши: Знімок вікна з PHP 7.1.0, навчальний посібник постійно оновлюється для нових версій PHP 7.1, але ми не приймаємо нових скріншотів кожного разу, тому версія PHP 7.1, яку ви побачите на своєму сервері, може бути новою. Поточна версія цього підручника для php-7.1.0.

5 Увімкнути Memcache (необов'язково)

У цьому розділі я буду компілювати та вмикати розширення PHP Memcached.

Перший крок - встановити пакет libmemcached-dev з Debian.

apt-get install libmemcached-dev

Потім створіть директиву, завантажте розширення PHP memcache з Github, розпакуйте архів і введіть каталог, що містить розпаковані файли.

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
розпакуйте php7.zip
cd php-memcached-php7

Підготовка його джерел, запустивши команду phpize з PHP 7.1.

/ opt / php-7.1 / bin / phpize

Налаштуйте та створіть розширення PHP memcache.

./configure -with-php-config = / opt / php-7.1 / bin / php-config
зробити
зробити установку

Щоб увімкнути розширення Memcache, відкрийте /opt/php-7.1/lib/php.ini...

nano /opt/php-7.1/lib/php.ini

... і в кінці додати наступний рядок:

[...] розширення = memcached.so

6 Увімкніть PHP 7.1 у ISPConfig

У ISPConfig 3 ви можете налаштувати нову версію PHP за допомогою системи> Додаткові версії PHP. На вкладці Ім'я ви просто введете назву для версії PHP (наприклад, PHP 7.1) - ця версія PHP буде вказана під цим ім'ям в налаштуваннях веб-сайту в ISPConfig:

Введіть назву користувацької версії PHP

Перейдіть на вкладку "Настройки FastCGI" і заповніть поля, як вказано нижче.

Шлях до PHP FastCGI двійковий: / opt / php-7.1 / bin / php-cgi
Шлях до каталогу php.ini: / opt / php-7.1 / lib

PHP 7.1 FastCGI

Потім перейдіть на вкладку Параметри PHP-FPM та заповніть поля наступним чином:

Шлях до сценарію ініціалізації PHP-FPM: /etc/init.d/php-7.1-fpm
Шлях до каталогу php.ini: / opt / php-7.1 / lib
Шлях до каталогу пулів PHP-FPM: /opt/php-7.1/etc/php-fpm.d

Параметри PHP 7.1 FPM

Посилання 7

джерело

залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.