Apache和Tomcat结合使用入门
作者:cherami
email:cherami@163.net
以下说明参照tomcat的mod_jk-howto.html和自己的实际配置经验,如果你依照此文档不能正确配置,请参照该文档的说明一步一步做。本人使用的tomcat版本为3.3a,文档也为该版本自带。
1. 获取mok_jk:http://jakarta.apache.org/builds/jakarta-tomcat/release/v3.3/bin/,该目录下有针对不同平台的编译完的二进制的mod_jk,对于linux平台,位于linux/i386目录下(mod_jk.so),对于windows系统位于win32/i386(mod_jk.dll)(你也可以根据tomcat的自带文档的说明自己编译得到需要的模块,具体过程请自己参照tomcat自带的文档mod_jk-howto.html)
2. 将得到的mod_jk拷贝到apache的对应目录下,对于linux/unix平台为apache的libexec目录下,对于windows则为modules目录
3. 修改apache的conf目录下的httpd.conf 文件,如果原来使用了mod_jserv,则去掉,然后在文件的最后增加如下一行:Include TOMCAT_HOME/conf/auto/mod_jk.conf,其中的TOMCAT_HOME使用你自己的系统的实际路径代替,对于windows,一个范例是Include D:/jakarta-tomcat/conf/auto/mod_jk.conf,对于unix/linux则是Include /usr/local/jakarta-tomcat/conf/auto/mod_jk.conf
4. 修改tomcat的启动文件,使之产生一个auto/mod_jk.conf文件,方法为,对于windows,修改bin目录下的startup.bat,将倒数第三行的start %1 %2 %3 %4 %5 %6 %7 %8 %9改为start jkconf %1 %2 %3 %4 %5 %6 %7 %8 %9,然后运行一下startup.bat,(过程很快,运行后将自动退出而非处于正常启动时的的运行等待状态)将生成文件TOMCAT_HOME/conf/auto/mod_jk.conf,然后再将startup.bat还原即可,对于unix/linux则是将startup.sh中的$BASEDIR/tomcat.sh start $@修改为$BASEDIR/tomcat.sh start jkconf $@,运行startup.sh,也将生成TOMCAT_HOME/conf/auto/mod_jk.conf,情况和windows平台类似。
5. 重新启动apache,启动tomcat,至此即完成的apache_tomcat的基本配置。
注意:在此情况下,apache能够服务的内容仅为你在进行第四步的时候tomcat的webapps目录下的已有应用,如果你以后将应用添加到tomcat的webapps目录下,那么你通过apache只能访问到原来的应用,你添加的应用只能加上端口8080才能访问,要解决此问题,一种方法是再次进行4、5两步,或者你可以根据TOMCAT_HOME/conf/auto/mod_jk.conf添加你的新应用的内容。另外一个没有经过深入测试的方法就是将mok_jk.conf中的所有JkMount行用两行代替:
JkMount / ajp13
JkMount /* ajp13
,这样做的结果实际上可能是将所有的应用都交给了tomcat,连apache的主服务目录也变成了tomcat的主web服务目录(webapps),再向tomcat添加应用将不用进行任何修改,只需要重新启动tomcat即可,至于静态网页的服务是apache还是tomcat完成就不清楚了,apache的额外配置是否因此受到影响也不清楚。另外需要注意的是如果你的tomcat的webapps目录下的应用的名称中有下划线,那么生成的应用名称将会改变,例如webapps下有目录test_underline,那么你应该通过http://localhost/test/underline访问而非http://localhost/test_underline,这点你可以查看生成的mok_jk.conf的得到,这个是因为tomcat自动将应用目录中的下划线替换为/,可以通过tomcat的启动信息得到这个特性。
本文为基本配置,如果你需要获得更灵活的配置,请参考apache和tomcat的配置说明。