我们首先看到tomcat目录结构,其中每个文件夹都有以下用途:
- CATALINA_HOME
- CATALINA_BASE
- CATALINA_TMPDIR
- JRE_HOME / JAVA_HOME
- 类路径
运行Tomcat的通常方法是仅设置CATALINA_HOME环境变量并运行startup.sh脚本文件。 startup.sh文件会自动计算并分配我们尚未设置的其他变量的值。
startup.sh文件设置环境变量,然后调用catalina.sh 。 该文件读取CATALINA_BASE值,附加conf(即$ CATALINA_BASE / conf文件夹)并获取server.xml。 该文件是Tomcat配置的核心。 它包含所有配置信息,例如关闭端口,连接器发布,主机名,应用程序文件夹等。例如,Tomcat通常使用8080作为连接器端口,因此我们可以在http:// localhost:8080 /进行访问 。
创建一个名为“ tomcat-instance1 ”的文件夹,并从CATALINA_HOME文件夹复制conf,日志,temp,webapps,work文件夹,并更改tomcat-instance1中的 conf / server.xml文件。 我们需要更改以下端口:关机端口,连接器端口,ajp端口和重定向端口。
让我们看一下示例server.xml文件:
<server port="8005" shutdown="SHUTDOWN">
.....
<connector
connectiontimeout="20000"port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
redirectport="8443" />
<connector port="8009" protocol="AJP/1.3" redirectport="8443" />
</server>
因此,我们将这些端口更改为不同的数字,因为一旦绑定了端口,其他进程便无法再次绑定它。 在tomcat-instance1 / conf / server.xml文件中,我配置了服务器端口= 8105,连接器端口= 8181,ajp端口= 8109。
<server port="8105" shutdown="SHUTDOWN">
.....
<connector
connectiontimeout="20000" port="8181"
protocol="org.apache.coyote.http11.Http11NioProtocol"
redirectport="81443" />
<connector port="8109" protocol="AJP/1.3" redirectport="81443" />
</server>
现在,我们可以创建两个脚本文件来启动和关闭tomcat-instance1。
startup-instance1.sh
export CATALINA_BASE= /home/ramki/tomcat-instance1
cd $CATALINA_HOME/bin
./startup.sh
关闭实例1.sh
export CATALINA_BASE= /home/ramki/tomcat-instance1
cd $CATALINA_HOME/bin
./shutdown.sh
在这里,我们显式设置了 CATALINA_BASE变量并将其指向新的tomcat-instance1。 然后,我们转到CATALINA_HOME / bin文件夹,因为所有用于运行tomcat的二进制文件仍然存在。 然后,我们使用启动/关闭脚本。
基于上述技术,我们可以创建许多实例文件夹并更改conf / server.xml文件的端口值,并使用其自己新创建的脚本文件运行该实例。
参考: Ramkitech博客上的 JCG合作伙伴 Rama在单台计算机上运行多个Tomcat实例 (出于可读性原因,对原始文本进行了修改)。
翻译自: https://www.javacodegeeks.com/2011/08/multiple-tomcat-instances-on-single.html