- A+
java不同于php,单个站点更新维护都会影响到其他站点,一般都会将几个站点放在一个实例下。今天全称演示单台服务器如何配置多个tomcat实例。
环境
tomcat:/usr/local/tomcat-7.0.50
a.ttlsa.com
站点程序:/data/site/a.ttlsa.com
端口:8080
b.ttlsa.com
站点程序:/data/site/b.ttlsa.com
端口:8081
1. tomcat安装
安装很简单,配置好jdk与解压tomcat即可,关于《tomcat安装》我这边不再重复了。
如果连接失效,请复制http://www.ttlsa.com/web/install-tomcat7-on-linux/
2. 配置多实例目录
在tomcat安装目录下创建a.ttlsa.com、b.ttlsa.com,并且将conf、logs、webapp、temp、work目录拷贝到这两个目录,然后tomcat安装目录只需要留下bin、a.ttlsa.com、b.ttlsa.com、lib这4个目录即可。配置后的目录结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# pwd /usr/local/tomcat-7.0.50 # tree -d -L 2 ├── bin ├── a.ttlsa.com │ ├── conf │ ├── logs │ ├── target │ ├── temp │ ├── webapp │ └── work ├── lib └── b.ttlsa.com ├── conf ├── logs ├── temp ├── webapp └── work |
3. 配置站点server.xml
3.1 配置a.ttlsa.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# vim /usr/local/tomcat-7.0.50/a.ttlsa.com/conf/server.xml //注释ajp <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> --> //server端口8005改为8001 <Server port="8001" shutdown="SHUTDOWN"> //在<Engine name="Catalina" defaultHost="localhost">增加host配置,如下 <Host name="a.ttlsa.com" appBase="/data/site/a.ttlsa.com" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="" reloadable="true"> <valve className="org.apache.catalina.valves.RemoteAddrValve" /> </Context> </Host> |
3.2 配置b.ttlsa.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# vim /usr/local/tomcat-7.0.50/a.ttlsa.com/conf/server.xml //注释ajp <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> --> //server端口8005改为8002 <Server port="8002" shutdown="SHUTDOWN"> //在<Engine name="Catalina" defaultHost="localhost">增加host配置,如下 <Host name="b.ttlsa.com" appBase="/data/site/b.ttlsa.com" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="" reloadable="true"> <valve className="org.apache.catalina.valves.RemoteAddrValve" /> </Context> </Host> |
4. 多实例启动脚本
在a.ttlsa.com、b.ttlsa.com目录下分别创建启动脚本tomcat.sh
4.1 脚本内容tomcat.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#!/bin/sh # AuthName:凉白开 # Website:http://www.ttlsa.com # DateTime:2014-05-04 # description: 启动tomcat多实例. . /etc/init.d/functions RETVAL=$? # tomcat实例目录 export CATALINA_BASE="$PWD" # tomcat安装目录 export CATALINA_HOME="/usr/local/tomcat-7.0.50" # 可选 export JVM_OPTIONS="-Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m" case "$1" in start) if [ -f $CATALINA_HOME/bin/startup.sh ];then echo $"Start Tomcat" $CATALINA_HOME/bin/startup.sh fi ;; stop) if [ -f $CATALINA_HOME/bin/shutdown.sh ];then echo $"Stop Tomcat" $CATALINA_HOME/bin/shutdown.sh fi ;; *) echo $"Usage: $0 {start|stop}" exit 1 ;; esac exit $RETVAL |
4.2 启动脚本赋权限
1 |
# chmod a+x tomcat.sh |
5. 启动测试
5.1 启动/关闭a.ttlsa.com
1 2 3 4 5 6 |
启动 # cd /usr/local/tomcat-7.0.50/a.ttlsa.com/ # ./tomcat.sh start 关闭 # cd /usr/local/tomcat-7.0.50/a.ttlsa.com/ # ./tomcat.sh stop |
5.2 启动/关闭b.ttlsa.com
1 2 3 4 5 6 |
启动 # cd /usr/local/tomcat-7.0.50/a.ttlsa.com/ # ./tomcat.sh start 关闭 # cd /usr/local/tomcat-7.0.50/a.ttlsa.com/ # ./tomcat.sh stop |
备注:一定需要cd到tomcat.sh的当前目录下执行才可以
6. 结束
配置到此结束,如果需要操作多个实例显得比较麻烦,大家可以自行写统一的脚本,我这边有自己的一份,有需要的可以找我要。内容比较多,就不贴出来了。

16/05/2016 上午 10:28 沙发
请问楼主有centos7下的启动多实例tomcat的脚本吗
12/11/2015 下午 3:42 板凳
既然云系统诞生,为什么数据还是信用度差。生效的硬件库比是不是成本不见了呢??kavascripT..CC是不是构架太烂了
17/08/2015 下午 1:48 地板
这种方式很不建议,因为多个实例都依赖于同一个HOME 另外启动脚本中JVM_OPTIONS并不能生效,所以还是每个tomcat应用单独的HOME和BASE,不过还是要给作者点个赞,因为拿出来分享就是贡献
06/07/2015 上午 10:20 4楼
按照这种方式,应用程序访问不了
05/07/2015 下午 9:52 5楼
war包放在/data/site/a.ttlsa.com下不能访问到报404,也没看到8081端口啊
05/07/2015 下午 11:10 1层
@匿名 有个配置端口的地方,文中没有体现出来。不知道你是否配置了8080和8081
16/06/2015 下午 2:29 6楼
多实例能否共享lib呢, 还有多实例貌似比单实例耗内存啊。都是单独分配的内存空间吗?
16/06/2015 下午 4:12 1层
@林杰 都是单独分配空间
17/06/2015 下午 4:00 2层
@运维生存时间 是的,所以有点麻烦。原来全部放在一个实例,勉强能跑,现在分开放之后,一直会OOM
17/06/2015 下午 4:56 3层
@林杰 tomcat这点确实很讨厌,或者你试试resin
18/06/2015 下午 11:28 4层
@运维生存时间 哈哈,我研究下。感谢。
04/05/2016 上午 10:11 1层
@林杰 千万不要贡献lib,如果出现lib冲突,你就被迫重启整个tomcat了,哭都来不及
02/05/2017 下午 2:32 2层
@匿名 lib冲突,这个是怎么个意思,求指点?
06/03/2015 下午 3:32 7楼
楼主好
tomcat 单机多实例 用zabbix怎么监控每个实例的使用情况
02/03/2015 下午 2:42 8楼
为什么只能切换到目录下才能执行
03/03/2015 上午 8:55 1层
@东东一世 环境变量的关系
25/01/2015 下午 6:05 9楼
访问的路径分别是?
26/01/2015 上午 10:35 1层
@lanegg 不明白你的意思~!
25/11/2014 下午 3:51 10楼
@学习了
文件编码有问题,vim文件,把^M删除,或者使用dos2unix命令转换。
25/11/2014 下午 3:40 11楼
按你说的做了一遍 不能成功,
提示这个错误-bash: ./tomcat.sh: /bin/sh^M: bad interpreter: No such file or directory
25/11/2014 下午 1:07 12楼
学习了, 很有用, 楼主不知道麻烦不, 能不能把整个配置好的 打包发给我研究下, hpze2000@qq.com
谢谢!
23/10/2014 下午 5:54 13楼
很有用,学习了。。。
来自外部的引用: 1