by gdyw1999 2009/02/19
E-MALI:[email protected] blog: http://hi.baidu.com/gdyw1999
os:windows2003 SP2
DB:linux下mysql5.22
web: apache_2.2.11-win32-x86-no_ssl.msi
JSP容器:apache-tomcat-6.0.18.zip
JAVA:jdk-6u11-windows-i586-p.exe
连接器:mod_jk-1.2.27-httpd-2.2.10.so 及tcnative-1.dll(优化tomcat对ajp13的支持,安装见http://hi.baidu.com/gdyw1999/blog/item/6ea1aff8b8e8d608d8f9fdf6.html)
ip:192.168.10.253
现测试服务器安装软件如上,同时使用3个TOMCAT ,APACHE只处理静态页面、图片、flash等,可根据情况具体配置。
192.168.10.253上TOMCAT分别为:
tomcat.8109
tomcat.8209
tomcat.8309
JDK及APAHCE的安装略过,tomcat使用zip版,无需安装。
httpd.conf 尾添加以下内容:
# (httpd.conf)
# Load Mod mod_jk
LoadModule jk_module modules/mod_jk.so
#
# Configure mod_jk
#
#
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# ###########################HOST################
NameVirtualHost 192.168.10.253:80
# ################# decent21 host #################3
<VirtualHost 192.168.10.253:80>
DocumentRoot D:/test/8109
DirectoryIndex index.html index.htm index.jsp index.php
ServerName www.8109.com
JkMountFile conf/8109workermap.properties
Options None
</VirtualHost>
<VirtualHost 192.168.10.253:80>
DocumentRoot D:/test/8209
DirectoryIndex index.html index.htm index.jsp index.php
ServerName www.8209.com
ServerAlias www.8209.com.cn
JkMountFile conf/8209workermap.properties
Options None
</VirtualHost>
<VirtualHost 192.168.10.253:80>
DocumentRoot D:/test/8309
DirectoryIndex index.jsp index.html index.php
ServerName www.8309.com
JkMountFile conf/8309workermap.properties
Options None
</VirtualHost>
在apache/conf目录下分别建立4个文件,文件名为:8109workermap.properties 8209workermap.properties 8309workermap.properties 及workers.properties
workers.properties 添加以下内容:
#
worker.list=test1,test2,test3
# ------------------------
# localhost server 1
# ------------------------
worker.test1.port=8109
worker.test1.host=127.0.0.1
worker.test1.type=ajp13
worker.test1.lbfactor=1
# ------------------------
# localhost server 2
# ------------------------
worker.test2.port=8209
worker.test2.host=127.0.0.1
worker.test2.type=ajp13
worker.test2.lbfactor=1
# ------------------------
# localhost server 3
# ------------------------
worker.test3.port=8309
worker.test3.host=127.0.0.1
worker.test3.type=ajp13
worker.test3.lbfactor=1
################### 分割线 ###################
#下面的说明,无需添加至文件内:
#注:worker.list=test1,test2,test3 表示 有3个工作池,分别是test1、test2、test3,
# worker.test1.port=8109 表示 工作池test1使用8109端口,可以使用任何端口,可以把TOMCAT放到不同的机器上面
# worker.test1.host=127.0.0.1 表示 工作池test1的地址,可以使用任何IP,可以把TOMCAT放到不同的机器上面
# worker.test1.type=ajp13 表示 工作池test1使用ajp13
8109workermap.properties 添加以下内容:
/*=test1
!/*.htm=test1
!/*.html=test1
!/*.gif=test1
!/*.jpg=test1
!/*.bmp=test1
!/*.png=test1
!/*.jpeg=test1
!/*.swf=test1
!/*.fla=test1
!/*.flv=test1
!/*.avi=test1
!/*.css=test1
!/*.js=test1
!/images/*=test1
!/music/*=test1
!/vedio/*=test1
!/flash/*=test1
!/upload/*=test1
8209workermap.properties 添加以下内容:
请将8109workermap.properties的内容复制,修改所有的test1为test2(/*=test2等)
8309workermap.properties 添加以下内容:
请将8109workermap.properties的内容复制,修改所有的test1为test3(/*=test3等)
################### 分割线 ###################
#下面的说明,无需添加至文件内:
#注:/*=test1 表示所有的请求都交给工作池test3处理,!/*.htm=test1 表示排除/*.htm ,具体内容请自己把握。
解压apache-tomcat-6.0.18.zip文件到D:/ 目录将名称修改为tomcat.8109,再COPY2份,分别重命名为:
tomcat.8209、tomcat.8309
修改d:/tomcat.8109/conf/server.xml 文件
具体请修改下面:
图1
<Server port="8105" shutdown="SHUTDOWN"> ,端口修改为8105
图2
屏蔽 8080 ,即tomcat不提供http 服务。
图3
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" /> ,AJP/1.3使用8109端口通讯。
这3个地方是运行多TOMCAT的关键。
请依次修改d:/tomcat.8209/conf/server.xml 、d:/tomcat.8309/conf/server.xml 文件内上文的3处修改:
图1 <Server port="8205" shutdown="SHUTDOWN"> ,tomcat.8209使用8205端口,此处端口不冲突即可。
图1 <Server port="8305" shutdown="SHUTDOWN"> ,tomcat.8309使用8305端口
图3 <Connector port="8209" protocol="AJP/1.3" redirectPort="8443" /> ,tomcat.8209使用8209端口通讯。
图3 <Connector port="8309" protocol="AJP/1.3" redirectPort="8443" /> ,tomcat.8309使用8309端口通讯。此处端口与workers.properties文件内定义端口对应 。
每个server.sml文件内修改添加对应的虚拟主机,请自行屏蔽其他2个(tomcat.8109添加WWW.8109.COM 即可),注意红色部分,:
<!--
</Host>
-->
<Host appBase="webapps" name="www.8109.com">
<Alias>www.online-city.com.cn</Alias>
<Context docBase="D:/test/8109" path="" reloadable="true">
</Context>
</Host>
<Host appBase="webapps" name="www.8209.com">
<Context path="" docBase="D:/test/8209" reloadable="true">
</Context>
</Host>
<Host appBase="webapps" name="www.8309.com">
<Context docBase="D:/test/8309" path="" reloadable="true">
</Context>
</Host>
</Engine>
</Service>
</Server>
别忘记了把mod_jk-1.2.27-httpd-2.2.10.so ,文件copy到apache/modules/目录下,并重新命名为mod_jk.so。
现在,再分别建立3个BAT(8109.bat 8209.bat 8309.cat )文件,供启动tomcat使用:
内容如下:
@echo off
@d:
@set JAVA_HOME=C:/Java/jdk1.6.0_11
@set PATH=%JAVA_HOME%/bin;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem
@set CLASSPATH=.;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar
@cd /tomcat.8109/bin
@cls
startup.bat
################### 分割线 ###################
说明,无需添加至文件内:
注:set JAVA_HOME=C:/Java/jdk1.6.0_11 请修改为您的JDK 目录:
注: cd /tomcat.8109/bin 请修改与(8109.bat 8209.bat 8309.cat )文件对应tomcat.8209、tomcat.8309
搭这个环境,中间走了很多弯路,总结下:
1. httpd.conf 文件内 每个虚拟主机添加 JkMountFile conf/8109workermap.properties
指定AJP转交后,TOMCAT处理什么,要不会出现APACHE 解析不了的JSP等文件时,显示源码或提示下载。
2.tomcat的配置文件server.xml,到底需要修改什么。
3.JK的工作池配置文件workers.properties怎么写,工作池名称怎么定义?在这里工作池名称不需要定义,你可以随便起,在启用 tomcat的server.xml文件内
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">)
时,才需要server.xml 与workers.properties对应,这个不是本文探讨的范围。