Windows下面的Tomcat7与Apache2整合

   2023-02-09 学习力0
核心提示:1. 需求因为项目需要,要将Tomcat与Apache整合起来,用到了mod_jk模块。参考下述文章及下载内容:http://hi.baidu.com/chongerfeia/item/0176469a37994edf7b7f01aahttp://www.cnblogs.com/jice/archive/2012/04/16/2406571.htmlhttp://download.csdn.net/deta

1. 需求

因为项目需要,要将Tomcat与Apache整合起来,用到了mod_jk模块。

参考下述文章及下载内容:

http://hi.baidu.com/chongerfeia/item/0176469a37994edf7b7f01aa

http://www.cnblogs.com/jice/archive/2012/04/16/2406571.html

http://download.csdn.net/detail/shangkaikuo/4494837

mod_jk模块的总体功能:
由于tomcat的HTTP处理部分都由Java所写(5.5.12版本以后出现了native库,用以提高其I/O和SSL的性能[1]),在高并发的情况下负载较高。而apache对于静态文件的处理能力比tomcat强,所以tomcat开发组开发了与apache结合使用的mod_jk模块。该协议由apache作请求代理,将HTTP协议的请求转化为AJP协议包,并传给后端的tomcat。mod_jk和apache现在普遍使用AJP1.3协议[2]。它是一个二进制格式的协议,比字符格式的HTTP协议解析速度要快。

除了性能的提升,mod_jk另外的一个作用可以实现apache与tomcat一对多的对应,使后端tomcat负载均衡。mod_jk也提供apache与tomcat链接情况的监控。mod_jk模块的典型工作流程是这样的:一个HTTP请求过来,mod_jk模块根据其URI选择合适的worker来进行处理。如果是lb_worker(负载均衡的worker),就再根据各种条件选择后台合适的ajp_worker(处理AJP协议的worker)。ajp_worker将HTTP协议的包,组装成AJP协议格式的包,然后选取一条空闲的链接,发送给后台的tomcat服务器。等到后台将数据发送过来时,接收并解析AJP协议,重新组装成HTTP协议,然后把结果发送给客户端。  

2. 环境

  1. JAVA_HOME=C:\Java\jdk1.6.0_33
  2. CATALINA_HOME=C:\tomcat7
  3. Apache版本为2.2,MSI方式安装于C:\Apache2.2目录,为系统服务。
  4. JK版本为mod_jk-1.2.31-httpd-2.2.3.so,在官网下载过高的版本,但在Apache下面不能正常工作。此版本JK可以在Apache2.2下面正常工作,是在csdn上面下载的,地址参考上面链接。

3. 安装

Java,Apache,Tomcat安装略;JK的安装就是将mod_jk-1.2.31-httpd-2.2.3.so拷贝到APACHE_HOME/modules/mod_jk.so

4. 配置

4.1 修改APACHE_HOME/config/httpd.conf文件

DocumentRoot: The directory out of which you will serve your documents.

因为我们是需要与Tomcat整合的,所以此项配置应该与Tomcat里配置的虚拟目录docBase属性相同;

DocumentRoot "D:/Work/uc/WebContent"

Directory: This should be changed to whatever you set DocumentRoot to.

<Directory "D:/Work/uc/WebContent">

VirtualHost: 'Main' server configuration

<VirtualHost localhost>
DirectoryIndex index.html index.htm index.jsp
#让Apache支持对servlet传送,用以Tomcat解析
JkMount /servlet/* ajp13
#让Apache支持对jsp传送,用以Tomcat解析
JkMount /*.jsp* ajp13 
#让Apache支持对.bst传送,用以Tomcat解析
JkMount /*.bst* ajp13 
#让Apache支持对Servlet传送,用以Tomcat解析
JkMount /RandCode* ajp13
</VirtualHost>

然后在文件最后加上下面一行:

include conf/mod_jk.conf

4.2 在与httpd.conf同目录创建mod_jk.conf,内容如下:

# 载入mod_jk.so包
LoadModule jk_module modules/mod_jk.so
# 指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
# 设置日志存放路径 
JkLogFile logs/mod_jk.log
# 设置日志级别 [debug/error/info] 
JkLogLevel info
# 设置日志格式 
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 /* ajp13

4.3 在与httpd.conf目录创建workers.properties,内容如下:

#让mod_jk模块知道jdk
workers.tomcat_home=C:/tomcat7
workers.java_home=C:/Java/jdk1.6.0_33
#指定文件路径分割符
ps=\
#上面的配置有用到的,不是将servlet和jsp都交给他了吗
worker.list=ajp13
#工作端口,若没占用则不用修改
worker.ajp13.port=8009
#Tomcat服务器的地址
worker.ajp13.host=localhost
#类型
worker.ajp13.type=ajp13
#负载平衡因数
worker.ajp13.lbfactor=1

到此,配置结束。可以进行测试,访问http://localhosthttp://localhost:8080的结果应该是一样的。

可能出现的问题,一个是mod_jk版本与Apache不匹配,二个是路径配置错误。可以通过注释各参数,重新启动Apache来测试问题在哪儿。

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Apache80端口被占用解决办法
    Apache80端口被占用解决办法
    1. win+R,输入 cmd,打开命令行窗口2. 命令行输入netstat -ano3. 找到80端口及对应进程 4. 在任务管理器中的进程处查看与上述80端口对应的PID相同的进程,并关闭。如果没有PID,选择“查看”--"选择列"--勾选“PID”。4. 关闭进程。如果进程为上述系统服务,
    03-08
  • Hadoop中mapreduce运行WordCount程序报错Error:
    这个问题是因为map的方法参数与继承mapper定义的参数类型不一致导致的,应该将Mapper的key参数类型设置成Object,就可以解决这个问题 
    03-08
  • 使用 Apache Hudi 实现 SCD-2(渐变维度)
    使用 Apache Hudi 实现 SCD-2(渐变维度)
    数据是当今分析世界的宝贵资产。 在向最终用户提供数据时,跟踪数据在一段时间内的变化非常重要。 渐变维度 (SCD) 是随时间推移存储和管理当前和历史数据的维度。 在 SCD 的类型中,我们将特别关注类型 2(SCD 2),它保留了值的完整历史。 每条记录都包含有
    03-08
  • 一个用 Python 分析 Apache 日志的故事
    一个用 Python 分析 Apache 日志的故事
    介绍不久前,公司里有人告诉我“我想知道 Apache 的访问日志是否可以用来做一些事情”。数据分析,Apache,发文章,我是初学者,写的不好请见谅。访问日志分析导入模块我正在使用以下模块。# データの処理import pandas as pdimport numpy as np# グラフ表示i
    03-08
  • [转]用apache反向代理解决单外网ip对应内网多个
    用apache反向代理解决单外网ip对应内网多个web主机的问题  转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的。来源地址:http://www.itshantou.com/Servers/web/06/10/44219.html    几年前开始在学校的服务器上建网站,那时
    02-10
  • Apache service named reported the following
    apache启动失败报错:The Apache service named reported the following error: AH00451: no listening sockets available, shutting down . The Apache service named reported the following error: (OS 10055)由于系统缓冲区空间不足或队列已满,不能执行
    02-10
  • struts布局管理---SiteMesh一个优于Apache Tile
    1. SiteMesh的基本原理       一个请求到服务器后,如果该请求需要sitemesh装饰,服务器先解释被请求的资源,然后根据配置文件 获得用于该请求的装饰器,最后用装饰器装饰被请求资源,将结果一同返回给客户端浏览器。 2. 如何使用SiteMesh    这里以st
    02-10
  • linux 安装 apache2.2.31
     Linux下安装和配置Apache 概要:本文介绍在CentOS5.4 Linux中安装和配置Apache2.2.14,并且实现Apache和Tomcat6的整合。文章分为三部分,分别是删除系统自带的Apache、安装Apache2.2.14和配置Apache2.2.14。 文章中介绍的知识也可以在其它版本的Linux中
    02-10
  • Apache CXF使用Jetty发布WebService
    Apache CXF使用Jetty发布WebService
    一、概述Apache CXF提供了用于方便地构建和开发WebService的可靠基础架构。它允许创建高性能和可扩展的服务,可以部署在Tomcat和基于Spring的轻量级容器中,也可以部署在更高级的服务器上,例如Jboss、WebSphere或WebLogic。 CXF提供了以下功能:WebService
    02-10
  • apache下ab.exe使用方法。。 apache ab工具
    自己在cmd中写了半天的路径也没有写对。。最后网上的一个哥们告诉我说没有共同语言了。。。毛线啊 差距确实很大!大能猫死panda早晚干掉你,叫你丫整天嘲讽我!比如我的ab.exe在D盘的wamp文件夹下apache文件夹下bin文件夹下。那么在cmd中可以这么写:"D:\wamp
    02-10
点击排行