Apache 2.2.19安装fastcgi遇到的问题小结

其实我并不是要在apache下用fastcgi,只是之前去盛大面试,问到了我这个问题:如何在apache下装fastcgi。

这2天尝试了一下。apache下面安装fastcgi:httpd 2.2.19 ,fastcgi mod_fastcgi-2.4.6.tar.gz

第一种方法比较简单,直接在源码里面make,然后拷贝.libs/mod_fastcgi.so到apache目录/module下面
然后在httpd.conf里面加入:
LoadModule fastcgi_module modules/mod_fastcgi.so
重启服务器便可


另外一种是编译进httpd,这个我遇到了不少问题,我花了一天才摸索的装了起来,具体问题如下:
(根据手册应该把源码拷贝到httpdsrc/module/fastcgi下面)
1.手册里说用-activate-module=src/modules/fastcgi/libfastcgi.a,但报错,事实上在httpd2.2.19里应该用--with-module=fastcgi
2../configure 弄不下去,可能需要 --with-apr=/usr --with-apr-util=/usr 这2个库,这2个库在libsrc里面已经有了,但我们要装一下:
apr:./configure --prefix=/usr
apr-util:./configure --prefix=/usr --with-apr=/usr
然后make

注意configuer会修改module/fastcgi下面的 modules.mk和Makefile,用这个make不一定能成功,或者能成功,但到最后生成httpd的时候却报函数找不到,
可以备份一下modules.mk,然后自己按下面的方法修改.

3.在主目录make卡在module/fastcgi里面
.根据提示发现肯定是makefile出现问题,
于是在查看INSTALL,发现要把弄个Makefile,具体是把Makefile.AP2 复制为Makefile,并改一下里面的top_src目录为安装目录.

4.继续make,说是缺乏libmod_fastcgi.lo,仔细对比发现fastcgi里的Makefile生成的是mod_fastcgi.lo。于是修改Makefile:

shared =  mod_fastcgi.la  --> shared =  libmod_fastcgi.la
mod_fastcgi.la: ${MOD_FASTCGI:=.slo} --> libmod_fastcgi.la: ${MOD_FASTCGI:=.slo}
 

最后make成功

/configure --prefix=/usr/local/apache2 --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit

--disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-

home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-RedHat-linux --with-module=fastcgi --with-apr=/usr --with-apr-util=/usr


总结出2点:
1.一定要仔细看安装包里面的README,INSTALL,里面的信息往往很关键
2.在报错的时候,一定要仔细看报错信息,看看在那一块出错,是源码性错误(test.c这样的错误),缺少类库(need ..lib等),还是make文件本身出问题(no rule to target ...等),这些都有较明显的提示
这样找解决方法就由针对性.
3.google&&baidu,不用多说。

apache1.3几这里不打算装,有兴趣的自己试试。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pfpgf.html