2023-02-26 462
因为项目需要,要将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协议,然后把结果发送给客户端。
Java,Apache,Tomcat安装略;JK的安装就是将mod_jk-1.2.31-httpd-2.2.3.so拷贝到APACHE_HOME/modules/mod_jk.so
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
# 载入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
#让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://localhost与http://localhost:8080的结果应该是一样的。
可能出现的问题,一个是mod_jk版本与Apache不匹配,二个是路径配置错误。可以通过注释各参数,重新启动Apache来测试问题在哪儿。
原文链接:https://77isp.com/post/34615.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态