`
jaychang
  • 浏览: 716274 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

JK整合Apache HTTP Server 与 Tomcat

阅读更多

一、为何要将Apache HTTP Server 与 Tomcat 结合

 

      首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接。事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端口可以直接使用 Tomcat 所运行的应用程序,你也可以将该端口改为 80。

 

      既然 Tomcat 本身已经可以提供这样的服务,我们为什么还要引入 Apache 或者其他的一些专门的 HTTP 服务器呢?原因有下面几个:

 

      1). 提升对静态文件的处理性能

      2). 利用 Web 服务器来做负载均衡以及容错

      3). 无缝的升级应用程序

 

      这三点对一个 web 网站来说是非常之重要的,我们希望我们的网站不仅是速度快,而且要稳定,不能因为某个 Tomcat 宕机或者是升级程序导致用户访问不了,而能完成这几个功能的、最好的 HTTP 服务器也就只有 apache 的 http server 了,它跟 tomcat 的结合是最紧密和可靠的。

 

 

二、JK简介


      JK 本身有两个版本分别是 1 和 2,目前 1 最新的版本是 1.2.19,而版本 2 早已经废弃了,以后不再有新版本的推出了,所以建议你采用版本 1。


      注意JK的每个版本都对应一个apache版本。Jk下载可以直接到apache.org官网下载,有多种版本,适用于各种操作系统,地址如下:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
      本文以 win32/jk-1.2.28/mod_jk-1.2.28-httpd-2.2.3.so 为例


      下载完JK的so模块后,放在${APACHE_HOME} \modules\mod_jk.so

 

       jk与apahce的版本要匹配,否则apache启动会失败:

  • mod_jk-1.2.31-httpd-2.2.3.so  is for Apache 2.2.x. It has been build against version 2.2.3, but should work with Apache 2.2.0 and later. Rename tomod_jk.so  before putting it in your Apache2.2/modules directory or adjust your LoadModule  statement.
  • mod_jk-1.2.31-httpd-2.0.52.so  is for Apache 2.0.x. It has been build against version 2.0.52, and should work with Apache 2.0.52 and later. Rename to mod_jk.so  before putting it in your Apache2.0/modules directory or adjust your LoadModule  statement.

 

三、整合配置

 

    3.1. JK 的配置最关键的有三个文件,分别是

         httpd.conf 
        Apache 服务器的配置文件,用来加载 JK 模块以及指定 JK 配置文件信息

     下边在(apache安装目录\conf\)下增加tomcat目录,在tomcat目录下新建workers.properties、
         uriworkermap.properties


        这里说明一下,workers.properties这个文件是配置jk模块与tomcat通信地址,以及一些约定
uriworkermap.properties 是配置哪些文件由apache http server 处理,哪些由tomcat处理,你也可以在httpd.conf配置下边的内容,但是由于这些属性是jk模块所独有的,为了让我们更改配置后不重新启动apache http server,这里分开配置。

 

         workers.properties

              到 Tomcat 服务器的连接定义文件

         uriworkermap.properties
             URI 映射文件,用来指定哪些 URL 由 Tomcat 处理,你也可以直接在 httpd.conf 中配置这些 URI,

         但是独立这些配置的好处是 JK 模块会定期更新该文件的内容,使得我们修改配置的时候无需重新启动

         Apache 服务器。

 

       3.1.1 http.conf的典型配置

 

# (httpd.conf)


# 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so

# Configure mod_jk

JkWorkersFile conf/workers.properties
JkMountFile conf/uriworkermap.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn

 

       3.1.2 works.properties配置

 

       如果不需要做负载均衡使用以下配置

 

# workers.properties

# list the workers by name

worker.list=s1, status

# localhost server 1
# ------------------------
worker.s1.port=8009
worker.s1.host=localhost
worker.s1.type=ajp13
worker.status.type=status

    无负载均衡的jkstatus的管理页面信息,图片里的worker叫tomcat,说明一下,我只是把work.properties配置文件的s1改成了tomcat而已

访问http://url/jkstatus

       如果需要做负载均衡需要以下配置

 

# workers.properties

# list the workers by name

worker.list=DLOG4J, status

# localhost server 1
# ------------------------
worker.s1.port=8109
worker.s1.host=localhost
worker.s1.type=ajp13

# localhost server 2
# ------------------------
worker.s2.port=8209
worker.s2.host=localhost
worker.s2.type=ajp13
#可以制定该worker为停止状态
#worker.s2.stopped=1

worker.DLOG4J.type=lb
worker.retries=3
worker.DLOG4J.balanced_workers=s1, s2
worker.DLOG4J.sticky_session=1
worker.status.type=status


    使用了负载均衡的jkstatus管理页面信息

    以上的 workers.properties 。首先我们配置了两个类型为 ajp13 的 worker 分别是 s1 和 s2,它们指向同一台服务器上运行在两个不同端口 8109 和 8209 的 Tomcat 上。接下来我们配置了一个类型为 lb(也就是负载均衡的意思)的 worker,它的名字是 DLOG4J,这是一个逻辑的 worker,它用来管理前面配置的两个物理连接 s1 和 s2。最后还配置了一个类型为 status 的 worker,这是用来监控 JK 本身的模块。有了这三个 worker 还不够,我们还需要告诉 JK,哪些 worker 是可用的,所以就有 worker.list = DLOG4J, status 这行配置。    

 

   3.1.3 uriworkermap.properties配置

 

     如果不需要负载均衡,以下配置就可以了

 

/*=s1
/jkstatus=status
#the following types's request will be given to apache http server,so the prefix is '!'
!/*.gif=s1
!/*.jpg=s1
!/*.png=s1
!/*.css=s1
!/*.js=s1
!/*.htm=s1
!/*.html=s1


    解释以下以上配置:

    /*=s1表示对于所有类型的请求都由s1这个worker处理,除了几个例外(gif,jpg,png,css,js,htm,html)这些静态的资源由Apache Http Server处理

 

    如果使用负载均衡,需要以下配置

 

 

/*=DLOG4J

/jkstatus=status
!/*.gif=DLOG4J
!/*.jpg=DLOG4J
!/*.png=DLOG4J
!/*.css=DLOG4J
!/*.js=DLOG4J
!/*.htm=DLOG4J
!/*.html=DLOG4J


    解释一下以上的配置:

    /*表示所有的请求都由 DLOG4J 这个 worker(使用了负载均衡的,DLOG4J是逻辑的worker,实际就是s1,s2) 进行处理,但是要除去几个例外,/jkstatus 请求由 status 这个worker 处理。另外这个配置中每一行数据前面的感叹号是什么意思呢?感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件,Apache Http Server处理静态资源内容很拿手。

 

    如果使用了负载均衡,那么要注意还需要修改%CATALINA_HOME%/conf/server.xml。

    将原先的不使用负载均衡的配置

 

    <Connector
        port="8109"
        redirectPort="8443"
        protocol="AJP/1.3">
    </Connector>
 

 

    改成使用使用负载均衡的,对应workers.properties使用负载均衡配置的两个worker所指向的8109,8209

 

    <Connector
        port="8109"
        redirectPort="8443"
        protocol="AJP/1.3">
    </Connector>


    <Connector
        port="8209"
        redirectPort="8443"
        protocol="AJP/1.3">
    </Connector>

  在cmd命令行下输入 netstat -ano 可以看到进程号为4520的进程在监听8080,8109,8209端口,如果不使用负载均衡那么,这里只会出现8080,跟8009,当然这个进程是javaw.exe是java虚拟机

  至此结束了所有的事情了。

 

 注:服务器段向客户端写入的Cookie内容中含有换行符号会丢失Cookie,将换行符号替换成其他字符以后,Cookie工作正常。

 

 !!!补充:

修改apache的httpd.conf配置文件,如不做修改那么你可以从apache安装目录的logs/error.log

发现

 

[Wed Jun 01 21:27:16 2011] [error] [client 122.232.110.19] File does not exist: C:/Program Files/Apache Group/Apache2/htdocs/asf-logo-wide.gif, referer: http://jaychang1987.gicp.net/
 

 

JK会去C:/Program Files/Apache Group/Apache2/htdocs/找图片,JS,CSS,html等文件,故你的JSP页面就会没有图片,样式了。

所以要修改apache的httpd.conf配置文件,如下,就是将TOMCAT的webapps目录设为DodumentRoot

 

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "D:/Tomcat-5.5.27/webapps"

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "D:/Tomcat-5.5.27/webapps">   
 

 

参考资料:http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html

1
0
分享到:
评论

相关推荐

    整合Apache和Tomcat的mod_jk

    整合Apache和Tomcat的mod_jk基本说明文件

    Apache HTTP Server与tomcat整合集群手册

    完全可以下载部署,本人真正手写,请需要的可以下载使用,

    mod_jk.so及ApacheTomcat整合文档

    Apache、Tomcat整合配置教程Apache HTTP server 和 Tomcat server 整合,一般是希望对于用户只公布 Apache HTTP server 的网址,而 Tomcat 的网址则不公布,扮演一个幕后英雄的角色。访问 Tomcat 的 HTTP 请求,通过...

    apache2.2.11和tomcat6整合配置例子打包下载

    apache2.2.11和tomcat6整合配置例子打包下载,开发宝典...... apache2.2.11和tomcat6整合配置 1,下载mod_jk.so 2,在apache的httpd.conf里面加入下面的话 LoadModule jk_module modules/mod_jk.so JkWorkersFile "D:\...

    apache+tomcat 实现负载均衡

    7 apache 整合tomcat 1)modules目录下添加模块:jk mod_jk-1.2.26-httpd-2.2.4.so 2)修改conf/httpd.conf 最后一行添加: include conf/mod_jk.conf 3)在conf目录下创建mok_jk.conf 内容: ...

    windows_server2003+tomcat+iis6整合

    在里面选择“网站”中的某个网站(此网站就是我们需要使用JSP环境的站,并且在此将目录设置与Tomcat下的此网站目录设置为一致), 在其上点右键选“属性”,在弹出的页框里选择“ISAPI筛选器”,点“添加”, 筛选...

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡

    1、 Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。 2、 为系统设定 Session 超时时间,包括 Apache 和 tomcat 3、 为系统屏蔽文件列表,包括 Apache 和 tomcat 注:本例程以一台机器为...

    Apache与Tomcat服务器整合的基本配置方法及概要说明

    首先,当然是安装Apache HTTP Server,并准备mod_jk.so文件,这些都可以在http://apache.org中找到,要注意的是,mod_jk.so的版本要和Apache HTTP Server的版本对应,如果没有对应的就要自己重新编译Apache,但是...

    apahce2.2.4整合tomcat6.0.016

    LoadModule jk_module modules/mod_jk-apache-2.2.4.so JkWorkersFile conf/workers.properties JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories JkRequestLogFormat "%w %V %T" JkMount /servlet...

    Virtualbox安装centos 图解

    自己整理的技术文档,里面许多都是自己实践过的; ...讨论篇:apache与tomcat及整合实现负载均衡及集群.... 190 讨论篇:Apache+Tomcat 集群负载均衡 mod_proxy模式.... 201 讨论篇:网站静态化

    java论坛一键搭建Easyjsprun! v6.0.1 UFT-8 For windows 110530.zip

    | ---modules/mod_jk.so (Apache 和 Tomcat 连接器) | ---jdk1.6.0_17(JDK 程序目录) | ---mysql5 (MySQL 程序目录) | ---my.ini (MySQL 配置文件) | ---data (MySQL 数据库目录) (2)、...

    java论坛一键搭建Easyjsprun! v6.0.1 GBK For windows 110530.zip

    | ---modules/mod_jk.so (Apache 和 Tomcat 连接器) | ---jdk1.6.0_17(JDK 程序目录) | ---mysql5 (MySQL 程序目录) | ---my.ini (MySQL 配置文件) | ---data (MySQL 数据库目录) (2)、...

    Linux简明教程.rar

    三、与shell相关的配置---------------------------------------------------------------------------- 1.shell环境变量 2.元字符详细操作表 3.bash的相关配置 四、标准输入输出------------------------------...

Global site tag (gtag.js) - Google Analytics