Установка 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/
Меня устраивает.
Удачи