Требуется изменение конфигурации для Apache + PhP-FPM 7.2?

До сих пор я использовал сервер Ubuntu 16.04.5 с Apache, Nginx в качестве обратного прокси, PHP 7.0 + FastCGI + FPM, все обновлено до последней версии. Все прошло нормально.

Это один виртуальный хост Apache, скажем, для x.com:

<VirtualHost *:8080>
    ServerName x.com
    ServerAlias www.x.com
    ServerAdmin x@mail.com
    DocumentRoot /home/user/x.com/site
    ErrorLog /home/user/x.com/logs/error.log
    CustomLog /home/user/x.com/logs/access.log combined
    <Directory /home/user/x.com/site>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
    </Directory>
    <IfModule mod_fastcgi.c>
        AddHandler php7.2-fcgi-x.com .php
        Action php7.2-fcgi-x.com /php7.2-fcgi-x.com
        Alias /php7.2-fcgi-x.com /usr/lib/cgi-bin/php7.2-fcgi-x.com
        FastCgiExternalServer /usr/lib/cgi-bin/php7.2-fcgi-x.com -socket /var/run/php/php7.2-fpm.x.com.sock -pass-header Authorization
        <Directory /usr/lib/cgi-bin>
            Require all granted
        </Directory>
    </IfModule>
</VirtualHost>

Это один файл .conf пула FPM для x.com:

[x.com]

user = user
group = www-data

listen = /run/php/php7.2-fpm.x.com.sock

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

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Теперь я использую то же самое, но с Ubuntu 18.04.1 и PHP, FPM и т. Д. - 7.2. Это чистая установка, а не обновление по сравнению с другими версиями.

Кажется, все работает нормально, но я не совсем уверен, потому что я видел, как несколько человек размещали такие конфигурации PHP-FPM 7.2, как это:

<VirtualHost *:8080>
    ServerName x.com
    ServerAlias www.x.com
    ServerAdmin x@mail.com
    DocumentRoot /home/user/x.com/site
    ErrorLog /home/user/x.com/logs/error.log
    CustomLog /home/user/x.com/logs/access.log combined
    <Directory /home/user/x.com/site>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    <FilesMatch \.php$>
        # 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
        # Else we can just use a tcp socket:
        #SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</VirtualHost>

Теперь это не работает для меня, даже если я удалю отдельные файлы .conf FPM . И я просто не понимаю, что делает строка SetHandler "proxy: unix: /var/run/php/php7.2-fpm.sock | fcgi: // localhost /" , или как один простой строка может заменить весь более крупный блок кода, который все использовали для FastCGI в последние годы.

Может кто-нибудь пролить свет на это?

Заранее спасибо.

0
задан 6 October 2018 в 21:31
1 ответ

Ну а разница простая. Ваш подход к работе с обработчиками поддерживается mod_fastcgi , тогда как второй требует mod_proxy_fcgi и mod_proxy в вашей конфигурации и передает запросы прокси к сокету FPM. Последний вариант предпочтительнее, потому что он не требует отдельной конфигурации и накладных расходов на память , которые приносит с собой mod_fastcgi . В вашем случае, когда все, что вы используете из mod_fastcgi , является просто FastCGIExternalServer , имеет смысл использовать все механизмы, которые есть внутри mod_fastcgi .

Вероятно, ваша проблема связана с тем, что ваша текущая конфигурация использует причудливое имя для сокета, то есть /var/run/php/php7.2-fpm.x.com.sock , тогда как ваша попытка конфигурации использует стандартное ] /var/run/php/php7.2-fpm.sock , которого нет в вашей системе. Вы должны использовать имя сокета точно так, как оно показано в вашей конфигурации FPM (и вашей рабочей конфигурации)при попытке использовать mod_proxy_fcgi , а также удалить | fcgi: // localhost / , поскольку FPM прослушивает только сокет UNIX.

1
ответ дан 4 December 2019 в 15:50

Теги

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