Я пытаюсь настроить Apache и FPM на Debian 9 так же, как мы делали это ранее с Debian 7 и 8. Я считаю, что из-за устаревания mod_fastcgi в пользу mod_proxy_fcgi в Apache 2.4 и последующего его удаления из Debian 9 apt repos, мне не удалось выполнить нашу предыдущую настройку. По сути, мы использовали 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?
Попробуй это.
В определении FPM АДАПТИРУЙТЕ имя сокета, чтобы оно соответствовало правильной версии 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 ДОБАВЬТЕ следующее
<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/
Меня устраивает.
Удачи