Tomcat多实例 - 单机
2016-08-10 15:34
204 查看
最近在研究Apache+Tomcat+负载均衡/集群的过程中,发现了一篇好的在单机上部署多个tomcat实例的blog。
感受:关于Apache+Tomcat+负载均衡/集群,国内关于这方面的资料是挺多,但不知道是我搜索的问题还是国内的资料参差不齐,没有几个是全面并且精准的。经过不懈的尝试,还是外来的和尚会念经,而且质量很高(-:
单机多tomcat实例:
http://www.ramkitech.com/2011/07/running-multiple-tomcat-instances-on.html
再讲些有用没用的,其实类似这样单机上部署多个tomcat实例,只要对源码有所了解就可以自己动手配置实现(比如说我这样低水平的,花些时间看看startup脚本就知道配置的道理了),所以更多时候,我们静不下心来去认真研究,单纯的求快,碰巧work了就万事大吉了。可能这也是我们总是跟在美国后面的原因吧。
废话少说,我用的环境,Win7(没有管理员权限)+ apache-tomcat-7.0.54.zip
知识准备:
1. JDK和JRE环境提前准备好,这个肯定是必须的前提;
2. Tomcat的启动需要设置CATALINA_HOME和CATALINA_BASE。CATALINA_HOME将用来访问bin和lib;CATALINA_BASE将用来访问conf,webapps,logs,temp,work;
3. CATALINA_BASE若不指定,则默认为CATALINA_HOME
开始部署多个tomcat实例:
1. 解压apache-tomcat-7.0.54.zip到某文件目录,解压后的目录作为CATALINA_HOME指向的目录;
2. 在同级目录下建立多个tomcat的实例,结构类似如下(我用了Application的名字命名的,这都无所谓了);
3. 拿其中一个实例Lego来说,将apache-tomcat-7.0.54目录下的conf,logs,temp,webapps(work目录在tomcat启动时会自动创建)拷到Lego实例下
4. 下面修改conf下的配置文件server.xml,而且只需要修改shutdown, connector, ajp三个端口号。为了防止以后忘了端口号,我把这些端口号记录在README.txt中。
5. 如上图所示,在Lego目录下,编写start和shutdown脚本。
startup-lego.bat
shutdown-lego.bat
6. 别忘了把自己的application放在webapps下;
7. 运行start和shutdown脚本,测试。
--- 到此,一个tomcat实例Lego部署完成;照此方法可以部署其他的tomcat实例,但注意三个端口号不能冲突。
然后想到个问题:单机下这样部署多个tomcat实例有什么用呢?
答:拿我的经历为例,之前是将所有的application放在webapps目录下,导致所有application共用一套配置,一起start,一起shutdown;但很多时候,我只想让其中的某个application shutdown掉。之前的解决办法简单粗暴,多弄几个tomcat,每个tomcat的webapps下放一个application,然后再配置不同的端口号。但这样弄,明显觉得application过重了,而且需要维护多套tomcat。
刚刚发现application的log生成位置不对,还是生成在apache-tomcat-7.0.54的logs目录下。这应该是application中log4j配置的问题。
经检查发现,log4j.appender.R.File =${catalina.home}/logs/lego.log,修改成log4j.appender.R.File =${catalina.base}/logs/lego.log解决!
Done!
感受:关于Apache+Tomcat+负载均衡/集群,国内关于这方面的资料是挺多,但不知道是我搜索的问题还是国内的资料参差不齐,没有几个是全面并且精准的。经过不懈的尝试,还是外来的和尚会念经,而且质量很高(-:
单机多tomcat实例:
http://www.ramkitech.com/2011/07/running-multiple-tomcat-instances-on.html
再讲些有用没用的,其实类似这样单机上部署多个tomcat实例,只要对源码有所了解就可以自己动手配置实现(比如说我这样低水平的,花些时间看看startup脚本就知道配置的道理了),所以更多时候,我们静不下心来去认真研究,单纯的求快,碰巧work了就万事大吉了。可能这也是我们总是跟在美国后面的原因吧。
废话少说,我用的环境,Win7(没有管理员权限)+ apache-tomcat-7.0.54.zip
知识准备:
1. JDK和JRE环境提前准备好,这个肯定是必须的前提;
2. Tomcat的启动需要设置CATALINA_HOME和CATALINA_BASE。CATALINA_HOME将用来访问bin和lib;CATALINA_BASE将用来访问conf,webapps,logs,temp,work;
3. CATALINA_BASE若不指定,则默认为CATALINA_HOME
开始部署多个tomcat实例:
1. 解压apache-tomcat-7.0.54.zip到某文件目录,解压后的目录作为CATALINA_HOME指向的目录;
2. 在同级目录下建立多个tomcat的实例,结构类似如下(我用了Application的名字命名的,这都无所谓了);
3. 拿其中一个实例Lego来说,将apache-tomcat-7.0.54目录下的conf,logs,temp,webapps(work目录在tomcat启动时会自动创建)拷到Lego实例下
4. 下面修改conf下的配置文件server.xml,而且只需要修改shutdown, connector, ajp三个端口号。为了防止以后忘了端口号,我把这些端口号记录在README.txt中。
5. 如上图所示,在Lego目录下,编写start和shutdown脚本。
startup-lego.bat
shutdown-lego.bat
6. 别忘了把自己的application放在webapps下;
7. 运行start和shutdown脚本,测试。
--- 到此,一个tomcat实例Lego部署完成;照此方法可以部署其他的tomcat实例,但注意三个端口号不能冲突。
然后想到个问题:单机下这样部署多个tomcat实例有什么用呢?
答:拿我的经历为例,之前是将所有的application放在webapps目录下,导致所有application共用一套配置,一起start,一起shutdown;但很多时候,我只想让其中的某个application shutdown掉。之前的解决办法简单粗暴,多弄几个tomcat,每个tomcat的webapps下放一个application,然后再配置不同的端口号。但这样弄,明显觉得application过重了,而且需要维护多套tomcat。
刚刚发现application的log生成位置不对,还是生成在apache-tomcat-7.0.54的logs目录下。这应该是application中log4j配置的问题。
经检查发现,log4j.appender.R.File =${catalina.home}/logs/lego.log,修改成log4j.appender.R.File =${catalina.base}/logs/lego.log解决!
Done!
相关文章推荐
- Java Web开发Tomcat中三种部署项目的方法
- tomcat
- TOMCAT 获取服务器ip地址和端口号
- Tomcat报错 Caused by: java.lang.NoSuchMethodError
- Linux 下修改Tomcat使用的JVM内存大小
- solr4.10+tomcat7+mmseg4j中文分词搭建过程
- MAC下 IntelliJ IDEA配置tomcat7.0 执行javaweb的问题
- mysql touch: cannot touch ‘/usr/local/tomcat/logs/catalina.out’: Permission denied解决方法
- Win7下单机版的伪分布式solrCloud环境搭建Tomcat7+ solr-5.2.1+zookeeper3.4.6
- 解决Tomcat数据连接池无法释放
- tomcat集群配置
- 监听tomcat服务器启动/关闭并从配置文件中读取参数进行初始化
- tomcat启动startup.bat一闪而过
- Tomcat内存设置详解
- 连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试
- Tomcat性能优化方案整理
- 同部电脑运行多个tomcat
- 关于tomcat设置根目录的验证
- tomcat内存溢出解决办法
- tomcat配置之apache代理配置