FastCGI配置备忘录

本来想写成配置笔记,但仔细想了下没太多可写的内容。虽然最终配置成功确实花了不少功夫,但大多数时间都是在试错,实际性解决的问题并没有多少,所以浓缩成一个备忘录吧。

概念

CGI在不同的语境下可以指CGI程序(提供动态网页内容的程序),CGI协议,或CGI工具(比如php的php-cgi或apache自带的cgi模块)。

环境

  • 操作系统:在virtualbox中安装的ubuntu server 12.04,主机系统ubuntu 12.10
  • web服务器:Apache2.2.22
  • php版本:php5.3.10

安装

  1. 因为使用Apache作为web服务器,所以应该下载mod_fastcgi的源码,而不是其它的;
  2. 编译mod_fastcgi需要使用gcc等工具,若没有安装则configure会失败;
  3. 复制Makefile.AP2并命名为Makefile,修改其中的top_dir为apache2安装目录,这个目录之下有一个build目录;
  4. make失败,提示找不到special.mk,需安装apache2-dev包(其他环境下或许需要安装httpd-devel包)
  5. 安装结束后apache2的模块目录中可以看到mod_fastcgi.so文件;

配置文件

安装中最头疼的问题就是缺包和版本问题,好在有google和apt-get解决起来还算顺手,相比之下配置文件更让我捉急。

Apache2.2.22的配置文件的结构:

  • /etc/apache2/目录下有一个apache2.conf和httpd.conf,分别为全局配置文件和用户配置文件;
  • /mods-enable/和/mods-available/目录中分别是已启用和可用的(包括可用但还没有启用的)模块的load文件和conf文件;
  • /sites-enable/和/sites-available/目录中分别是已启用的和可用的(包括可用但还没有启用的)站点的conf文件;

为了不打乱目录和配置文件的结构,我没有在httpd.conf中添加FastCGI的配置信息,而是在/mods-available/下建立了fcgi.load和fcgi.conf,内容如下。

fcgi.load

#根据环境和使用包的不同fastcgi_module或许要改为mod_fastcgi
LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so

fcgi.conf

<IfModule mod_fastcgi.c>#<-是.c不是.so
     #cgi“程序”的目录映射
     ScriptAlias /cgi/ "/usr/lib/cgi/"
     #指定cgi“工具”                                            
     FastCGIExternalServer /usr/lib/cgi/php-cgi -host 127.0.0.1:9000
     #让fastcgi来处理php文件的请求
     AddHandler php-fastcgi .php
     #Action指令属于Apache2的Actions模块,若没有开启改模块会在重启服务器时报错
     Action php-fastcgi /cgi/php-cgi
</IfModule>

重启web服务器,运行php-cgi让其监听9000端口(我把php-cgi -b 127.0.0.1加入了ubuntu server的/etc/rc.loasl脚本,使其开机自动运行),然后通过浏览器访问cgi程序进行测试。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值