linux下fastcgi安装配置

本文详细介绍了在Linux环境下如何安装配置FastCGI模块,包括下载特定版本的Apache和FastCGI,编译安装步骤及常见错误解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux下fastcgi安装配置

 

下载安装

从http://archive.apache.org/dist/httpd/下载apache_1.3.6.tar.gz

从http://www.fastcgi.com/下载mod_fastcgi-2.4.0.tar.gz和fcgi-2.4.0.tar.gz

为什么下载这两本版本?

因为fastcgi很久没有更新,最新的版本都是2003年的,所以尽量着一个fastcgi的高版本,和一个低版本的apache上,这样尽量避免有些版本的fastcgi由于版本的原因,没有在一些高版本的apache调试过,出现一些我们不能解决的问题。

后面顺序执行如下的命令:

gunzip -c apache_1.3.6.tar.gz | tar xvf -

gunzip -c mod_fastcgi-2.4.0.tar.gz  | tar xvf -

cp -rp mod_fastcgi-2.4.0 apache_1.3.6/src/modules/fastcgi

cd apache_1.3.6

./configure --prefix=/usr/local/apache --activate-module=src/modules/fastcgi/libfastcgi.a --enable-module=info --enable-shared=info

make

make install

命令解释

cp -rp mod_fastcgi-2.4.0 apache_1.3.6/src/modules/fastcgi 将fastcgi拷贝到apache源文件中,作为一个模块编译连接到apache中

./configure --prefix=/usr/local/apache --activate-module=src/modules/fastcgi/libfastcgi.a --enable-module=info --enable-shared=info  中--prefix=/usr/local/apache指定了安装目录,如果登录用户没有在目录/usr/local中创建目录的权限,在后面make install中会报错,有两个解决办法,1)用root用户在/usr/local下创建apache目录,再chmod a+wrx apache,使别的用户拥有足够的权限;2)将--prefix指定的安装目录指向一个登录用户拥有创建目录权限的路径下; --activate-module=src/modules/fastcgi/libfastcgi.a 在编译的时候添加一个fastcgi模块到apache中。

make编译

make install安装

启动配置

首先在环境变量中添加路径,如果在linux下,打开.bash_profile,在unix下,打开.profile

PATH=$PATH:/usr/local/apache/bin,将apache执行程序添加到搜索路径中。

启动,执行命令:

apachectl start

如果没有错误信息表名成功,打开ie,输入http://ip:8080(这里的ip地址是apache的安装主机),如果有页面显示,说明apache成功安装、启动。

我曾经在启动的时候,出现过如下两个错误:

错误1:

Syntax error on line 201 of /usr/local/apache/conf/httpd.conf:

Cannot load /usr/local/apache/libexec/mod_fastcgi.so into server: /usr/local/apache/libexec/mod_fastcgi.so: undefined symbol: fstat

/usr/local/apache/bin/apachectl start: httpd could not be started

我检查了mod_fastcgi.so 路径下的每一个目录,权限不是问题,根据“undefined symbol”断定,肯定是编译的问题,编译按常规判断,也是没有问题的,没有报错,那么肯定是有些版本下,一些符号重新编译了,后来想到fastcgi从2003年之后就没有更新了,那么应该是版本融合、兼容的问题。后来下载了一个相对较高的fastcgi版本,何一个相对比较低的apache版本,解决了这个问题。

错误2:

httpd: cannot determine local host name.

Use the ServerName directive to set it manually.

/usr/local/apache/bin/apachectl start: httpd could not be started

这个很简单,一看就明白,修改apache配置文件httpd.conf,找到被注释了的ServerName属性,取消注释,添加一个自己的属性名。再执行apachectl start命令,ok。

相关命令

apachectl stop 停止

apachectl restart 重新启动

配置fastcgi应用

首先安装fastcgi c++开发包

上传fcgi-2.4.0.tar.gz,顺序执行下面的命令即可

gunzip -c fcgi-2.4.0.tar.gz | tar xvf -

cd fcgi-2.4.0

./configure

make

make install这一步可以不要,只你在开发程序的时候,添加正确include路径和lib路径就可以了

 

后面就可以配置fastcgi应用了.

打开/usr/local/apache/conf/httpd.conf  添加如下配置:

<IfModule mod_fastcgi.c>

 AddHandler fastcgi-script .fcg .fcgi .fpl 

 Alias /fcgi-bin/ "/usr/local/apache/fcgi-bin/"

 <Directory "/usr/local/apache/fcgi-bin">

  AllowOverride None

  Options None ExecCGI

  Order allow,deny

  Allow from all

  SetHandler fastcgi-script

 </Directory>

 FastCgiExternalServer /usr/local/apache/fcgi-bin/echo -idle-timeout 30 -host 192.168.1.113:60000

</IfModule>

上面的配置应该都比较好理解,主要是FastCgiExternalServer行的配置

在fcgi-bin下面,其实没有echo程序,只是一个虚拟的fastcgi应用,就像tomcat,weblogic上面配置虚拟的uri一样,其实并物理上存在的路径。-idle-timeout 30 表示超时时间是30秒;-host 192.168.1.113:60000表示在主机192.168.1.113的60000端口建立监听等待fastcgi应用程序启动加入。这时候如果打开ie,输入http://192.168.1.113:8080/fcig-bin/echo,会显示一个内部服务器错我信息页面,因为这个时候,没有世纪的fasgcgi程序加入到应用中来。

接着我们进入fcgi-2.4.0/examples目录,执行命令cgi-fcgi -start -connect 192.168.1.113:60000 ./echo 1,看清楚,这个命令中的地址和段口号和上面FastCgiExternalServer 配置的对应,表示加入到这个虚拟的fastcgi路径中来,就像在tomcat中,即是配置了虚拟的路径,但是如果实际该路经下没有请求的资源,也会包一个错误信息。最后一个参数1表示启动一个进程,如果该资源请求量很大,可以启动多个进程。再刷新ie,这时会有显示一个正常的页面,在第二行会显示这样的文字,Request number 1 Process ID: 11472,如果不断刷新ie,Request number 1已会不断增加,但是Process ID的值保持不变,这就是fastcgi一次运行,一直运行,不像常规的cgi,每次有请求来的时候,都fork一个进程,出来完之后进程退出,由于每次都重新启动一个进程,会带来很大的开销,造成速度变慢。具体fastcgi的介绍在这儿就不再浪费篇幅,大家可以在baidu,google上找到很多介绍。

后面有时间,我会提供两个c/c++在fastcgi应用方面的程序和详细的注释。

欢迎大家回复,大家一起来完善fastcgi的资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值