本文档介绍了如何在linux上将tomcat与apache集成,并使用两个tomcat做集群.
1.安装apache
下载apache源码httpd-2.0.47.tar.gz
tar -xvzf httpd-2.0.47.tar.gz
cd httpd-2.0.47
./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-deflate --enable-rewrite --enable-expires --enable-headers --with-mpm=prefork
make
make install
2.安装tomcat
下载jakarta-tomcat-4.1.29.tar.gz
将其解压至/usr/local/tomcat
3.下载jakarta-tomcat-connectors-jk2.0.2-src-current.tar.gz
tar -zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
cd jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2
chmod +x buildconf.sh
./buildconf.sh
./configure --with-apxs2=/usr/local/httpd/bin/apxs --with-apache2-lib=/usr/local/httpd/lib --with-tomcat41=/usr/local/tomcat
make
cp ../build/jk2/apache2/mod_jk2.so /usr/local/httpd/modules/
将mod_jk2.so的权限改为755
4.配置jk2,相应的有两个配置文件,一个是/usr/local/tomcat/conf/jk2.properties,使用默认生成的即可,不需做任何修改,另一个配置文件是/usr/local/httpd/conf/workers2.properties,如果没有该文件则需要手工创建一个其内容为
- Configuration file of JK2
shm
file=$Unknown macro: {serverRoot}/logs/shm.file
size=1048576
- Define the communication channel
[channel.socket:tomcat1]
#info=Ajp13 forwarding over socket
#tomcatId=localhost:8009
port=8009
host=127.0.0.1
[ajp13:tomcat1]
channel=channel.socket:tomcat1
[channel.socket:tomcat2]
port=8019
host=127.0.0.1
[ajp13:tomcat2]
channel=channel.socket:tomcat2
[lb:lb1]
worker=ajp13:tomcat1
worker=ajp13:tomcat2
- Map the Tomcat examples webapp to the Web server uri space
info=Map the whole webapp
[uri:/anjilogistic/*]
group=lb:lb1
以上定义了两个tomcat作为集群,分别使用8009和8019端口进行通信
5.为了使两个tomcat的session共享需要下载javagroups.jar和tomcat-javagroups.jar,将这两个jar拷贝到/usr/local/tomcat/server/lib目录下
6.拷贝/usr/local/tomcat到/usr/local/tomcat2然后分别修改conf/server.xml这个配置文件
因为有两个tomcat在同时运行,所以配置文件需要修改几个端口,
(1)用来shutdown的端口,分别改为8005和8015
(2)用来进行web服务的端口,一个改为8080,另一个改为8088
(3)加一个Connector
port="8019" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="0"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
另一个端口改为8009
(4)新建一个Context
reloadable="true" crossContext="true">
prefix="localhost_anjilogistic_log." suffix=".txt"
timestamp="true"/>
home="com.wombat.empl.EmployeeRecordHome"
remote="com.wombat.empl.EmployeeRecord"/>
debug="10"
printToScreen="true"
saveOnRestart="false"
maxActiveSessions="-1"
minIdleSwap="-1"
maxIdleSwap="-1"
maxIdleBackup="-1"
pathname="null"
printSessionInfo="true"
checkInterval="10"
expireSessionsOnShutdown="false"
serviceclass="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="127.0.0.1"
mcastPort="45566"
mcastFrequency="500"
mcastDropTime="5000"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="2"
useDirtyFlag="true">
value="15"/>
override="false"/>
type="javax.sql.DataSource"/>
usernamesa
password
driverClassName
org.hsql.jdbcDriver
url
jdbc:HypersonicSQL:database
type="javax.mail.Session"/>
mail.smtp.host
localhost
global="simpleValue"
type="java.lang.Integer"/>
为了使两个tomcat的session能够共享,放在session中的对象都要实现 Serializable接口