PHP установка · 6 min read · Nov 03, 2025

Как установить PHP 7 как PHP-FPM и FastCGI для ISPConfig 3 на Debian 8 (Jessie)

Финальная версия PHP 7 доступна для загрузки на Github и зеркалах PHP. PHP7 — это следующее поколение языка программирования 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 как версию PHP-FPM и FastCGI на сервере Debian Jessie. Эти сборки PHP 7 включают Zend OPcache.

1 Предварительная заметка

Я установлю PHP 7, который в настоящее время находится в бета-версии на момент написания. Пожалуйста, обратите внимание, что PHP-FPM может использоваться как на серверах Apache, так и на Nginx, в то время как FastCGI доступен только для серверов Apache.

С более старыми версиями PHP PHP-FPM и FastCGI были взаимно исключающими, так что бинарные файлы FPM и FastCGI должны были собираться отдельно. С PHP 7 можно собрать один бинарный файл, который поддерживает режимы FPM и FCGI.

2 Компиляция PHP 7 с PHP-FPM и Fastcgi

Скачайте и извлеките PHP 7 с Github:

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

Установите предварительные условия для сборки PHP 7 и редактор nano, который я буду использовать для редактирования конфигурационных файлов:

apt-get install build-essential nano
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

(Последняя команда необходима, если вы собираете PHP с –with-imap, потому что в противном случае ./configure остановится с следующей ошибкой:

checking for crypt in -lcrypt... yes  
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.  
root@server1:/usr/local/src/php5-build/php-7.0.32#

)

Настройте и соберите PHP 7.0.0 следующим образом (вы можете настроить команду ./configure в соответствии с вашими потребностями, посмотрите на

./configure --help

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

./configure --prefix=/opt/php-7.0.32 --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

Последний переключатель ( –enable-fpm) гарантирует, что эта версия PHP будет работать с PHP-FPM.

make  
make install

Скопируйте php.ini и php-fpm.conf в правильные места:

cp /usr/local/src/php7-build/php-7.0.32/php.ini-production /opt/php-7.0.32/lib/php.ini
cp /opt/php-7.0.32/etc/php-fpm.conf.default /opt/php-7.0.32/etc/php-fpm.conf  
cp /opt/php-7.0.32/etc/php-fpm.d/www.conf.default /opt/php-7.0.32/etc/php-fpm.d/www.conf

Откройте /opt/php-7.0.32/etc/php-fpm.conf и измените следующую настройку (уберите ; перед строкой pid):

nano /opt/php-7.0.32/etc/php-fpm.conf
[...]  
pid = run/php-fpm.pid  
[...]  

Затем откройте /opt/php-7.0.32/etc/php-fpm.d/www.conf и измените строку listen, вы должны использовать неиспользуемый порт (например, 8999; порт 9000 может быть уже занят стандартным PHP-FPM Debian):

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

3 Создание скрипта и файла юнита systemd

Debian поддерживает Systemd, а также традиционные скрипты инициализации. Сначала я создам скрипт инициализации для службы php-fpm, а затем создам юнит systemd.

Сначала создайте скрипт инициализации для PHP-FPM:

nano /etc/init.d/php-7.0.32-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-7.0.32-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-7.0.32-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-7.0.32/sbin/php-fpm
php_fpm_CONF=/opt/php-7.0.32/etc/php-fpm.conf
php_fpm_PID=/opt/php-7.0.32/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.0.32-fpm  
insserv php-7.0.32-fpm

А теперь создайте файл юнита systemd

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

с следующим содержимым:

[Unit]  
Description=The PHP 7 FastCGI Process Manager  
After=network.target  
  
[Service]  
Type=simple  
PIDFile=/opt/php-7.0.32/var/run/php-fpm.pid  
ExecStart=/opt/php-7.0.32/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.0.32/etc/php-fpm.conf  
ExecReload=/bin/kill -USR2 $MAINPID  
  
[Install]  
WantedBy=multi-user.target

Включите службу и перезагрузите systemd:

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

Наконец, запустите PHP-FPM.

Для систем с традиционной системой инициализации выполните:

/etc/init.d/php-7.0.32-fpm start

Результат должен быть:

/etc/init.d/php-7.0.32-fpm start  
Starting php-fpm done

На серверах, которые используют systemd, используйте эту команду вместо этого:

systemctl start php-7.0.32-fpm.service

Чтобы включить Zend OPcache, откройте /opt/php-7.0.32/lib/php.ini…

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

… и добавьте следующую строку в конце:

[...]  
zend_extension=opcache.so

Расширения Memcache и APCu пока не могут быть установлены на PHP 7, поэтому я пропущу их установку на данный момент. Я обновлю учебник позже, когда расширения pecl будут совместимы с PHP 7.

Проверьте версию PHP:

cd /opt/php-7.0.32/bin  
./php --version

Вывод должен быть похож на этот скриншот.

Пожалуйста, обратите внимание: Скриншот сделан с PHP 7.0.0, учебник обновляется постоянно для новых версий PHP 7, но мы не делаем новые скриншоты каждый раз, поэтому версия PHP 7, которую вы увидите на своем сервере, вероятно, новее. Текущая версия этого учебника для php-7.0.32.

4 Включение PHP 7 в ISPConfig

В ISPConfig 3 вы можете настроить новую версию PHP в разделе Система > Дополнительные версии PHP. На вкладке Имя просто заполните имя для версии PHP (например, PHP 7.0.0) — эта версия PHP будет отображаться под этим именем в настройках сайта в ISPConfig:

Перейдите на вкладку Настройки FastCGI и заполните поля следующим образом:

Путь к бинарному файлу PHP FastCGI: /opt/php-7.0.32/bin/php-cgi  
Путь к директории php.ini: /opt/php-7.0.32/lib

Затем перейдите на вкладку Настройки PHP-FPM и заполните поля следующим образом:

Путь к скрипту инициализации PHP-FPM: php-7.0.32-fpm  
Путь к директории php.ini: /opt/php-7.0.32/lib  
Путь к директории пула PHP-FPM: /opt/php-7.0.32/etc/php-fpm.d  

5 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.