java不同于php,单个站点更新维护都会影响到其他站点,一般都会将几个站点放在一个实例下。今天全称演示单台服务器如何配置多个tomcat实例。
环境
tomcat:/usr/local/tomcat-7.0.50
a.ttlsa.com
站点程序:/data/site/a.ttlsa.com
端口:8080文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
b.ttlsa.com
站点程序:/data/site/b.ttlsa.com
端口:8081文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
1. tomcat安装
安装很简单,配置好jdk与解压tomcat即可,关于《tomcat安装》我这边不再重复了。文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
如果连接失效,请复制https://www.ttlsa.com/web/install-tomcat7-on-linux/文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
2. 配置多实例目录
在tomcat安装目录下创建a.ttlsa.com、b.ttlsa.com,并且将conf、logs、webapp、temp、work目录拷贝到这两个目录,然后tomcat安装目录只需要留下bin、a.ttlsa.com、b.ttlsa.com、lib这4个目录即可。配置后的目录结构如下:文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
# 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文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
# 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>
文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
3.2 配置b.ttlsa.com文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
# 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文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
#!/bin/sh # AuthName:凉白开 # Website:https://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 启动脚本赋权限文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
# chmod a+x tomcat.sh
5. 启动测试
5.1 启动/关闭a.ttlsa.com文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
启动 # 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文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
启动 # 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的当前目录下执行才可以文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
6. 结束
配置到此结束,如果需要操作多个实例显得比较麻烦,大家可以自行写统一的脚本,我这边有自己的一份,有需要的可以找我要。内容比较多,就不贴出来了。文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/ 文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
13F
请问楼主有centos7下的启动多实例tomcat的脚本吗
12F
既然云系统诞生,为什么数据还是信用度差。生效的硬件库比是不是成本不见了呢??kavascripT..CC是不是构架太烂了
11F
这种方式很不建议,因为多个实例都依赖于同一个HOME 另外启动脚本中JVM_OPTIONS并不能生效,所以还是每个tomcat应用单独的HOME和BASE,不过还是要给作者点个赞,因为拿出来分享就是贡献
10F
按照这种方式,应用程序访问不了
9F
war包放在/data/site/a.ttlsa.com下不能访问到报404,也没看到8081端口啊
B1
@ 匿名 有个配置端口的地方,文中没有体现出来。不知道你是否配置了8080和8081
8F
多实例能否共享lib呢, 还有多实例貌似比单实例耗内存啊。都是单独分配的内存空间吗?
B1
@ 林杰 都是单独分配空间
B2
@ 运维生存时间 是的,所以有点麻烦。原来全部放在一个实例,勉强能跑,现在分开放之后,一直会OOM
B3
@ 林杰 tomcat这点确实很讨厌,或者你试试resin
B4
@ 运维生存时间 哈哈,我研究下。感谢。
B1
@ 林杰 千万不要贡献lib,如果出现lib冲突,你就被迫重启整个tomcat了,哭都来不及
B2
@ 匿名 lib冲突,这个是怎么个意思,求指点?
7F
楼主好
tomcat 单机多实例 用zabbix怎么监控每个实例的使用情况
6F
为什么只能切换到目录下才能执行
B1
@ 东东一世 环境变量的关系
5F
访问的路径分别是?
B1
@ lanegg 不明白你的意思~!
4F
@学习了
文件编码有问题,vim文件,把^M删除,或者使用dos2unix命令转换。
3F
按你说的做了一遍 不能成功,
提示这个错误-bash: ./tomcat.sh: /bin/sh^M: bad interpreter: No such file or directory
2F
学习了, 很有用, 楼主不知道麻烦不, 能不能把整个配置好的 打包发给我研究下, hpze2000@qq.com
谢谢!
1F
很有用,学习了。。。
来自外部的引用