Apache Web服务器也许是现在使用最广泛地web服务器了,功能强大,速度快。而Tomcat是J2EE的标准Servlet实现,性能也不错,功能也好。更重要的是两者都是免费的,所以如何整合这两者也是一个比较重要的话题,随便探索了下,找到2种不同的整合方法。在这里我用的是Apache2.0和Tomcat5.5,默认Apache用的是80端口,而Tomcat是8080端口。
第一种就是利用Apache的Proxy功能,首先,需要load出Apache的proxy模块,在这里要注意的是Apache2以后,在Proxy模块分的很细,所以你要根据相应的功能把全部模块都load上来,否则会报403的错误。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
然后定义一个apache的别名来对Tomcat的地址进行代理,比如
ProxyPass /home http://localhost:8081/
在这里,就把/home指向我们Tomcat的地址了,这里8081端口是随便找了一个没有用到的端口,在Tomcat的server.xml中也要配置这个8081端口。
<Connector port="8081" proxyName="localhost" proxyPort="80"/>
以上配置以后第一种Proxy模式的整合就完毕了,这个时候再浏览器上输入
http://localhost/home 会发现访问到了Tomcat的主页。
第二种方法就是采用使用广泛的mod_jk来进行整合,由于mod_jk版本众多,我们从Apache网上下了一个可用的2进制文件,是1.2.19的,下载地址是http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.19/ 把这个下载好的so文件放到Apache的modules目录下,命名为mod_jk.so。然后在conf目录下建立一个workers.properties文件,文件内容如下
workers.tomcat_home=C:/Program Files/Apache Software Foundation/Tomcat 5.5
workers.java_home=C:/Program Files/Java/jdk1.5.0_06
ps=/
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
第一行指定了Tomcat的路径,第二行指定了JDK的地址,第三行是文件路径分隔符,第四行以后是指定了一个worker控制器,并且进行配置,内容比较容易理解。再下面就是修改Apache的conf/httpd.conf文件了。首先添加上刚才的mod_jk,如下所示
LoadModule jk_module modules/mod_jk.so
然后进行work文件以及log文件的配置,如下
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
最后是Mapping设定
JkMount /*.jsp worker1
JkMount /tomcat-docs/* worker1
也就是说对Apache访问中所有jsp文件以及/tomcat-docs/的所有文件的访问都会转移到Tomcat去实行,这就很轻松实现了Apache与Tomcat的对接