分享
 
 
 

实战FastCGI_2.安装FastCGI

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

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 这个档里头。实际的设定文件路径和设定文件文件名可能依每个人的环境不同而有差异,请根据您自己的环境做适当的调整。

2.3 安装 FastCGI 开发套件

1. 下载 fcgi-devkit-2.1.tar.gz 并且解开:

$ gunzip -c fcgi-devkit-2.1.tar.gz | tar xvf -

2. 编译

$ cd fcgi-devkit-2.1

$ ./configure

$ make

3. 将 C 的标头档 (header file) 及函式库 (library) 安装至系统:

$ cp -rp include /usr/local/include/fastcgi

$ cp libfcgi/libfcgi.a /usr/local/lib

2.4 测试 FastCGI

在 fcgi-devkit 套件中内含一个简单的 FastCGI 范例程序 - echo.c,我们用它来做测试系统是否安装正确。直接把已经编译好的 echo.fcg 复制到预设放置 FastCGI 程序的目录下:

$ cd fcgi-devkit-2.1/example

$ cp echo.fcg /usr/local/www/fcgi-bin

现在赶快用浏览器连到 http://localhost/fcgi-bin/echo.fcg 看看,如果看到以下结果表示您大功告成啦:

FastCGIecho

Requestnumber1,ProcessID:1013

Nodatafromstandardinput.

Requestenvironment:

FCGI_ROLE=RESPONDER

DOCUMENT_ROOT=/usr/local/apache/htdocs

HTTP_ACCEPT=text/html,text/plain,application/applefile,application/x-metamai

l-patch,sun-deskset-message,mail-file,default,postscript-file,audio-file,

x-sun-attachment,text/enriched,text/richtext,application/andrew-inset,x-be2

,application/postscript,message/external-body,message/partial,application/p

gp,application/pgp,video/mpeg,video/*,image/*,audio/*,audio/mod,text/sgm

l,video/mpeg,image/jpeg,image/tiff,image/x-rgb,image/png,image/x-xbitmap,

image/x-xbm,image/gif,application/postscript,*/*;q=0.01

HTTP_ACCEPT_ENCODING=gzip,compress

HTTP_ACCEPT_LANGUAGE=en

HTTP_HOST=localhost

HTTP_NEGOTIATE=trans

HTTP_USER_AGENT=Lynx/2.8.1pre.9libwww-FM/2.14

PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/sbin:/opt/kde/bin:/home/m

yhsu/bin:/usr/X11R6/bin:/usr/sbin:/opt/kde/bin:/usr/X11R6/bin:/usr/sbin:/opt/kd

e/bin

REMOTE_ADDR=127.0.0.1

REMOTE_PORT=1024

SCRIPT_FILENAME=/usr/local/www/fcgi-bin/echo.fcg

SERVER_ADMIN=myhsu@localhost.localdomain

SERVER_NAME=localhost.localdomain

SERVER_PORT=80

SERVER_SIGNATURE=

Apache/1.3.6Serveratlocalhost.localdomainPort80

SERVER_SOFTWARE=Apache/1.3.6(Unix)mod_fastcgi/2.2.2

UNIQUE_ID=N1ptln8AAAEAAAPdDRkGATEWAY_INTERFACE=CGI/1.1

SERVER_PROTOCOL=HTTP/1.0REQUEST_METHOD=GETQUERY_STRING=

REQUEST_URI=/fcgi-bin/echo.fcgSCRIPT_NAME=/fcgi-bin/echo.fcg

Initialenvironment:

请注意在以上程序所显示的 Request number 和 Process ID 这两个变量,当我们继续重新加载这支程序时,Request number 会一直累加而 Process ID 的值都不会改变。这表示这支程序在第一次激活之后就一直执行着没有结束,而且在每次联机请求中所参照到的变量空间是相同的 (所以 Request number 会不断加一)。

到此为止,我们已经成功建立起一个可供发展 FastCGI 应用程序的环境及执行 FastCGI 应用程序的网站执行平台。

2.5 安装 FCGI 模块 for Perl

如果要使用 Perl 来撰写 FastCGI 的程序,必须安装 FCGI.pm 这个模块,安装的方法如下:

1. 下载 FCGI-0.45.tar.gz 并且解开

$ gunzip -c FCGI-0.45.tar.gz | tar xvf -

2. 编译及安装

$ perl Makefile.PL

$ make

$ make install

3. 测试

$ cp echo.fpl /usr/local/www/fcgi-bin

$ lynx http://localhost/fcgi-bin/echo.fpl

如果顺利的话,应该会看到如下的结果:

FastCGI echo (Perl)

Request number 1

No data from standard input.

Request environment:

DOCUMENT_ROOT=/usr/local/apache/htdocs

FCGI_ROLE=RESPONDER

GATEWAY_INTERFACE=CGI/1.1

HTTP_ACCEPT=text/html, text/plain, application/applefile, application/x-metamai

l-patch, sun-deskset-message, mail-file, default, postscript-file, audio-file,

x-sun-attachment, text/enriched, text/richtext, application/andrew-inset, x-be2

, application/postscript, message/external-body, message/partial, application/p

gp, application/pgp, video/mpeg, video/*, image/*, audio/*, audio/mod, text/sgm

l, video/mpeg, image/jpeg, image/tiff, image/x-rgb, image/png, image/x-xbitmap,

image/x-xbm, image/gif, application/postscript, */*;q=0.01

HTTP_ACCEPT_ENCODING=gzip, compress

HTTP_ACCEPT_LANGUAGE=en

HTTP_HOST=localhost

HTTP_NEGOTIATE=trans

HTTP_USER_AGENT=Lynx/2.8.1pre.9 libwww-FM/2.14

PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/sbin:/opt/kde/bin:/home/m

yhsu/bin:/usr/X11R6/bin:/usr/sbin:/opt/kde/bin:/usr/X11R6/bin:/usr/sbin:/opt/kd

e/bin

QUERY_STRING=

REMOTE_ADDR=127.0.0.1

REMOTE_PORT=1427

REQUEST_METHOD=GET

REQUEST_URI=/fcgi-bin/echo.fpl

SCRIPT_FILENAME=/usr/local/www/fcgi-bin/echo.fpl

SCRIPT_NAME=/fcgi-bin/echo.fpl

SERVER_ADMIN=myhsu@localhost.localdomain

SERVER_NAME=localhost.localdomain

SERVER_PORT=80

SERVER_PROTOCOL=HTTP/1.0

SERVER_SIGNATURE=

Apache/1.3.6 Server at localhost.localdomain Port 80

SERVER_SOFTWARE=Apache/1.3.6 (Unix) mod_fastcgi/2.2.2

UNIQUE_ID=N1VIbX8AAAEAAAQnKKo

More on its way ... wait a few seconds

Initial environment:

同样的,如果持续连结 http://localhost/fcgi-bin/echo.fpl 可以看到 Request Number 不断增加,表示 echo.fpl 已经被激活而且持续执行着。

至此,一个可供执行 FastCGI 程序的网站服务器以及撰写 FastCGI 程序的开发环境已经建置完成,接下来就只等着新的程序放上去啰。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有