Установка Debian 9 Stretch LAMP с изолированными пользователями, использующими FPM

Я пытаюсь настроить Apache и FPM на Debian 9 так же, как мы это делали ранее с Debian 7 и 8. Я полагаю, что из-за устаревшего mod_fastcgi в пользу mod_proxy_fcgi в Apache 2.4 и последующего удаления его из Репозитории Debian 9 apt, я не смог выполнить нашу предыдущую настройку. По сути, мы использовали FPM для "песочницы" нескольких сайтов на одном сервере (промежуточный /dev-сервер). Конечный результат состоял в том, что каждый сайт принадлежал и группировался по одному пользователю, и FPM запускал сайт в соответствии с процессами для этого конкретного пользователя.

Вот пример Apache vhost, который мы использовали:

FastCgiExternalServer /home/siteusername/www/php5-fcgi -socket /tmp/php5-fpm-siteusername.sock -pass-header Authorization

<VirtualHost *:80>
   DocumentRoot /home/username/www/domain.com/public_html/
   ServerName www.domain.com

   <Directory /home/siteusername/www/domain.com/public_html/>
      AllowOverride all
   </Directory>

   <Directory /home/siteusername/www/>
       Require all granted
       AllowOverride all
   </Directory>

   AddHandler php5-fcgi .php
   Action php5-fcgi /php5-fcgi
   Alias /php5-fcgi /home/siteusername/www/php5-fcgi

   <ifModule mod_headers.c>
      Header set X-Robots-Tag "noindex"
   </ifModule>
</VirtualHost>

Вот пример конфигурации FPM, которую мы использовали:

[siteusername]
listen = /tmp/php5-fpm-siteusername.sock

listen.allowed_clients = 127.0.0.1
listen.owner = www-data
listen.group = www-data

user = siteusername
group = siteusername

pm = ondemand
pm.max_children = 50

php_admin_value[upload_tmp_dir] = /home/siteusername/tmp/upload
php_admin_value[session.save_path] = /home/siteusername/tmp/session

Точная настройка Debian 9 с Apache 2.4, PHP 7.0, FPM 7.0 с mod_proxy_fcgi (и обновленными номерами версий) приводит к ошибке при запуске Apache:

Invalid command 'FastCgiExternalServer', perhaps misspelled or defined by a module not included in the server configuration

Я предполагаю, что команда была частью mod_fastcgi, и без нее я не могу запускать сайты под своими пользователями. Вместо этого они работают под www-данными, как любой обычно настроенный сайт Apache.

До сих пор я не смог найти документацию о том, как выполнить эту конфигурацию. У кого-нибудь есть идеи, что такое обновленные конфиги для mod_proxy_fcgi?

2 ответа

Попробуй это.

В своем определении FPM ADAPT имя сокета, чтобы соответствовать правильной версии php

[siteusername]
listen = /tmp/php7-fpm-siteusername.sock

(В Debian 9 это уже не php5, а php7)

В вашем определении Vhost УДАЛИТЕ следующее

FastCgiExternalServer /home/siteusername/www/php5-fcgi -socket /tmp/php5-fpm-siteusername.sock -pass-header Authorization
...
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /home/siteusername/www/php5-fcgi

В том же определении vhost ADD следующее

<FilesMatch \.php$>
   SetHandler "proxy:unix:/tmp/php7-fpm-siteusername.sock|fcgi://localhost"
</FilesMatch>

В качестве альтернативы, вы можете добавить следующее в вашем определении vhost

ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/tmp/php7-fpm-siteusername.sock|fcgi://localhost/home/siteusername/www/"

Убедитесь, что модули mod_proxy и mod_proxy_fcgi включены

a2enmod proxy proxy_fcgi

Я был в той же ситуации, что и вы, и я нашел это решение.

https://www.devops.zone/webserver/installing-php7-fpm-with-apache2-worker-on-ubuntu/

Меня устраивает.

Удачи

Другие вопросы по тегам