linux下fastcgi安装配置
1.下载安装
从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安装
2.启动配置
首先在环境变量中添加路径,如果在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 重新启动
3.配置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环境变量,在.bash_profile添加如下内容:
view plaincopy to clipboardprint?
01.###############################################
02.### for fcgi
03.###############################################
04.FCGI_HOME=/usr/src/fcgi
05.PATH=$PATH:$FCGI_HOME/bin
###############################################
### for fcgi
###############################################
FCGI_HOME=/usr/src/fcgi
PATH=$PATH:$FCGI_HOME/bin
后面就可以配置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>
根据上面的配置,必须在apache目录下创建目录fcgi-bin,不然在下面用ie访问fcgi的时候会有问题。
上面的配置应该都比较好理解,主要是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/fcgi-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应用方面的程序和详细的注释
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenxiaohua/archive/2008/01/18/2050744.aspx
更多推荐
所有评论(0)