Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->CGI ->正文

实战 FastCGI

来源:Linuxdby.com 作者:Webmaster 时间:2007-04-28 点击: [收藏] [投稿]

不同于 NSAPI 及 ISAPI 以及其它的网页服务器语言 (如 ASP, PHP3, mod_perl),FastCGI 比较类似 CGI,它只是一个网站应用程序设计的规格,因此先天上不受任何网站服务器平台,操作系统平台,以及开发语言的限制,但又能大幅改善 CGI 效率不良的问题。FastCGI 的特色如下:

1. FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。
2. FastCGI 可在任何平台上使用,Netscape Enterprise 及 IIS 都有 FastCGI 的模块可供使用,阿帕契 (Apache,以及利用 Apache 衍生出做的服务器) 上也有 mod_fastcgi 可用。
3. FastCGI 支持 C/C++,Perl,Tcl,Java,Python 等程序语言。
4. FastCGI 的应用程序亦兼容于 CGI。即 FastCGI 的应用程序也可以当成 CGI 来执行。
5. 现有的 CGI 程序要改写成 FastCGI 非常简单,最少可能只需要多加入三行程序代码。
6. FastCGI 的侦错方式与 CGI 大同小异,只要带入程序所需的环境变量及参数,即可在命令列模式执行或侦错。
7. FastCGI 应用程序的写作方式与 CGI 类似,除了几项原则要特别注意外,FastCGI 的写作方式跟 CGI 几乎一样,与学习 Web Server API 比较起来, FastCGI 简单多了。
8. FastCGI 支授分布式运算 (distributed computing),即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

看到 FastCGI 这些特色后,是否跃跃欲试呢。下一章将介绍如何在 Apache 服务器上安装 FastCGI 的步骤。

----------------------------------------------------------------------------

2. 安装 FastCGI

要使用 FastCGI 你必需有一个可供 FastCGI 程序执行的环境 (run-time environment),以及 撰写 FastCGI 程序的开发环境。以下就以阿帕契服务器 (Apache Web Server) 做为 FastCGI 的执行平台,简述如何在阿帕契服务器使用 FastCGI。

由于阿帕契服务器自由、开放、跨平台的特性,现今许多系统或发行套件 (distribution) 都内含阿帕契服务器,如果你直接用预先编译好的阿帕契程序,请自行找出符合该系统设定规则的安装路径。以下列出一些阿帕契服务器相关的路径设定规则,后面的范例将以阿帕契内定值为主,其它的系统请自行参考:

系统 执行文件路径 设定文件路径
阿帕契内定值 /usr/local/apache/bin /usr/local/apache/etc
FreeBSD /usr/local/sbin /usr/local/etc/apache
Red Hat Linux /usr/sbin /usr/etc

2.1 在阿帕契服务器上安装 FastCGI 模块
安装 mod_fastcgi 这个模块,可以让你的阿帕契服务器支持 FastCGI 协议。Mod_fastcgi 现在最新版本为 2.2.2 版,此版主要适用于 Apache 1.3 版以上。如果你的 Apache 还是 1.2 版,请配合 mod_fastcgi 2.0.18 版使用。以下设定以 Apache 1.3.6 及 mod_fast 2.2.2 为示范。

2.1.1 标准安装 (利用 APACI)

1. 首先下载 apache_1.3.6.tar.gz 及 mod_fastcgi_2.2.2.tar.gz ,解开:
$ gunzip -c apache_1.3.6.tar.gz | tar xvf -
$ gunzip -c mod_fastcgi_2.2.2.tar.gz | tar xvf -
2. 把 mod_fastcgi 的原始码复制到 Apache 的目录下:
$ cp -rp mod_fastcgi_2.2.2 apache_1.3.6/src/modules/fastcgi
3. 设定 Apache 加入 mod_fastcgi 模块:
$ cd apache_1.3.6
$ ./configure
-activate-module=src/modules/fastcgi/libfastcgi.a
-enable-module=info -enable-shared=info
[ more APACI options ]
4. 编译及安装
$ make
$ make install
5. 看一下编译出来的执行文件是否含有 mod_fastcgi 模块:
$ /usr/local/apache/sbin/httpd -l
Compiled-in modules:
http_core.c

mod_fastcgi.c

2.1.2 将 mod_fastcgi 安装成一个 DSO
假设你已经在系统上安装好 Apache 1.3 版以上,并且你的平台支持 DSO (Dynamic Shared Object) 的方式动态加入模块,那么你可以透过 apxs (Apache eXtenSion tool) 将 mod_fastcgi 安装成一个 DSO 模块。

1. 下载 mod_fastcgi_2.2.2.tar.gz 并且解开:
$ gunzip -c mod_fastcgi_2.2.2.tar.gz | tar xvf -
2. 编译 mod_fastcgi 模块成 DSO:
$ cd mod_fastcgi_2.2.2
$ /usr/local/apache/sbin/apxs -o mod_fastcgi.so -c *.c
3. 安装
$ /usr/local/apache/sbin/apxs -I -a -n fastcgi mod_fastcgi.so

2.2 加入使用 mod_fastcgi 的相关设定
为了让 Apache 区分出那一些联机请求属于 FastCGI 来处理的,我们必需在阿帕契的设定档内加入让 Apache 可以辨别 FastCGI 的设定。

1. Mod_fastcgi 模块会向 Apache 登记一个 fastcgi-script 的处理类型 (handler type),我们可以设定所有以 fcg 以及 fpl (for perl) 为扩展名的程序都是符合 FastCGI 协议的应用程序:
AddHandler fastcgi-script .fcg .fpl
2. 接下来我们定义 /usr/local/www/fcgi-bin 这个目录用来存放已经写好的 FastCGI 程序:
ScriptAlias /fcgi-bin/ /usr/local/www/fcgi-bin/
3. 检查设定档文法是否正确:
$ /usr/local/apache/sbin/apachectl configtest
Syntax OK
4. 重新激活阿帕契服务器,让新设定生效:
$ /usr/local/apache/sbin/apachectl graceful
/usr/local/apache/bin/apachectl graceful: httpd gracefully restarted

Apache 1.3.4 版之后将原本的 httpd.conf 、srm.conf、access.conf 合并成一个档案。所以你所使用的 Apache 如果是 1.3.4 版之后,请直接修改 httpd.conf3 这个档,如果是 1.3.3 版之前,我建议把 mod_fastcgi 模块相关设定加在 srm.conf 这个档里头。实际的设定文件路径和设定文件文件名可能依每个人的环境不同而有差异,请根据您自己的环境做适当的调整。



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:perl调试工具   下一篇:Perl的面向对象编程

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号