整合apache和tomcat代理方法

Apache和Tomcat同是Apache基金会下面的两个项目。一个是HTTP WEB服务器,另一个是servlet容器(servlet container),最新的5.5.X系列实现Servlet 2.4/JSP 2.0Spec。在我们生产的环境中,往往需要Apache做前端服务器,Tomcat做后端服务器。此时我们就需要一个连接器,这个连接器的作用就是把 所有Servlet/JSP的请求转给Tomcat来处理。在Apache2.2之前,一般有两个组件可选择。mod_jk和mod_jk2。后来 mod_jk2没更新了,转而更新mod_jk,所以现在一般都使用mod_jk做Apache和Tomcat的连接器。要指出的是mod_jk支持 Apache 1.x和2.X系列。
不过,自从Apache2.2出来后,你又多了种选择,那就是proxy-ajp.大家知道Apache里的proxy模块,可以实现双向代理功能,功能 非常强大。其实从连接器的实现原理上来说,用proxy模块来实现是非常自然的。proxy模块的功能无非就是把相关的请求发给特定的主机再返回结果。那 连接器的功能需求就是要把所有对Servlet/JSP的请求都转给后台的Tomcat。而且所FreeBSD邮件列表上说,使用proxy-ajp要比 mod_jk的效率要高。就我一个外行来看,至少使用Apache自带模块,要比另外编译的来得可靠。

apache2.2和tomcat5.5是一个不错的组合,可以作为开发环境或者是工作服务器。在配置前需要下载以下几个文件:
1.下载JDK
http://192.18.108.228/ECom/EComTicketServlet/BEGIN7CF7E6A4BCB54064E5D90FCCE00D7048/-2147483648/1579524843/1/732086/731822/1579524843/2ts+/westCoastFSEND/jdk-1.5.0_07-oth-JPR/jdk-1.5.0_07-oth-JPR:2/jdk-1_5_0_07-windows-i586-p.exe
2.下载apache2.2
http://mirror.vmmatrix.net/apache/httpd/binaries/win32/apache_2.2.2-win32-x86-no_ssl.msi
3.下载tomcat5.5.17
http://apache.justdn.org/tomcat/tomcat-5/v5.5.17/bin/apache-tomcat-5.5.17.exe
 一、安装和配置JDK
下载下来后,直接执行jdk-1.5.0_07-oth-JPR:2/jdk-1_5_0_07-windows-i586-p.exe
实装时建议选择简单的路径,如E:Web_Serverjdk1.5.0
安装最后会要求安装jre,继续下一步就行,安装路径E:Web_Serverjre1.5.0。

装完后添加或编缉三个系统变量(已经有就编缉,没有就新建):
在PATH变量尾加在”;E:Web_Serverjdk1.5.0bin” (注意有个分号)
新建Web_Server_HOME变量,值为 “E:Web_Serverjdk1.5.0”
新建CLASSPATH变量,值为 “E:Web_Serverjdk1.5.0libtools.jar”

二、安装和测试apache
在安装前如已安装了IIS,请先停止IIS服务。因为IIS和apache都默认使用80端口,否则会冲突。
同样直接运行安装apache_2.2.2-win32-x86-no_ssl.msi,建议选择简单的路径,如E:Web_Server apache2.2。安装时会要求输入一些关于这台服务器的信息,如域名、管理员邮箱,这些信息将会加入到httpd.conf文件中。

安装完配置httpd.conf文件,在E:Web_Serverapache2.2conf下
用文本编缉器打开httpd.conf,在DirectoryIndex index.html后添加index.jsp

测试,在IE中输入http://localhost/,如果apache工作应该可以看到”It works!”这样的页面。

三、安装和测试tomcat
直接运行安装tomcat,安装路径为E:Web_Servertomcat5.5
安装完,好像步骤一,添加一个系统变量TOMCAT_HOME,变量值为”E:Web_Servertomcat5.5″
最后测试tomcat,因为tomcat默认使用了8080端口,所以在IE输入http://localhost:8080,正常工作会看见一只小猫的页面。

四。整合apache和tomcat
网上很多是通过mod_jk来整合的,由于apache2.2本身已经支持tomcat了,所以这里用proxy来整合tomcat,先把apache和tomcat都停止了。然后打开httpd.conf文件,把

        LoadModule proxy_module modules/mod_proxy.so
        LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
        Include conf/extra/httpd-vhosts.conf
前面的#号去掉,在文件最后添加
ProxyPass /images/ !
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/
上面几名只是对apache进行简单的优化。

五、最后测试整合后的apache+tomcat
启动apache,再启动tomcat,准备以下代码的jsp文件,以便测试。

保存为test.jsp
在E:Web_Servertomcat5.5webappsROOT下新建一个文件夹myjsp,并把test.jsp放在里面。
在IE中输入http://localhost:8080/myjsp/test.jsp
再输入http://localhost/myjsp/test.jsp
如果两次都显示Hello World!说明已经成功整合了。

二、JK 

三、   http_proxy,http_proxy

相对于JK的连接方式,其他两种在配置上是比较简单的,灵活性方面也一点都不逊色。但就稳定性而言就不像JK这样久经考验,毕竟Apache 2.2.3推出的时间并不长,采用这种连接方式的网站还不多,因此,如果是应用于关键的互联网网站,还是建议采用JK的连接方式。

Tagged as: , ,