Apache2-Prefork 和 FastCGI

Apache2-Prefork 和 FastCGI

我使用 mod_php 和 php 5.2 运行 Apache2-Prefork。
我还在 chrooted 环境中运行 php-fpm 和 php 5.3(监听 apache 可以访问的 unix 套接字)

有人可以指导我如何配置虚拟主机以使用 Fastcgi 吗?(我一直在网上搜索示例,但没有找到任何东西……)

有一点让我很困惑...
如果 php 遇到 include 或 fopen,它会在哪个上下文中执行?Apache 还是 chrooted 环境?我还可以通过 httpd.conf 和 .htaccess 传递 php 指令吗?

整个 FastCGI 对我来说仍然相当令人困惑:) 提前感谢任何帮助!

更新:我非常确定我必须使用 mod_fastcgi 和 FastCgiExternalServer 指令。但我不知道如何告诉 apache 它只能对 .php 文件执行此操作

答案1

在 Apache 虚拟主机指令中,配置一个 php5 处理程序,

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

在该实例中,FCGIWrapper 条目是 php5 cgi 二进制文件。其他示例建议创建自己的脚本并调用该脚本,让该脚本设置选项,然后调用 php。

例如,

FCGIWrapper /usr/local/bin/php .php

如果你使用包装脚本,你可以在其中设置选项,如果你不这样做(即第一个例子),那么你可以直接在 Apache 配置文件中设置选项,

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

这就是基本的 FastCGI 配置,其中一些配置因发行版或自编译而有所不同,但以上是基本必要的内容。

似乎有相当多的常见问题解答与您的查询非常相似,

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

答案2

我之前在博客上写过这篇文章,里面有完整的示例。以下是关于 Apache + PHP FPM 的部分:http://blog.foaa.de/2010/11/php-apache-and-fastcgi-a-comprehensive-overview/#implementation

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

相关内容