Apache + PHP-FPM на Ubuntu -- Настроить поддержку разных версий php для разных сайтов на одном сервере

Рассмотрим настройку связки Apache + PHP-FPM на ubuntu (16.04 в данном случае).

Что устанавливаем

php5.5 с подключение в Apache2.4 через fpm

Установка и настройка

Настройка Apache

Предположим, что Apache у вас уже установлен, а теперь нам потребуется просто подготовить его к работе с php-fmp.

  1. Для этого установим модуль поддержки fastcgi:
    apt-get -y install libapache2-mod-fastcgi
  2. А также включим его и ещё два модуля:
    sudo a2enmod actions fastcgi alias

Прейдём к настройке php-fpm.

Настройка PHP через fpm

Далее рассмотрим установку из репозитория. Я брал php55 отсюда.

Установим основной пакет с php + модуль работы через fpm:

sudo apt-get  install php55-common php55-fpm

Далее нам потребуется настроить службу fpm -- для этого:

  1. Сначала нужно создать/отредактировать .conf файл в папке fpm/pool.d
    В моём случае я просто скопирую файл:
    /etc/php55/fpm/pool.d/pool-www-data.conf.example

    В ту же папку и изменю имя, так что полный путь к нему будет таким:

    /etc/php55/fpm/pool.d/pool-www-data.conf

    Сделаем это комадой (владельцем оригинального файла у меня был root):

    sudo cp pool-www-data.conf.example pool-www-data.conf
    
  2. Далее перенастроим fpm на прослушивание TCP порта, для этого откроем наш файл на редактирование:

    и заменим строку listen:

    listen = /var/run/php55-fpm/$pool.socket

    на такую (строе можно закомментировать):

    ;listen = /var/run/php55-fpm/$pool.socket
    listen = 127.0.0.1:9000

    -- таким образом мы указываем службе php-fmp слушать 9000 порт -- именно через него она будет общаться с Apache.

    Также убедитесь, что параметр prefix верен.

  3. Перезагружаем службу фмп:
    sudo systemctl reload php55-fpm.service

    (если будет соощение о том, что служба не запустилась, выполните то же самое начните с systemctl start ) -- возможны проблемы, их причины можно диагностировать так.

    -- точное название службы можно узнать так (заодно проверить установилась ли она у вас).

Далее нам надо будет указать что для конкретного виртуальонго хоста надо использовать именно нашё фпм-службу.

Правка конфига виртуального хоста

Для этого добавим в конфиг виртуального хоста нашего сайта:

<FilesMatch \.php$>
	# Change this "proxy:unix:/path/to/fpm.socket"
	# if using a Unix socket
	SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

Источники:

vedro-compota's picture

То нужно пробовать так (перезапуск вручную):

sudo /etc/init.d/php55-fpm restart

-- так же можно узнать причину ошибки.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Завести с настройкой типа:

<IfModule mod_fastcgi.c>

    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000  -pass-header Authorization$

 <Directory /usr/lib/cgi-bin>
   Require all granted
 </Directory>

</IfModule>

не получилось.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

подобное решение использовалось тут: http://fkn.ktu10.com/?q=node/8536

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Test php53-fpm configuration /etc/init.d/php53-fpm: 145: /etc/init.d/php53-fpm: /etc/php53/fpm/pool.d/usr/lib/php53/php-fpm-checkconf: not found
failed

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

_____________
матфак вгу и остальная классика =)