Tomcat多实例部署
前言
一般我们使用tomcat时,如果是多实例的情况都会拷贝多个tomcat,但实际上tomcat还可以建立类似于weblogic的domain,以实现多实例部署。
Weblogic多实例部署回顾
讲tomcat多实例部署前我们先回顾一下weblogic的多实例。以weblogic10为例,安装完weblogic后,会在c:\bea10生成weblogic的Home目录,里面放置的是jdk、weblogic的管理目录等:
使用的时候我们会建立一个独立的domain,可以放置到任何目录。每个独立的domain包含自己的bin目录,在bin目录中启动domain时会设置两个环境变量,一个是weblogic home的位置,一个是domain的位置,如下:
在setDomainEnv.cmd中设置的是weblogichome的位置
在startWebLogic.cmd中设置的是domain的位置
Weblogic建立domain时,通过自动设置了这两个参数,使得安装一个weblogic可以自动创建多个domain,并分别启动(每个domain应该设置不同的端口)。
Tomcat多实例实现
各种应用服务器的思路其实大同小异,下面看tomcat的多实例部署。以下我把tomcat的实例称作instance。并通过tomcat7进行讲解(tomcat5的文件夹略有不同)。总的结构如下:
首先,我们建立tomcat主目录,如下:
对于tomcat主目录,从apache上下载解压以后,删除复制出来bin、lib和根目录的文件几个。
然后,我们建立instance。如下我在tomcat目录建立了一个主目录,然后创建了nstc-instances用于放置各种实例:
而对于每个实例,其实需要的内容也很少,必须的是conf文件夹和里面的文件。Logs、temp和work创建实例时可以不设置(实例启动时会自动生成),而对于webapps目录可以在conf的文件中指定。最完整的实例如下:
Startup.bat是我手动创建的
对于tomcat也存在两个变量CATALINA_HOME、CATALINA_BASE,其中CATALINA_HOME指定的是tomcat主目录,CATALINA_BASE指定的是instance的目录,因为CATALINA_BASE默认和主目录相同,所以一般不用单独建立instance。如上图设置了实例的目录,然后因为导航到了tomcat主目录启动,所以不需要单独设置CATALINA_HOME了。
实际使用时webapps也可以单独设置,例如在conf\Catalina\localhost\WST.xml文件中,可以指定应用的目录就是程序编译后的目录,这样程序编译后就不用再拷贝到webapps中了。
最后,注意每个实例需要设置不同的端口。
结尾
至此,我们非常快速的了解了如果对tomcat建立多个instance,同时我们也了解到了其实tomcat的主目录只需要bin和lib文件夹中的内容就可以了。
通过对tomcat的了解,未来可以在产品中嵌入tomcat(不是使用tomcat的嵌入模式),让应用变成自启动程序。也可以通过程序控制建立多个tomcat实例。
(关注微信公众号,获取更多内容)