Apache和Tomcat的整合,原理及例子

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Apache和Tomcat的整合,原理及例子

这类文档很多很多,但是大多是由不明原理的人拘泥于具体版本写出来的,有很多错漏或多余的部分。

最后找到一篇写得很很不错的,/blog/ 我修正了其中的错误然后加了一些自己的理解

原理

tomcat 为一个jsp的容器,apache为一个web server,两者之间通信通过worker 进行(由Tomcat使用Server.xml文件中Connector的标签来定义其端口和协议),通过 mod_jk的模块(由web服务器像apache、iis等使用)和Web Server 通信。

通信协议有很多,其中jk2已经被抛弃了,现在就用jk就好了。

整个过程其实就是让apache的httpd.conf文件调用mod_jk.conf,mod_jk.conf 调用workers.properties,最后配置虚拟主机。

文件说明

mod_jk.conf

主要定义mod_jk模块的位置以及mod_jk模块的连接日志设置,还有定义worker.properties文件的位置。

worker.properties

定义worker的参数,主要是连接tomcat主机的地址和端口信息。

如果Tomcat与apache不在同一台机器上,或者需要做多台机器上tomcat的负载均衡只需要更改workers.properties文件中的相应定义即可。

第一部分:安装配置tomcat apache mod_jk j2sdk

准备下载下列文件

Jdk1.5

下载地址:

tomcat 5.5.9

下载地址:

apache apache_2.0.59

下载地址: /download.cgi

jakarta-tomcat-connectors-jk2.0.43-win32-apache2.0.49(根据Apache版本决定)

下载地址:/dist/jakarta/tomcat-connectors/ 把上面所有组件都安装到D:\Server目录下,这样也方便日常管理配置和将来移植到别的服务器上去。

1:安装j2sdk

安装到 D:\server\j2sdk\ 目录下,注意安装成系统服务

2:安装tomcat

安装到D:\server\tomcat\目录下,注意安装成系统服务

可能遇到的问题

问题1:在解析JSP页面时,提示无法找到java compiler

请拷贝 j2sdk\lib\tools.jar 到 tomcat\common\lib下面。

使用tomcat作为service启动后总是这样,当然用startup.bat脚本启动倒是完全正常。主要原因分析起来是以service方式启动的Tomcat无法读取

JAVA_HOME 和CLASS_PATH等环境变量。

问题2:如何解决通过服务方式启动tomcat时log中提示

ZoneInfo:d:\server\j2sdk\lib\zi\ZoneInfoMappings(系统找不到指定的路径。)

从d:\server\j2sdk\jre\lib目录拷贝所有文件放到 d:\server\j2sdk\lib\ ,jre\lib 中的文件和j2sdk\lib\ 中的文件没有一个重复的,不用担心会覆盖掉j2sdk\lib 中原有的任何文件。

3:安装apache 到 d:\server\ (会自动生成apache2文件夹)

配置 index.jsp 为默认页配置 GB2312为默认语言

不只Apache的httpd.conf中定义了默认页面文件,连Tomcat的web.xml配置文件的结尾处也定义了默认页面文件,而且Tomcat中定义的的优先级还高于原有的Apache中所定义的默认页。

4:加入mod_jk连接模块

拷贝 mod_jk-1.2.10-apache-2.0.43.so 到d:\server\apache2\modules\ 改

名为mod_jk.so

5: 修改apache的配置文件

为了保持httpd.conf文件的简洁,把jk模块的配置放到单独的文件中来,就在httpd.conf中增加一行调用代码

include D:\server\Apache2\conf\mod_jk.conf

6:配置mod_jk.conf

请注意使用绝对路径

其实最关键的就是第一条第二条和最后一条,如果要精简,就保留这三条内容就可以了。

代码

# Load mod_jk module

LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties

JkWorkersFile conf/workers.properties

# Where to put jk logs

JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel info

# Select the log format

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

# Send servlet for context /examples to worker named ajp13

#JkMount /servlet/* ajp13

# Send JSPs for context /examples to worker named ajp13

JkMount /*.jsp ajp13

上面这一行我们设置了了 /*.jsp ajp13 就是说把所有.jsp结尾的文件都由ajp13这个worker交给tomcat处理了,如果应用被映射为一个.do的URL,这样就会出错.解决方法是再添加如下一行:

代码

JkMount /*.do ajp13

7:配置apache2\conf\workers.properties

代码

worker.list=ajp13

worker.ajp13.port=8009

worker.ajp13.host=localhost #本机,若上面Tomcat主机不为localhost,作相应修改

worker.ajp13.type=ajp13 #类型

worker.ajp13.lbfactor=1 #代理数,不用修改

第二部分:虚拟主机的配置

举例配置2个vhost网站一个是 localhost ,另一个是

当然 是虚拟的,本地测试时,应该修改系统中的hosts文件,添加一行 127.0.0.1

1:Apache 虚拟主机配置:

Httpd.conf文件最后添加

代码

include D:\server\Apache2\conf\vhost.conf

相关文档
最新文档