其实我并不是要在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几这里不打算装,有兴趣的自己试试。