无法使用 apache MPM 运行 PHP-FPM

问题描述

很长一段时间以来,我都试图在 ubuntu 上使用多个主机设置 apache 服务器,但不知何故它只是不想为我工作。

我的总体目标:使用 apache 托管多个网站并使用 chrooted php 和 ftp。对于 ftp,使用 vsftpd 不是问题,但 PHP 似乎是一个问题。 在当前配置中没有 chroot php 可以使用 scandir 访问文件,从而访问其他虚拟主机。 如果有更好的方法来解决这个问题,您也可以提出建议!现在尝试 2 或 3 天以使其正常工作。

我设置了一台虚拟机用于测试目的,想展示我当前的配置,希望能得到一些帮助。

我在 /etc/hosts 上添加了两个主机:web1 和 web2,因此我使用 http://web1 和 http://web2 进行测试。

我的 vhost web1 的 apache 配置:

<VirtualHost *:80>
    ServerAdmin admin@yadbo.com
    ServerName web1
    DocumentRoot /var/www/web1/html
    ErrorLog /var/www/web1/logs/error.log
    CustomLog /var/www/web1/logs/logaccess.log combined
    AssignUserId web1 www-data
    DirectoryIndex index.php

<Directory "/usr/lib/cgi-bin">
        Require all granted
    </Directory>

    AddHandler php7-fcgi-web1 .php
    Action php7-fcgi-web1 /php7-fcgi-web1
    Alias /php7-fcgi-web1 /usr/lib/cgi-bin/php7-fcgi-web1
    FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi-web1 -socket /run/php/php7.4-fpm.web1.sock -pass-header Authorization
    <FilesMatch \.php$ >
        SetHandler  php7-fcgi-web1
    </FilesMatch>

</VirtualHost>

我还在 /etc/php/7.4/fpm/pool.d/web1 中为我的用户 web1 添加了新池:

[web1]
listen = /run/php/php7.4-fpm.web1.sock
access.log = /var/www/web1/logs/$pool.access.log

prefix = /var/www/web1/

chroot = $prefix

chdir = /

user = web1
group = www-data

listen.owner = web1
listen.group = www-data 
listen.mode = 0660

php_value[session.save_path] = /sessions

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

这就是我得到的所有配置。我还尝试在 /var/www/html 中添加一些软链接以使套接字可访问并调整链接,但它仍然不起作用...

在我使用的当前配置中,我为每个 php 文件得到 404,因此它声称找不到例如/index.php 404。

我知道我因为 chroot 丢失了一些东西。但是我对这个主题很陌生,在设置这个结构时真的很困难。

我真的希望我能在这里找到帮助。 提前感谢您的时间!

解决方法

FPM 运行自己的进程,而不是作为 apache 进程 (mod_fcgid) 的一部分。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...