Apache 与 Tomcat 整合
一. Apache 与 Tomcat 介绍
Apache 是当前使用最为广泛的 WWW 服务器软件,具有相当强大的静态 HTML 处理的能力。
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,它是 Apache 软件基金会( Apache Software Foundation )的 Jakarta 项目中的一个核心项目,由 Apache 、 Sun 和 其他一些公司及个人共同开发而成。由于有了 Sun 的参与和支持,最新的 Servlet 和 JSP 规范总是能在 Tomcat 中得到体现, Tomcat5 支持最新的 Servlet 2.4 和 JSP 2.0 规范。因为 Tomcat 技术先进、性能稳定,而且免费,因而深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。
Tomcat 和 IIS 、 Apache 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。
二. 为什么需要整合
整合的最主要原因是为了在现有的硬件条件下提供最大的负载。
如果 单独使用 Tomcat 做 JSP 服务器,在工作效率上会存在问题 ,Tomcat 处理静态 HTML 的能力不如 Apache ,并且所能承受的最大并发连接数也有一定的限制;
在测试中,当并发连接较多时, Tomcat 就会处于 “ 僵死 ” 状态,对后继的请求连接失去响应。所以现在提出一个 “ 整合 ” 解决方案:将 html 与 jsp 的功能部分进行明确分工,让 tomcat 只处理 jsp 部分,其它的由 apache 这个 web server 处理。 Apache 与 Tomcat 各司其职,那么服务器的整体效率就能够得到提升。
三. 整合的基本原理
作为 Apache 下面的子项目, Tomcat 与 Apache 之间有着天然的联系。在实际操作中,主要是 Apache 作为主服务器运行,当监听到有 jsp 或者 servlet 的请求时,将请求转发给 tomcat 服务器,由 tomcat 服务器进行解析后,发回 apache ,再由 apache 发回用户。
在 tomcat 中有两个监听的端口,一个是 8080 用于提供 web 服务 , 一个是 8009 用于监听来自于 apache 的请求。当 apache 收到 jsp 或者 servlet 请求时,就向 tomcat 的 8009 端口发送请求,交由 tomcat 处理后,再返回给 apache ,由 apache 返回给客户。
四. 安装 Apache 与 Tomcat 服务器
操作系统环境: Windows xp home
安装文件: apache-tomcat-6.0.14.exe apache_2.2.6-win32-x86-openssl-0.9.8e.msi mod_jk-apache-2.2.4.so
到 apache 与 tomcat 的官方网站上面下载 apache 与 tomcat ,安装 apache 与 tomcat
到 http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32 下载 mod_jk-apache-2.2.4.so
将 mod_jk-apache-2.2.4.so 拷贝到 apache 安装目录下面的 modules 目录中。
五.修改 Tomcat 设置
在 tomcat 的 conf 目录下建一个 workers.properties 的文本文件,添加如下配置
workers.tomcat_home="tomcat 安装目录 "
# 让 mod_jk 模块知道 Tomcat 的安装路径
workers.java_home="java 安装目录 "
# 让 mod_jk 模块知道 jdk 路径
ps="
worker.list=ajp13
# 这里是关键,名字要和 httpd.conf 的一致。如果这里改了 httpd.conf 也要改。
worker.ajp13.port=8009
# 工作端口 ,tomcat 的 jk 监听端口,可以查看 Server.xml 中有 port="8009"
worker.ajp13.host=localhost
#Tomcat 所在机器,如果安装在与 apache 不同的机器则需要设置 IP
worker.ajp13.type=ajp13
# 类型,好像不能改,会出问题
worker.ajp13.lbfactor=1
# 负载平衡因子
六.修改 Apache 设置
修改 apache 安装目录下 conf 目录下的 httpd.conf, 增加如下配置
LoadModule jk_module modules/mod_jk-apache-2.2.4.so
JkWorkersFile "tomcat 安装目录 /conf/workers.properties"
JkLogFile "apache 安装目录 /logs/mod_jk.log"
JkMount /*.jsp ajp13
JkMount /*.do ajp13
七.整合操作说明
mod_jk-apache-2.2.4.so 相当于是 apache 与 tomcat 之间的桥梁一样,所以在 apache 的配置文件下面加上 LoadModule jk_module modules/mod_jk-apache-2.2.4.so 将此模块载入。
JkWorkersFile "tomcat 安装目录 /conf/workers.properties" 说明了 mod_jk-apache-2.2.4.so 如何工作,当出现要转发时,将请求发送到那里进行处理,代表了一系列的工作参数。
JkLogFile "apache 安装目录 /logs/mod_jk.log" 设定日志的地址。
JkMount 说明了将什么样的 URL 进行发送到 tomcat 进行处理。 JkMount /*.jsp ajp13 说明了要将 jsp 请求发到 tomcat,JkMount /*.do ajp13 说明了要将 .do 型的 servlet 发到 tomcat 进行处理。在实际的分发中,如果 servlet 命名不带后缀的话,将无法被识别,也就无法进行处理。