Мне удалось получить FastCGI, работающий с Apache 2.4 на Ubuntu 16.04 путем адаптации инструкций от этого потока askubuntu, этого документа HowtoForge и этого Цифрового Океанского учебного руководства.
Все те источники говорят для создания /etc/apache2/conf-available/php7.0-fpm.conf
и скажите Вам, что вставить его. Но после установки php-fpm
, У меня уже есть тот файл со следующим содержанием:
# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
</FilesMatch>
<FilesMatch ".+\.phps$">
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
Require all denied
</FilesMatch>
</IfModule>
Таким образом, я вместо этого создал свой собственный conf и поместил код из инструкций в нем и включил его.
Каково существующее php7.0-fpm.conf
для? Если я включаю его в дополнение к своему conf, мои веб-сайты прекращают работать. Я волнуюсь, что я не выполнение этого способ, которым это предназначается, чтобы быть сделанным и могло иметь проблемы в будущем. Действительно трудно найти хорошую, текущую документацию относительно этого.
Для ссылки вот моя вся процедура:
sudo apt install libapache2-mod-fastcgi php-fpm
sudo a2dismod php7.0 mpm_prefork
sudo a2enmod actions fastcgi alias mpm_worker
sudoedit /etc/apache2/conf-available/custom-fpm.conf
Содержание /etc/apache2/conf-available/custom-fpm.conf
:
<IfModule mod_fastcgi.c>
AddHandler php7-fcgi .php
Action php7-fcgi /php7-fcgi virtual
Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
Команды продолжены:
sudo a2enconf custom-fpm
sudo systemctl restart apache2 && sudo systemctl restart php7.0-fpm
Заранее спасибо за Вашу справку.
Я поразил тот же беспорядок, я чувствую Вашу боль. После большого чтения мне стало ясно, что большинство статей устарело и обращается к предыдущим методам (или иногда комбинации).
Используя PHP-FPM с Ubuntu 16.04's встроенная конфигурация, только необходимо сделать это:
sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi
Я сделал большую часть того, что Вы сделали, затем удалили все это, когда та пользовательская конфигурация не имела смысла.
Для чего существующий php7.0-fpm.conf?
Конфигурация, которую Вы нашли установленным пакетом, для использования mod_proxy_fcgi. Это связывает .php файлы через mod_proxy_fcgi к PHP FPM, с помощью mod_proxy, через Сокет Домена Unix. Поскольку далеко я знаю, что это - самый актуальный "рецепт" (шести, теперь доступных!)
Вы не должны устанавливать libapache2-mod-fastcgi
это - другой, более старый метод. Вы не должны писать, что конфигурация - это для использования mod_fastcgi непосредственно. Вы не должны устанавливать actions fastcgi alias
поскольку они должны настроить mod_fastcgi.
Я действительно нахожу это нечетным, что ни одна из статей - даже статьи для Ubuntu 16 - упоминают, что новый рецепт все настраивается для Вас!
Этот комментарий разъяснил историю для меня:
Предпочтительный метод теперь fastcgi, с помощью любого из тех рецептов:
(mod_fastcgi, httpd 2.2) http://wiki.apache.org/httpd/php-fastcgi
(mod_fcgid, httpd 2.2) http://wiki.apache.org/httpd/php-fcgid
(mod_proxy_fcgi, httpd 2.4) http://wiki.apache.org/httpd/PHP-FPM
http://php.net/manual/en/install.unix.debian.php#112544 (2013)
Кроме того, эта статья от Apache, детализирует эти три подопции для конфигурирования mod_proxy_fcgi для соединения с FPM, с помощью или ProxyPassMatch или SetHandler + UDS. Обратите внимание, что UDS начиная с Apache 2.4.10 на https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html, таким образом, каждому нужны испытанные бэкпорты или более новый.
https://wiki.apache.org/httpd/PHP-FPM
Таким образом, я приехал для визуализации существует теперь шесть способов настроить его:
Примерно в историческом порядке:
Apache модуль PHP: mod_php (старый путь)
Через FastCGI - использующий конфигурацию Handler/Action/Alias/FastCgiExternalServer
a. mod_fastcgi
b. mod_fcgid
Используя PHP-FPM через mod_proxy_fcgi, настроенный через также:
a. Сокет TCP (IP и порт) ProxyPassMatch... fcgi://127.0.0.1:9000/path/
b. Сокет домена Unix (UDS) ProxyPassMatch … unix:/path/to/socket
c. (UDS) через SetHandler "proxy:unix: ИЛИ SetHandler "proxy:fcgi:
Отказ от ответственности: это все плохо мне знакомо, таким образом, я, вероятно, все еще понял превратно пять вещей и десять вещей учиться.