Windows下Apache整合Tomcat成功实例

摘要:摘要: Windows下Apache整合Tomcat成功实例

为什么要用Apache整合Tomcat?对小凡来说,原因有两点:
 
1、Apache处理静态页面,如htm,html更快
 
2、也是最重要的一点,可以使用Apache做软件负载均衡,这样处理大并发访问时,就可以通过负载均衡来达到横向扩展的目的,更经济更方便
 
在网上查了一下Apache整合Tomcat的方法,基本上多多少少都有些错误,现在小凡将自己测试通过的方法记录下来
1 (8).jpg
 
【下载】
我的环境是:windows XP,因此去Apache官方网站下载时需要下载x86版本的apache,tomcat,以及mod_jk.so,它们的下载地址如下:
 
Apache HTTP Server (httpd) 2.2.22 : http://httpd.apache.org/download.cgi#apache22
 
Tomcat 6.0.35 : http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35-windows-x86.zip
 
Apache Tomcat整合模块mod_jk.so : http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/windows/tomcat-connectors-1.2.32-windows-i386-httpd-2.2.x.zip
 
其中mod_jk.so的版本必须和Apache、你自己的操作系统版本一致,如果你用的是其他版本,请访问以下地址下载
http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/windows/
 
【安装】
将Apache安装,Tomcat解压
tomcat-connectors-1.2.32-windows-i386-httpd-2.2.x.zip压缩文件解压,将其中的mod_jk.so文件放至 "Apache安装文件夹modules"文件夹中
 
编辑"Apache文件夹/conf/httpd.conf"文件,将其中的"Listen 80"改为你自己需要监听的端口,相比各位的80、8080端口很可能都是被其他Web服务器占用了吧?
我将端口设置为8091
 
Tomcat的服务监听端口改法估计很多人都知道了,我设置为8092端口
 
【配置】
在"Tomcat安装文件夹/conf"文件夹中创建workers.properties文件,内容如下:
workers.tomcat_home=D:softClusterapache-tomcat-6.0.35 #让mod_jk模块知道Tomcat的位置
workers.java_home=D:Program FilesJavajre6 #让mod_jk模块知道jre的位置
ps= #一般不需要修改
worker.list=ajp13 #模块版本,一般不需要修改
worker.ajp13.port=8009 #工作端口,见下文
worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改
worker.ajp13.type=ajp13 #类型,一般不需要修改
worker.ajp13.lbfactor=1 #代理数,不用修改
其中worker.ajp13.port的端口号,需要在"Tomcat安装文件夹/conf/server.xml"中查询类似
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
这样的配置,关键protocol="AJP/1.3",其中port就是端口号,一般来说不会被占用
 
在"Tomcat安装文件夹/conf/server.xml"最后<Host>节点内部添加如下配置
<Context path="" docBase="D:softClusterapache-tomcat-6.0.35webappsexamples" reloadable="true" crossContext="true"/>
其中docBase就是将Tomcat访问的根目录设置为你自定义的目录,我们做测试的时候用Tomcat自带的Examples最好不过了,其中又有htm又有jsp,刚好满足这次的测试要求
 
在"Apache文件夹/conf/httpd.conf"文件最后添加如下配置
LoadModule jk_module modulesmod_jk.so
#此处mod_jk的文件为你下载的文件
JkWorkersFile "D:softClusterapache-tomcat-6.0.35confworkers.properties"
#指定tomcat监听配置文件地址
JkLogFile "D:softClusterapache-tomcat-6.0.35logsmod_jk2.log"
#指定日志存放位置
JkLogLevel info
 
#设置虚拟主机
<VirtualHost localhost>
ServerAdmin localhost
DocumentRoot D:softClusterapache-tomcat-6.0.35webappsexamples
<Directory "D:softClusterapache-tomcat-6.0.35webappsexamples">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
#您的站点项目所在路径,应与tomcat中的目录设置相同,据说以上两个必须同时设置才可以生效,没有试过不同的时候会有什么情况
ServerName localhost
DirectoryIndex index.html index.htm index.jsp
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txtcommon
JkMount /servlet/* ajp13
#让Apache支持对servlet传送,用以Tomcat解析
JkMount /*.jsp ajp13
#让Apache支持对jsp传送,用以Tomcat解析
JkMount /*.do ajp13
#让Apache支持对.do传送,用以Tomcat解析
</VirtualHost>
是的,你没有看错,这个配置语法就是这么的。。。。不能理解,又是空格隔开又是XML的,不明白怎么解析的。
其中也有DocumentRoot和Directory的配置,我们也配到和Tomcat一样吧
 
【测试】
打开Tomcat
打开Apache
尝试访问http://localhost:8091和http://localhost:8092,如果两个页面一样,说明我们已经成功了一半
 
以后如果需要外部客户端访问,只会访问到http://localhost:8091这个地址,因为我们只需要通过Apache进行访问分发,Tomcat对外部而言是不可见的
 
访问http://localhost:8091/jsp/jsp2/el/functions.jsp?foo=JSP+2.0
这是Tomcat自带例子的一个访问地址,是一个典型的jsp页面,如果通过Apache的地址可以访问并打开这个地址,说明配置成功了