1. 云栖社区>
  2. PHP教程>
  3. 正文

CentOS 6.x/apache 2.2下php多版本共存探索(模块及fastcgi)/mod_proxy_fcgi实现

作者:用户 来源:互联网 时间:2017-12-01 11:53:58

模块版本

CentOS 6.x/apache 2.2下php多版本共存探索(模块及fastcgi)/mod_proxy_fcgi实现 - 摘要: 本文讲的是CentOS 6.x/apache 2.2下php多版本共存探索(模块及fastcgi)/mod_proxy_fcgi实现, 在apache下整合fastCGI模式运行的php-fpm,似乎网上很少相关材料,就连英文版材料也少。只要是php-fpm,基本上都是与nginx搭配。 然而,不管怎么被唱衰,apache这个老牌web服务器,仍然是一个彪悍的环境。

在apache下整合fastCGI模式运行的php-fpm,似乎网上很少相关材料,就连英文版材料也少。只要是php-fpm,基本上都是与nginx搭配。

然而,不管怎么被唱衰,apache这个老牌web服务器,仍然是一个彪悍的环境。

似乎apache对fastCGI应用多个支持方案,尤其是2.4+的版本增加了mod_proxy_fcgi模块,简洁的一行ProxyPassMatch 指令即可。

虽然CentOS 6.x下是apache 2.2,但所幸已经有人成功移植: https://github.com/ceph/mod-proxy-fcgi我们可以直接使用;更幸运的是它已经进入epel源,直接yum安装即可;不想匹配epel源的,直接下载rpm包安装也可以(示例 http://mirrors.ustc.edu.cn/epel/6/x86_64/)

其实可以重新编译安装apache 2.4, 这样直接有mod_proxy_fcgi可以使用,但这里还是保持原版本不变,省掉编译的工作量。

参考mod_proxy_fcgi 官方文档,整合php-fpm的配置指令

ProxyPassMatch "^/myapp/.*.php(/.*)?$" "fcgi://localhost:9000/var/www/"

语法很简单,跟配置反向代理类似。事实上与mod_proxy模块语法一致的,不同处是将http协议改成fcig协议。

以上是apache整合php-fpm模式运行的fastCGI,接下来要对yum安装的php做下配置修改。

yum安装的php配置文件 /etc/httpd/conf.d/php.conf ,其中有如下一行

AddHandler php5-script .php

我们要对不同的站点启用不同的php,上面一行是对全局的.php文件分配给php模块处理,我们把这一行注释掉。而是在每个站点启用不同的php运行模式。

以上即是处理方式。

已知问题:

有一个困扰的问题没有解决,感觉有点像模块bug:

对于没有index.html,index.php等默认文档的目录,上述ProxyPassMatch还是会把请求转到php-fpm上,这时会看到php-fpm的404响应,而不是apache的响应403页面。

两者就是,对于ProxyPassMatch匹配的目录,apache自动索引功能失效。(当然如果不开启autoindex就无所谓了。生产环境下通常不开启的)

其它,似乎也没有什么严重后果,或者我没还意识到(?)。

解决方法:每个目录下,都放置一个index.html,避免fpm-php处理空请求

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索模块 版本 ,以便于您获取更多的相关知识。