apache+tomcat整合web项目

作者:viki

2012-09-19
 
1.卷首语
 

前端时间同学叫我帮他发布多个web项目,服务器是windows 2003。他们的老大要求环境必须用apache+tomcat整合发布。好吧,前端时间我是挺有空的,就帮帮吧…谁知道,一搞就好几天啊。

不熟练是肯定的了。apache公司就用过一次,不想nginx研究的那么深入。
主要还是配置apache+tomcat时各种配置的不一样,都导致最后结果的不同。
所以我还是喜欢nginx^_^
下面是我总结出的两种发布方式。
PS:如果想了解集群或session共享相关的配置,请参照其他文章,本文只是做个简单的整合配置。
 
 
2.准备工作
 
注意:
1、以下软件版本不是最新版。因为要根据开发环境部署服务器环境。
其实应该是反过来才对,开发习惯问题而已。
2、服务器版本位数不同,版本也不同的。
 
2.1.    下载apache软件并安装
 
此处版本为2.2.2,下载地址:
 
apache的安装无需多说了,直接选择默认的80端口,服务方式管理就行了。
 
2.2.    下载tomcat绿色版
 
此处版本为6.0.35,下载地址:
 
 
2.3.    下载jdk6
 

windows版本的jdk没有绿色版,确实是一个比较吭的地方:

 
 
3.apache + tomcat + mod_jk
 
第一种方法是使用mod_jk模块,这个模块是tomcat团队提供的一个整合工具。

唯一的缺点是不能跟tomcat的虚拟目录一起使用(则Context中的path字段),只能使用tomcat的虚拟主机

 
3.1.    配置tomcat
3.1.1.            配置 server.xml文件
 
位置:$tomcat_base/conf
 

1、如果使用mod_jk整合,就会使用tomcatajp协议的方式,所以tomcathttp connector就没必要开着了,直接注释掉就好了

 
  1. <!-- 
  2.     <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 
  3. --> 
 
2、然后找到ajpconnector,端口我就不改了,加入了几个属性(address的作用不多说了,就是只能通过访问address的值才能访问;这样的话,tomcat就完全隐藏在apache后面了。如果多台服务器做集群的话,也可以配置成内网地址看具体环境而配置配置)
 
  1. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" address=”localhost” /> 

 

注意:这里tomcat6tomcat7有一个区别,tomcat7protocol可以使用nioprotocol:“org.apache.coyote.ajp.AjpNioProtocol”。tomcat6不支持ajp协议的nio方式。

 
 
3、配置tomcat虚拟目录。只有一个项目的情况下,这样配置应该是最方便的吧。“E:\\a”是网站根目录
 
  1. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 
  2.         <Context path="" docBase="E:\\a" /> 
  3. </Host> 

 

启动tomcat,如果启动成功。并通过访问地址“http://127.0.0.1:8080/”如果访问成功,则表示配置正确。(好吧,开玩笑的。^_^。刚才配置里面已经关闭了http协议连接,所以通过以上地址是不可能访问成功的。如果能访问则表示http connector没有成功关闭)

 
 
3.2.    配置apache
3.2.1.            下载mod_jk
 
先去下载mod_jk,跟apache的版本一致就行:
 
网上说mod_jk已经过时了。我就不清楚为什么这样说了,因为我在官方下载地址这里看到的最后更新时间都是2012年的。
 
将压缩包里面的mod_jk.so文件复制到
$apache_base/modules目录下。
 
3.2.2.            创建workers.properties 文件
 
$apache_base/conf目录下新建以下文件,workers.properties。在里面根据服务器配置:
 
 
  1. workers.tomcat_home=D:\apache-tomcat-6.0.35 
  2. workers.java_home=C:\Program Files\Java\jdk1.6.0_35 
  3.  
  4. worker.list=a_worker 
  5.  
  6. worker.a_worker.port=8009 
  7. worker.a_worker.host=localhost 
  8. worker.a_worker.type=ajp13 
  9. worker.a_worker.socket_keepalive=True 
 
 

如果有多个tomcat,可以在worker.list后面指定多个,只需用,隔开即可。

下面的worker.a_worker是对每一个tomcat服务器的详细配置,可查阅官方文档:http://tomcat.apache.org/connectors-doc/reference/workers.html
 
 
3.2.3.            配置httpd.conf 文件
 
位置:$apache_base/conf/httpd.conf
 
1、文件最下面加入以下代码,用于让apache能使用mod_jk功能
 
 
  1. # 虚拟主机配置 
  2. NameVirtualHost *:80 
  3. # 加载模块 
  4. LoadModule jk_module modules/mod_jk.so 
  5.  
  6. # 加载worker文件 
  7. JkWorkersFile conf/workers.properties 
  8.  
  9. # 导入虚拟主机文件 
  10. Include conf/vhost/www.a.com.conf