apache2.4配置cgi和fastcgi

日期:01-07  浏览:

一、源码安装apache

之前为了测试系统,自己下载源码编译安装了一个apache2.4,安装apache2.4过程比较简单,注意在configure时加上参数。

配置:

./configure --prefix=$APACHE_HOME  --enable-mods-shared=most  --enable-ssl=shared --with-ssl=$SSL_HOME  

 
(--with-ssl是开启SSL工具,可选项),详细参数可参见:apache配置参数

 

编译安装:

make  
make install

然后就可以使用bin/apachectl -k start和bin/apachectl -k stop开启和关闭apache了。

如果有错误请参见http://xtony.blog.51cto.com/3964396/836508

二、apache配置支持cgi

需要注意的一点是apache2.4要支持cgi需要将conf/httpd.conf中的这一行注释取消。
 
LoadModule cgid_module modules/mod_cgid.so

 
同时,在cgi-bin目录的设置如下:
 
 
    AllowOverride None  
    Options +ExecCGI  
    AddHandler cgi-script .cgi  
    Require all granted  

 
这样配置好后就可以调用cgi程序了。下面是一个python cgi程序,在浏览器打开HTTP://localhost/cgi-bin/test.cgi即可打印输出语句。
 
#!/usr/bin/python  
  
print "Content-type:text/html\r\n\r\n"  
print ''  
print ''  
print 'Hello Word - First CGI Program'  
print ''  
print ''
 

三、安装fastcgi模块

1.下载fastcgi模块源码,https://github.com/ByteInternet/libapache-mod-fastcgi。最新的应该是2.4.6版本。
2.解压fastcgi模块源码,得到目录mod_fastcgi-2.4.6,并进入该目录。
3.下载fastcgi模块针对apache2.4的补丁文件:http://leeon.me/upload/other/byte-compile-against-apache24.diff
4.对fastcgi模块源码打补丁,命令为:
patch -p1 < byte-compile-against-apache24.diff 
 
5.将目录下面的文件Makefile.AP2改名为Makefile,便于后面的编译。同时,修改该文件里面的top_dir为你的apache安装的路径。
 
6.编译安装。
make&&make install 
 
7.在$APACHE_HOME/conf/httpd.conf中加入载入模块的语句:
LoadModule  fastcgi_module modules/mod_fastcgi.so 
 

四、apache配置虚拟主机

apache可配置虚拟主机,使得可以使用同一个ip地址的多个端口建立不同的站点。配置虚拟主机的文件为$APACHE_HOME/conf/extra/httpd-vhost.conf。我的配置如下,其中监听端口为8888,采用了fastcgi负责执行cgi程序。
Listen 8888  
 
    ServerAdmin shishujuanhust@163.com  
    DocumentRoot "$PATH"  
  
     
        ScriptAlias /cgi-bin/ $PATH/cgi-bin/  
     
  
     
        AllowOverride none  
        Require all granted   
     
  
     
        Options Indexes  FollowSymLinks  
        Options +ExecCGI  
        AllowOverride None  
        Order allow,deny  
        Allow from 192.168  
     
  
    AddHandler fastcgi-script .cgi  
    ErrorLog "$PATH/logs/apache_error_log"  
    CustomLog "$PATH/logs/apache_access_log" common  
   

 

五、运行fcgi程序

在第四节配置好虚拟主机后,就可以来运行fcgi程序了。在运行fcgi程序之前,可先安装一个fcgi包,地址http://jonpy.sourceforge.net/fcgi.html
安装好后,根据文档中的说明,写出第一个fcgi程序如下:
#!/usr/bin/python  ##这一行一定要加,不然会出错。  
import jon.cgi as cgi  
import jon.fcgi as fcgi  
class Handler(cgi.Handler):  
  def process(self, req):  
    req.set_header("Content-Type", "text/plain")  
    req.write("Hello, world!\n")  
fcgi.Server({fcgi.FCGI_RESPONDER: Handler}).run()
 
然后通过链接访问即可了。链接中参数值可通过req.params.get('param_name')获取。


注意:

我第一次配置win环境下的apache的FCGI模式的时候没成功,httpd的error显示: 

引用:
The pipe has been ended.  : mod_fcgid: get overlap result error 
Premature end of script headers: index.php


后来发现是PHP里面某个extension load失败导致的(直接点击php.exe,会有message box弹出的),解决掉该问题就好了。 
所以,同理在Linux环境下时,也要注意看看是不是其他问题导致了fcgi配置失败。


上一篇:Apache2.2+fastCGI+(多版本)PHP配置
下一篇:Apache在fastcgi模式运行PHP上传文件时MaxRequestLen错误解决方法

网友评论


点击图片更换


查看更多评论
 

推荐文章

·Apache在fastcgi模式运行PHP上传文件时MaxRequestLen错误解决方法
·Apache错误:the requested operation has failed 的解决方法
·Apache自动跳转到 HTTPS
·Apache和Nginx防盗链的几种配置方法
·解决Apache/PHP无法启动的问题
·Windows里配置Apache2.2+PHP5.3+mod_fcgid运行高效的FastCGI模式
·apache防盗链 简单预防与技术详解
·Apache2.2+fastCGI+(多版本)PHP配置