Apache + PhP-FPM 7.2 的配置需要更改吗?

Apache + PhP-FPM 7.2 的配置需要更改吗?

到目前为止,我一直在使用 Ubuntu 16.04.5 Server,其中 Apache、Nginx 作为反向代理、PHP 7.0 + FastCGI + FPM,所有内容都已更新至最新版本。一切顺利。

这是一个 Apache 虚拟主机,例如 x.com:

<VirtualHost *:8080>
    ServerName x.com
    ServerAlias www.x.com
    ServerAdmin [email protected]
    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>

这是 x.com 的一个 FPM 池 .conf 文件:

[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 [email protected]
    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>

现在,这对我来说不起作用,即使我删除了纤维增强塑料个人配置文件文件。我根本就不明白这行代码的作用SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/",或者这行代码如何能够取代大家一直在使用的更大的代码块快速CGI这些年来。

有人可以解释一下吗?

提前致谢。

答案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 套接字上监听,因此也应将其删除。

相关内容