• jakarta-tomcat-connectors-1.2.15-src(mod_jk链接器)
  • 点击进入下载页面:下载地址3


上几次视频 我们安装了 jdk , tomcat , apache .....

现在我们来做一个整合,也就是当访问 apache 80 端口时候 遇到 jsp 文件也可以正常访问。

如果不整合, 你的apache 80 是不能运行jsp文件的, 只能使用8080端口,也就是tomcat 来访问。

如何整合呢 ? 要借助一个叫做 apache tomcat 的链接器。

下面是官方网站的下载地址,目前为止最新版是 1.2.15。。。
http://archive.apache.org/dist/jakarta/tomcat-connectors/jk/source/jk-1.2.15/

文章最后我会把这个工具提供下载,如果官方网站太慢的话。

首先下载 jakarta-tomcat-connectors-1.2.15-src.tar.gz 到服务器
解压
 ]# tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz

注意是进入: jk/native 这个目录
 ]# cd jakarta-tomcat-connectors-1.2.15-src/jk/native

请确认你的 apache 的 apxs 文件位置
  native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs

编译生成mod_jk
  native]# make

拷贝编译完成生成的 mod_jk.so 文件, 这里也是要注意你的apache modules 目录位置
  native]# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/
===============================================
修改 apache 配置文件

# vi /etc/httpd.conf

在DirectoryIndex中添加 index.jsp

<IfModule dir_module>
    DirectoryIndex index.html index.jsp
</IfModule>
增加关于加载mod_jk的语句:

LoadModule jk_module modules/mod_jk.so
Include /usr/local/apache2/conf/mod_jk.conf

 添加以下内容( 添加的时候去掉注释,可能文件不能显示中文 ):

###### 指出mod_jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /usr/local/apache2/conf/workers.properties

###### Where to put jk logs
JkLogFile /usr/local/apache2/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"

###### 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/*  worker1
JkMount /*.jsp worker1
JkMount /*.do worker1

把一些注释去掉吧,只些一些起作用的语句上去。保存退出。
===================================================

在/usr/local/apache2/conf/ 下面 建立两个配置文件mod_jk.conf和workers.propertie

注意:
( 如果没有 conf 目录,可以建立,因为我安装时指定把 httpd.conf 放在 /etc 下的,就没有 conf 目录了 )
# vi mod_jk.conf

 添加以下内容( 添加的时候去掉注释,可能文件不能显示中文 ):

###### 指出mod_jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /usr/local/apache2/conf/workers.properties

###### Where to put jk logs
JkLogFile /usr/local/apache2/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"

###### 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/*  worker1
JkMount /*.jsp worker1
JkMount /*.do worker1

------------------------------------------------------------

# vi workers.properties

 添加以下内容:

####### Defining a worker named worker1 and of type ajp13
worker.list=worker1

####### Set properties for worker1
worker.worker1.type=ajp13 
worker.worker1.host=localhost 
worker.worker1.port=8009
worker.worker1.lbfactor=50 
worker.worker1.cachesize=10 
worker.worker1.cache_timeout=600 
worker.worker1.socket_keepalive=1 
worker.worker1.socket_timeout=300

-------------------
我的tomcat 配置文件路径:
/usr/local/tomcat/conf/server.xml

最后编辑Tomcat的配置文件server.xml,在 <Host 段中加入:

<Context path="" docBase="/usr/local/apache2/htdocs" debug="0" reloadable="true" crossContext="true"/>

 

重新启动Apache和Tomcat。。。

[root@localhost bin]# ./shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr/java/jdk1.7.0

[root@localhost bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr/java/jdk1.7.0

# /usr/local/apache2/bin/apachectl stop

# /usr/local/apache2/bin/apachectl start

刚才我在修改 httpd.conf 可能写入了一些多余信息 导致apache配置文件出错,我注释就可以了。

在 /usr/local/apache2/htdocs/ 下 删掉 index.html

建立一个index.jsp , 

写入一些简单的内容:

<%
 out.println( "Hello www.17rumen.com" );
%>
用浏览器访问服务器 http://192.168.138.128,看到正确的页面了。

说明 apache 遇到jsp页面 ,它可以提交给 tomcat 去处理。。。

这样就可以整合了 apache 和 tomcat 了。谢谢大家观看。。。


“CentOS5.3_JSP服务器_07 编译 mod_jk 1.2.15 链接器 整合apache httpd 和 tomcat”有6个评论

  1. 11月 24th, 2009 at 17:11:29 #匿名

    你的负载均衡只是简单的,怎么实现Session的复制呢?

    [回复]

  2. 11月 24th, 2009 at 19:28:26 #admin

    朋友, 留言错了文章吧, 呵呵,负载均衡是这个文章
    http://www.17rumen.com/archives/168.html

    我也在这里回复一下你了。。其中是有设置的
    #设置用于负载均衡的server的session可否共享(重要,缓存共享)
    worker.controller.sticky_session=1
    #worker.controller.sticky_session_force=1
    worker.status.type=status

    不知道这样算不算session复制,我是刚学习负载均衡的。共享和复制还不能理解区别, 我暂时理解是一样的。

    希望你可以给点意见, 呵呵。

    [回复]

  3. 12月 28th, 2009 at 16:35:12 #5.4LAMP基础上

    增加关于加载mod_jk的语句
    是放在哪里,我是放在下面
    还有,host段怎么加入,我是加在上面
    现在我的情况是IP:8080才会有HELLO
    因为不知道原理,所以请楼主帮忙解答下.

    [回复]

    adminreply on 2009-12-29 11:26:21:

    加载mod_jk的语句 - 是在 apache 配置文件httpd.conf 中加载。

    Tomcat的配置文件server.xml 的 Host 段吗 ? 请注意server.xml 中的一些注释语句,如果加入到了一些注释语句 中,起不到作用的。

    或者你可以下载观看视频,这样比较清楚。

  4. 12月 29th, 2009 at 16:36:17 #5.4LAMP基础上

    看了视频才知道问题出在我少打了一段,原本还以为是你多余的.
    感谢楼主分享,请继续更新,我会一直关注的.

    [回复]

  5. 05月 17th, 2010 at 19:36:41 #mike

    非常感谢你提供的视频教程,给了我很大帮助!
    但现在有一个问题:
    完全按照你视频教程中的做法,在我的实际配置中出现一个错误:
    在httpd.conf中
    添加了下面内容
    LoadModule jk_module modules/mod_jk.so
    Include /usr/local/apache2/conf/mod_jk.conf
    JkWorkersFile /usr/local/apache2/conf/workers.properties
    JkLogFile /usr/local/apache2/logs/mod_jk.log
    JkLogLevel info
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    JkRequestLogFormat "%w %V %T"
    JkMount /servlet/* worker1
    JkMount /*.jsp worker1
    JkMount /*.do worker1

    但由于已经/usr/local/apache2/conf/mod_jk.conf已经包含上面一段内容
    关闭和启动APACHE时报错,JkWorkersFile /usr/local/apache2/conf/workers.properties 出现2次!

    在去掉这段内容后,APACHE与TOMCAT根目录一致的情况下,JSP文件可正常显示。

    但在APACHE和TOMCAT中设置多个域名时,目录一致也不行,只显示JSP文件源代码!
    期待您的回复,谢谢!

    [回复]

有任何疑问或建议,可以给作者留言:



公告:

  • 2010年5月之前的视频是文字解说演示,没有声音。
  • 2010年5月以后的视频全部带声音。