单个 fastcgi/php-cgi 服务器可用于多个虚拟主机吗?

单个 fastcgi/php-cgi 服务器可用于多个虚拟主机吗?

我目前使用以下设置为客户托管网站:

  • Apache 2.2.16
  • mod_fastcgi 版本 2.4.7
  • php 5.3.3

Apache 使用 worker MPM 并通过动态 FastCGI 配置提供 PHP 服务:

FastCgiSuexec /usr/sbin/suexec
FastCgiConfig -singleThreshold 0 -pass-header 授权 -idle-timeout 3600
SuexecUserGroup 用户组
操作应用程序/x-httpd-fastphp /cgi-bin/php.fcgi
添加类型应用程序/x-httpd-fastphp.php

这个方法很好用,但是这会为每个 VirtualHost 创建一个 php-cgi 实例(即使 cgi-bin 目录对于给定帐户在物理上是相同的),所以如果客户端有几个子域,它就会开始累积,导致服务器不可用并将其破坏。

因此,这让我想到了一个实际问题,是否可以通过单个 php-cgi 实例为帐户提供所有 php 请求?最好同时保留 suexec 位,以防止客户端读取其目录之外的文件。

答案1

如果我可以添加个人意见的话..

使用 Nginx,它更快,更简单,更容易做你想做的事......(并且占用更少的内存)

这是我的个人喜好。:D

https://calomel.org/nginx.html是一个很好的详细的例子

答案2

您是否对每个虚拟主机都有一些 fcgid 配置?(除了全局 fcgid 配置),即在标签内?

我只是认为这可能是问题的一个可能原因,可以通过为所有 Web 帐户所共有的某些文件系统路径添加 fcgid 配置来解决,如下所示(例如,如果使用 Ubuntu,则在 /etc/apache2/sites-enabled/000-default 中):

NameVirtualHost SOME-IP-ADDRESS:80

<Directory /some-path/webaccounts/>
    AddHandler fcgid-script .php
    FCGIWrapper /usr/lib/cgi-bin/php5 .php
</Directory>

<VirtualHost SOME-IP-ADDRESS:80>
...

至少我们在 2Gb RAM 机器(Ubuntu 8.04)上使用 fcgid 与大约 20-30 个 vhosts 没有任何问题,设置与上述一致。

相关内容