Apache2-Prefork&FastCGI

我有使用mod_php和php 5.2运行的Apache2-Prefork。
而且我也有php-fpm,运行在chrooted环境中的php 5.3(听一个unix套接字,可以通过apache访问)

有人可以请指导我如何configuration虚拟主机使用Fastcgi。 (我一直在寻找networking的例子,但没有发现任何东西…)

有一点让我感到困惑
如果php运行在哪个上下文将被执行的包含或fopen? Apaches或chrooted环境? 我仍然可以通过PHP指令通过httpd.conf和.htaccess?

整个FastCGI的东西还是让我感到困惑:)提前感谢任何帮助!

更新:我非常确定,我必须使用mod_fastcgi和FastCgiExternalServer指令。 但我不知道如何告诉Apache,他只能做.php文件

在你的Apache虚拟主机指令中,你configuration一个php5处理程序,

AddHandler fcgid-script .php FCGIWrapper /usr/lib/cgi-bin/php5 .php Options ExecCGI 

在这种情况下,FCGIWrapper条目是php5 cgi二进制文件。 其他的例子build议创build自己的脚本并调用它,让该脚本设置选项,然后调用php。

例如,

 FCGIWrapper /usr/local/bin/php .php 

如果你使用包装脚本,你可以在其中设置选项,如果你没有(例如第一个例子),那么你可以直接在Apacheconfiguration文件中设置选项,

 <IfModule mod_fcgid.c> AddHandler fcgid-script .fcgi FcgidConnectTimeout 20 FcgidIOTimeout 60 FcgidMaxRequestsPerProcess 400 FcgidIdleTimeout 60 FcgidMinProcessesPerClass 0 </IfModule> 

这基本上是一个基本的FastCGIconfiguration,其中有些是随分布而变化的,或者是自编的,但以上是基本必需的东西。

似乎有一个非常类似于你的查询这里的东西相当广泛的常见问题,

Apache + Chroot + FastCGI + PHP常见问题 – http://www.seaoffire.net/fcgi-faq.html

我前段时间写了关于这个我的博客,全部例子和所有。 这里是关于Apache + PHP FPM的部分: http : //blog.foaa.de/2010/11/php-apache-and-fastcgi-a-comprehensive-overview/#implementation 。

如果向上滚动,它也涵盖了许多实现Apache + FastCGI的其他(大多数是过时的)方法。 如果没有别的,它可能会让您更深入地了解FastCGI和Apache如何进行通信。