导航
导航
文章目录
  1. 一、编译与安装 FastCGI 模块
  2. 二、编辑 Apache2.2 配置文件
    1. 2.1、载入FastCGI模块
    2. 2.2、设置php文件后缀及解析器
    3. 2.3、添加FastCGIExternalServer及目录属性
  3. 三、作用原理

Apache2.2 使用 FastCGI 模块方法

最新版的 php 5.3.4 已经默认启用 fastcgi ,此前已写过《Linux 从源码编译安装 PHP 5.3.4》,但是对于 Apache2.2 又该如何与 php 5.3.4 ( FastCGI 模式运行 )相结合呢?

目前我所知在Linux中,Apache2.2 要运行 php 脚本,有两中方法,一是使用mod_php 模块方式,另外一种就是使用FastCGI模块的的方式。

一、编译与安装 FastCGI 模块

wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
tar -zxf mod_fastcgi-2.4.6.tar.gz
cd mod_fastcgi-2.4.6
cp Makefile.AP2 Makefile
make top_dir=/usr/local/apache
make install top_dir=/usr/local/apache

二、编辑 Apache2.2 配置文件

2.1、载入FastCGI模块

vim /usr/local/apache/conf/httpd.conf 
LoadModule fastcgi_module modules/mod_fastcgi.so

2.2、设置php文件后缀及解析器

查找并在 “IfModule mime_module” 内添加下面代码

<IfModule mime_module>
AddHandler php-fastcgi .php 
Action php-fastcgi /fcgi-bin/php-fpm
ScriptAlias /fcgi-bin/ /var/fcgi-bin/
</IfModule>

2.3、添加FastCGIExternalServer及目录属性

<IfModule fastcgi_module>
    FastCGIExternalServer /var/fcgi-bin/php-fpm -host 127.0.0.1:9000
</IfModule>
<Directory "/var/fcgi-bin/">
Options none
Order allow,deny
Allow from all
</Directory>

三、作用原理

  1. 首先对 .php 后缀的文件使用 php-fastcgi (可随便起名)解析器。
  2. 然后发现php-fastcgi不是内置的解析器。
  3. 于是使用 action 指令定义该解析器,它实际上是 /var/php-fastcgi/ 目录下的一个叫 php-fpm 虚拟的文件。
  4. 但是 apache 并不知道 /var/php-fastcgi/ 目录下的文件是需要执行的,必须用 ScriptAlias 定义个别名 /fcgi-bin/ 他实际指向/var/fcgi-bin/。(根据上文,ScriptAlias 别名内的文件会被执行,所以上面的action只能为 /fcgi-bin/php-fpm 而不能/var/fcgi-bin/php-fpm
  5. 最后哪个虚拟文件其实就是127.0.0.1:9000了(必须全路径,不能使用/fcgi-bin/php-fpm)
支持一下
扫一扫,支持一下