zoukankan      html  css  js  c++  java
  • Windows下面的Tomcat7与Apache2整合

    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来测试问题在哪儿。

  • 相关阅读:
    Microsoft .NET Custom Errors Not Set(今天公司内审,扫描出了漏洞,要堵住)
    马云向***总理专题汇报:坚持为小企业服务
    用sp_lock诊断SQL Sever的性能问题(数据库管理员不得不看)转的。
    Oracle 10g Audit(审计) 记录登录用户在Oracle中的所有操作(转)
    Oracle基本语法集锦(用到了,收集一下)
    C#中对注册表的操作指南
    生活小知识,生活要认真,驱蚊驱虫驱苍蝇大法
    关于TextBox控件onTextChanged时间激活的问题
    Monitoring connection pooling behavior
    远程共享文件夹的切换访问用户帐号
  • 原文地址:https://www.cnblogs.com/nayitian/p/2882390.html
Copyright © 2011-2022 走看看