Конфигурирование Apache 2.4 с FastCGI на Ubuntu 16.04 - Что я делаю с php7.0-fpm.conf?

Мне удалось получить 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

Заранее спасибо за Вашу справку.

5
задан 24 May 2017 в 14:40

1 ответ

Я поразил тот же беспорядок, я чувствую Вашу боль. После большого чтения мне стало ясно, что большинство статей устарело и обращается к предыдущим методам (или иногда комбинации).

Используя 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

Таким образом, я приехал для визуализации существует теперь шесть способов настроить его:

Примерно в историческом порядке:

  1. Apache модуль PHP: mod_php (старый путь)

  2. Через FastCGI - использующий конфигурацию Handler/Action/Alias/FastCgiExternalServer

    a. mod_fastcgi

    b. mod_fcgid

  3. Используя 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:

Отказ от ответственности: это все плохо мне знакомо, таким образом, я, вероятно, все еще понял превратно пять вещей и десять вещей учиться.

12
ответ дан 23 November 2019 в 08:46

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

Похожие вопросы: