Gentoo: Запуск двух версий PHP для использования в Nginx

Иногда нужно запустить 2 абсолютно разные версии PHP на одном сервере для поддержки старых скриптов.
Есть 2 варианта:
1. PHP-FPM
2. spawn-fcgi

ВАРИАНТ 1

cd /etc/init.d
ln -s php-fpm php5.6
ln -s php-fpm php7.0
#запуск
service php5.6 start
service php7.0 start
#добавление в автозагрузку
rc-update add php5.6 default
rc-update add php7.0 default
Не забудьте поправить конфиг php-fpm

ВАРИАНТ 2

1. Установите www-servers/spawn-fcgi
sudo emerge -av www-servers/spawn-fcgi
2. Установите PHP нужных версий с поддержкой fpm и cgi
USE="cgi fpm" sudo emerge -av dev-lang/php:5.6 dev-lang/php:7.0
3. Выберите, как будете их использовать с Nginx. Есть вариант использовать один сервис как php-fpm, а другой как cgi через spawn-fcgi, либо оба через spawn-fcgi. В моем случае, т.к. устаревших скриптов больше, я использую php-5.6 в режиме php-fpm, а php-7.0 я настрою через spawn-fcgi.

Убедитесь, что у вас в режиме fpm выбрана правильная версия PHP
eselect php list fpm
  [1]   php5.6 *
  [2]   php7.0
Если нет, то:
eselect php set fpm 1

4. Готовим конфиг php-7.0 для spawn-fcgi
cp /etc/conf.d/spawn-fcgi /etc/conf.d/spawn-fcgi.php7.0
5. Редактируем конфиг /etc/conf.d/spawn-fcgi.php7.0
FCGI_SOCKET=
FCGI_ADDRESS=127.0.0.1
FCGI_PORT=9001
FCGI_PROGRAM=/usr/bin/php-cgi7.0
FCGI_CHILDREN=1
FCGI_CHROOT=
FCGI_CHDIR=
FCGI_USER=nginx
FCGI_GROUP=nginx
FCGI_EXTRA_OPTIONS="-M 0700"
ALLOWED_ENV="PATH"
PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=5000
6. Создаем симлинк для запуска сервиса
ln -s /etc/init.d/spawn-fcgi /etc/init.d/spawn-fcgi.php7.0
7. Запускаем
/etc/init.d/spawn-fcgi.php7.0 start #or service spawn-fcgi.php7.0 start
8. Проверяем
netstat -ln | grep 9001
tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN
9. Добавляем его в конфиг Nginx, кому как привычно
fastcgi_pass  127.0.0.1:9001;
или
upstream php-7.0 {
    server 127.0.0.1:9001;
}
10. Добавить сервис в автозагрузку
rc-update add spawn-fcgi.php7.0 default


Похожие новости

Комментариев 0