关于php-fpm方式和apache配合使用的几点记录

1.apache2.4以后可以编译单独的模块可以使用fastcgi和phpfpm进行配合,打开以下的模块即可
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 


2.php5.3.3以后可以可以直接加入编译选项--enable-fpm即可打开php-fpm模式


3.php5.3.3以前,比如php5.2.17需要添加php-fpm模式补丁编译安装(php5.2.X没有对应的apache版本与之匹配使用,可能是没有对应的方法,nginx可以正常配合使用)
测试了apache2.2.15和apache2.4.9和Php5.2.17以php-fpm的模式共存,报错如下:
No input file specified


以下是关于mod_fcgid,mod_fastcgi的说明:
apt-search之后发现有两个fastcgi模块:一个是mod_fcgid,一个是mod_fastcgi,用哪个?先搞清楚这两个再说。
1、mod_fastcgi是FastCGI.com的项目,使用的是FastCGI授权条款。mod_fcgid是Apache基金会负责的项目,使用的是Apache-2.0授权条款。因此,不仅主要负责单位不同,其授权方式也不同。


2、mod_fastcgi的授权不是标准的自由/开放源码授权条款,所以显得与其他授权条款格格不入,再加上Linux  distribution套件管理政策的因素,使得mod_fastcgi难以全面进入所有Distribution官方库。网上会发现说mod_fastcgi几乎没有再继续开发了,因此也使得网路上许多人转而推荐mod_fcgid。其实这是最大的误解。官方说法是,FastCGI protocol 是一个轻量级且成熟的通讯协定,所以不太需要再额外加上新功能,而目前的工作主要在于瑕疵修复,也就几乎没有任何开发进展。


3、虽然mod_fastcgi与mod_fcgid都支援FastCGI protocol,但设计的概念不同。mod_fcgid的理念是快速的结束FastCGI server并再快速的产生一个。这个方法与FastCGI protocol初衷不同,FastCGI protocol是希望能够允许long-running request。以PHP 应用为例,为了加速PHP 效能,通常会使用bytecode/opcode cache,例如APC、eAccelerator 或Xcache 等。但为了共享cache,意谓着process/request 必须在同一个shared cache中,而无法跨不同的FastCGI or FCGI process。因此在设计上,只能允许一个PHP process启动,然后由此spawn多个children process,使得children 能够享用parent的bytecode/opcode。


4、PHP的使用者现在已不需要在mod_fastcgi及mod_fcgid之间作选择,因为PHP 5.3.3之后提供的PHP-FPM (PHP FastCGI Process Manager),能够更有效率的解决这个问题。况且PHP-FPM使用的是标准BSD-2-Clause License (BSD两款授权),是个互惠要求性低且相容性高的授权条款。 

posted @ 2016-04-12 15:19  reblue520  阅读(400)  评论(0编辑  收藏  举报