分享
 
 
 

谈谈我对apache+tomcat+jk2整合的理解

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

apache 和 tomcat都可以做为独立的WEB服务器来用,apache功能强大、高效,但并不能支持JSP及serlet,而tomcat正相反,所以要把它们结合起来。

通过在apache中加载整合模块和进行设置,apache就能够根据url,把不属于自己的请求转给tomcat.

版本的选择的相关性:

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

1.Apache

httpd2.0.x,对于与apache1.3.x等版本有什么区别不知道,应该有个飞跃吧,连名字都改成httpd了。而我们选择了用JK2整合,JK2是针对apache2.0的思想开发的(英语太差,见原文:JK2 has been developed with Apache 2.0 in mind),所以选择要用httpd2.0.x。

2.整合方式-JK2

为什么选择JK2呢?(JK is a replacement to the elderly mod_jserv. It was a completely new Tomcat-Apache plug-in that handles the communication between Tomcat and Apache.The newest JK2 is a refactoring of JK . The native part has been completly restructured and the configuration has been simplified a lot.)还有很多详细的描述,但我只看懂了最后一句话,呵呵

3.Tomcat5.0、J2SDK1.4.x

能够支持JAVA,JSP,及Servlet的较新标准吧?它们之间应该有一定的关联,据说tomcat5及JDK1.4对中文的支持改进了不少,不用进行复杂的设置了,但对于针对以前JSP标准开发的页子的中文兼容性不太好。

编译安装过程中的注意事项:

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

1.Apache

必须编译成允许动态加载模块的方式,即在configure时要加 --enable-so选项,因为将来要加载mod_jk2这个整合模块。

假设apache的安装目录为PathofApache,则编译的模块在PathofApache/modules下,配置文件在PathofApache/conf下。

2.tomcat

只会用二进制版本,解压、释放包就行了。(听说tomcat是JAVA写的,不知道用那个ANT编译有什么优势也没试成功过),假设tomcat安装目录为PathOfTomcat。

3.JDK

我用的是二进制版本,直接运行,自己解压释放包。(如果用那个RPM包我不知道JAVA_HOME怎么设,呵呵)设置JAVA_HOME和CLASSPATH环境变量。JAVA_HOME也是不设置而在PathOfTomcat/bin/catalina.sh中赋值,CLASSPATH目前我还没设置,也许在JSP中要用到JAVA标准类的时候要用到。

4。JK2模块编译

假设JK2包释放后目录改名为PathOfJK2,且当前目录为PathOfJK2(参考JK文档,注意关于编译的部分在JK部分有说明,而默置要看JK2部分,因为不同的整合方式有很大的不同。http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/

cd jk/native2

chmod +755 buildconf.sh

./buildconf.sh (因为buildconf.sh没有执行权,所以要改,但零二年的夏天告诉我只要 sh buildconf.sh就行了)

./configure --with-apxs2=PathOfApache/bin/apxs

这个apxs在apache的安装目录的bin下,所以要先装apache。据说只有编译安装的apache才有这个文件,rpm包安装的没有这个文件,如果要给rpm包安装的apache编译整合模块,要找一个相同版本的编译一下用然后再删掉,版本号要完全相同,否则编译出来的模块不能用。

还有两个参数我没有,英文的说明也没看太懂,就在JK的文档中有说明:--with-apache=DIR,DIR is the path where apache sources are located. The apache sources should have been configured before configuring mod_jk. DIR is something like: /home/apache/apache_1.3.19 It builds a static Apache module. --enable-EAPI,This parameter is needed when using Apache-1.3 and mod_ssl, otherwise you will get the error message: "this module might crash under EAPI!" when loading mod_jk.so in httpd. Not needed when --with-apxs has been used

另外,我在执行configure的时候提示有错误,好像是关于路径的,我就先启动了tomcat,执行通过。

make

make install

所有的文档都说如果发布不成功,那么要手工发布,我也是手工发布的:

cp PathOfJK2/build/jk2/apache2/mod_jk2.so PathOfApache/modules/

配置文件的修改

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

JK2所用的配置文件有2个:

jk2.properties,默认要放在PathOfTomcat/conf中

workers2.properties默认要放在PathOfApache/conf中

这两个文件的作用真的不明白,jk2.properties可能是定义tomcat与apache的通讯端口等,workers2.properties可能是告诉apache有哪些目录是tomcat支持的。

1.在PathOfTomcat/conf中有tomcat的主配置文件server.xml和JK2的配置文件jk2.properties。

实际上我对这两个文件没有做任何修改,而jk2.properties缺省就是空的。看了看在server.xml中起作用的可能就是在第一个后面紧挨着的对于整合在起作用吧,没有应该加上。

<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 --

<Connector port="8009"

enableLookups="false"

redirectPort="8443" debug="0"

protocol="AJP/1.3" /

2.在PathOfApache/conf中有apache的配置文件httpd.conf,及JK2配置文件workers2.properties

修改httpd.conf,只加入:LoadModule jk2_module modules/mod_jk2.so

关于workers2.properties,引用JK文档例子中最小配置如下:

# Define the communication channel

[channel.socket:localhost:8009]

info=Ajp13 forwarding over socket

tomcatId=localhost:8009

# Map the Tomcat examples webapp to the Web server uri space

[uri:/examples/*]

info=Map the whole webapp

这样就完成了一种整全方式,只要正常访问/examples目录,这个目录就能被apache转给tomcat而不用加tomcat的端口号了。

这可能是最简单但很少用的配置方法吧

――――――――――――――――――――――――――

还有一种配置的方法很实用但没看懂,适合做很多的虚拟主机。

把apache与tomcat都做虚拟主机,并相同的主机指向相同的根目录

不改端口 jk2.properties可为空,workers2.properties不用做地址映射(?)。

在http.conf中再加入

<Directory ~ "/WEB-INF/"

Order allow,deny

Deny from all

</Directory

#因为是相同的目录,所在要禁止对WEB-INF的访问。

<Location ~ "/*.jsp|/*/servlet/*"

JkUriSet worker ajp13:localhost:8009

</Location

#这可能是做映射,将目录中的jsp和servlet由tomcat解析。

在server.xml中 除了做虚拟主机,可能特别要加入

<Context path="" docBase="" debug="1"/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有