折腾了半天,终于在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
项目已经开始2周多了,前段时间觉得Tomcat+apache整合太麻烦,就一直只用tomcat来做测试(其实也够了),早上去报到还开会,回来N郁闷,没心情写代码,就试着给Tomcat和apache联姻,其中犯了一个很愚蠢的错误,人都快疯了,晚上7:15分,终于搞定。特写一稿留做纪念。
无常作品:wuChang@gliet.edu.cn,QQ:3263262, 2005.2.25于桂林电子工业学院
一、第一步就是下载所需要的软件了,这个不多说
a) J2sdk 这个到处都有
b) Apache 在http://jakarta.apache.org /
c) Tomcat、mod_jk2_2.0.48.dll(用mod_jk2.so也行) 这两个来这里找(http://archive.apache.org/dist/),什么版本都有,找到合适你系统的就可以了
二、怎么安装这几个家伙就不用说了,但要注意一个Tomcat5.5必需人jdk1.5才能运行! 端口什么的就用默认就行了,除非你的系统还装了IIS,如果就给apache改个端口,或是先停掉IIS(俺就是这么干的,反正这段时间也用不着IIS)。
三、设几个环境变量
a) CLASSPATH= .;%JAVA_HOME%\lib
b) JAVA_HOME= C:\Java\jdk1.5.0_01
c) TOMCAT_HOME= D:\Tomcat5.5
四、启动tomcat和apache服务,测试。
a) 在浏览器中分别输入http://localhost/和http://localhost:8080/ 如果能看到apache和tomcat的欢迎界面,恭喜恭喜,成功了一半了。看不到就另请高明吧。
b) 俺不喜欢老是输入localhost,就喜欢输入 www.wuChang.com来访问本机。你也这样?当然还不行了,得改一下host文件。Win2003系统的这个文件在这个目录C:\WINDOWS\system32\drivers\etc,用记事本什么的打开,加上一行:127.0.0.1 www.wuchang.com,保存退出。哈哈,在IE中输入www.wuChang.com 也可以看到apache的欢迎画面了吧。当然只要你喜欢还可以加个www.laDeng.com上去
五、整合。说了一堆废话,终于说到重点了。
a) 将mod_jk_2.0.47.dll或是mod_jk2.so拷贝到Apache2\modules目录中,那个DLL的名字太长了,我把帮他改了个名 mod_jk2.dll,这个世界清静多了…
b) 打开文件Apache2\conf\ httpd.conf,在文件最后加上个LoadModule jk_module modules/mod_jk2.dll ,注意这里别搞错了,我就是被这一句整惨了:(
Httpd.conf是apache中改得最多的配置文件,如果在加虚拟目录之类的都要在这里改了。比如想把apache的默认主页改成自己的,那么可以把这个文件最后的#<VirtualHost *:80>几行前面的#号去掉,把里面DocumentRoot之类的参数改成你想要的就行了。或是查询文件中的 DocumentRoot,把值改成你自己WEB的目录就OK了。
c) 在Apache2\conf目录下新建一个文件workers2.properties,添加下面内容
#******************************************************
[logger.apache2]
file=D:/Apache2/logs/jk2.log
level=INFO
debug=1
[config]
file=D:/Apache2/logs/workers2.properties
level=INFO
debug=1
[channel.socket:localhost :8009]
host=127.0.0.1
port=8009
[shm]
file=D:/Apache2/logs/jk2.shm
size=1048576
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:127.0.0.1:8009
#[uri:/*] ###表示web主目录下的所有请求都给TomCat处理
[uri:/*.jsp]##表示把所有的.jsp文件交给Tomcat处理
[uri:/*.do]
[uri:/servlet/*]
[uri:/jsp-examples/*]##表示把所有的jsp-examples目录的所有请求都交给Tomcat处理,如果在IE地址栏中输入http://127.0.0.4/ jsp-examples那么你看到的将会是http://127.0.0.1:8080/ jsp-examples中的内容。
[uri:/servlets-examples/*]
当然这个文件里有很多不是必需的,如果你下载的是jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip之类的压缩包,里面doc目录下有画详细的配置说明,还带有二个workers2.properties.sample和mod_jk2.conf.sample给你参考。
d) 打开文件Tomcat5.5\conf\ jk2.properties,修改如下
handler.list=apr,request,channelJni
# Override the default port for the socketChannel
channelSocket.port=809
#
# shm.file=${jkHome}/work/jk2.shm
apr.jniModeSo=d:/apache2/modules/mod_jk2.so
# apr.jniModeSo=inprocess
shm.file=d:/Apache2/logs/jk2.shm
六、启动tomcat服务器,启动apache服务器。大功告成!写个jsp文件测试一下吧。不行就Q我。
总结一下今天下午的蠢事。在httpd.conf中不是已经有很多行LoadModule的语句了吗,我在添加加载jk2模块的语句时,想省点事,就把原来的复制了一行,再把把模块的文件名改成了mod_jk2.dll。没想到忘了改模块的名称,就成了这个样子
LoadModule userdir_module modules/mod_jk2.so
找得眼都花不知错在什么地方,还以为是我的系统问题,重装了Tomcat和apache,重新配置一次,还是犯这个错(丢脸)。
后来想到了错误日志,在Apache2\Log\ error.log,在这个日志中发现有一行[Fri Feb 25 19:09:30 2005] [warn] module userdir_module is already loaded, skipping。突然醒悟过来,赶紧去看httpd.conf,虫虫就果然在这里,改成LoadModule jk2_module modules/mod_jk2.so,再重起apache服务,搞定。
吃饭去先,肚子好饿。
无常作品:wuChang@gliet.edu.cn,QQ:3263262, 2005.2.25于桂林电子工业学院