天天看点

同一台机安装多个tomcat

一台机器可以跑多个tomcat实例。无论是tomcat7、tomcat8一起跑,还是多个tomcat8一起跑,都可以。

为什么会有这种需求?有些是因为不同的应用,需要对应不同的WEB容器,如以前做的程序,用JDK1.7,跑在tomcat7下;现在一般都JDK1.8,跑在tomcat8或以上。多个tomcat8的话,是不想应用之间互相影响,多个应用都挤在一个tomcat下,一损俱损。

一、同时跑多个tomcat实例

很简单,tomcat是免安装的,需要什么版本的tomcat,需要多少个tomcat,就复制粘贴多少个tomcat程序文件夹,然后再将​

​<tomcat>/conf/server.xml​

​​里的端口改改,避免冲突就可以了。

修改3个端口:

<Server port="8005" shutdown="SHUTDOWN">
...
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />      

即修改 8005、8080、8009这3个端口。比如,我放了2个tomcat8,那么第一个不改,就用默认的这3个;然后第二个tomcat的端口,统统改成9开头:

<Server port="9005" shutdown="SHUTDOWN">
...
    <Connector port="9080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...
    <Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />      

改了以后,就用 ​

​localhost:9080​

​ 进行访问。以此类推。

网上有文章发现了真理,说tomcat实际上分为CATALINA_BASE和CATALINA_HOME两部分,只需保留一个BASE,然后多多复制粘贴HOME。我想说的是,这样究竟节省了啥?除了节省硬盘空间外,应用之间互不影响这个初衷是否得到照顾?另外,如果真有这种机制,tomcat应该早就支持了吧,何必要我们另辟蹊径,大费周折搞这么多。所以我就没有深入下去看这些教程:

南山居:​​Tomcat多实例部署​​

​​Tomcat多实例部署​​

二、创建windows服务

本来直接运行​

​<tomcat>/bin/startup.bat​

​就好,但有两个不好处:要手动运行;不小心会被关掉。创建windows服务最实际。

怎么建?运行​

​<tomcat>/bin/service.bat​

可有两种方式:

1、不指定名称,系统创建默认的服务名称

service.bat install      

这样创建出来后,tomcat8的服务名称就类似:​

​Apache Tomcat 8.5 Tomcat8​

​ 这样。可用在单个或第一个tomcat8实例。

2、指定服务名称

service.bat install name tomcat8-2      

这样就可以创建第2个tomcat8实例的实例。否则会因为名称重复而失败。

同一台机安装多个tomcat