设置为CentOS 7,Apache 2.4.6,php-fpm 5.6和7.3(通过remi repo)。
我最近将默认的phpmod设置转换为php-fpm,使PHP 5.4.16正常运行。现在,我正在尝试启用PHP 7.3作为每个虚拟主机的选项。我安装并运行了php73-php-fpm,然后查看了Apache端。
我的/etc/httpd/conf.d/php.conf
包含以下指令:
<FilesMatch \.php$>
# SetHandler application/x-httpd-php
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
这对所有主机都适用。然后,我将此<FilesMatch>
指令添加到一个Virtual Host .conf文件中:
<VirtualHost *:80>
ServerName www.sittingduck.co.nz
ServerAlias sittingduck.co.nz
DocumentRoot /var/www/sittingduck.co.nz/public_html
ErrorLog /var/log/httpd/sittingduck.co.nz.error.log
CustomLog /var/log/httpd/sittingduck.co.nz.requests.log combined
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9073"
</FilesMatch>
</VirtualHost>
当我重新启动httpd服务器时,上面指定的ErrorLog中将显示以下内容。
[proxy:error] [pid 17061] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9073 (*) failed
[proxy_fcgi:error] [pid 17061] [client 54.36.148.97:33788] AH01079: failed to make connection to backend: 127.0.0.1
在确认两个php-fpm服务器确实正在运行之后...
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 16794/php-fpm: mast
tcp 0 0 127.0.0.1:9073 0.0.0.0:* LISTEN 17510/php-fpm: mast
...我接下来尝试将主php.conf切换到9073端口。当我这样做时,所有站点都可以工作,并且可以(使用上面站点的phpinfo页面)确认我正在PHP 7.3上运行。
我在这里想念什么?正如错误所暗示的那样,虚拟主机配置肯定是在php.conf之后加载的,并且fpm肯定处于工作状态,并且端口显然可以访问。
我觉得定义指令的方式有些规则或警告。任何帮助将不胜感激。
答案 0 :(得分:0)
问题是http还是https。我的配置文件定义的是*:80,但我没想到正在查看测试页的https版本。 *:443虚拟主机位于一个单独的配置文件中,该文件已在certbot工具安装后添加。手动编辑此额外文件可以解决问题。
我仍然不太确定为什么日志在开始时出现错误,然后在以后出现错误,但这可能是由于在不同时间通过http和/或https请求特定页面所致。