如何解决无法使用 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) 的一部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。