Introduction
那么直接上问题,当你有很多应用要部署在同一个服务器上,你会用什么方式部署Tomcat?
通常,我们在同一台服务器上对 Tomcat 部署需求可以分为以下几种:单实例单应用,单实例多应用,多实例单应用,多实例多应用。实例的概念可以理解为上面说的一个 Tomcat 目录。
-
单实例单应用:比较常用的一种方式,只需要把你打好的 war 包丢在 webapps目录下,执行启动 Tomcat 的脚本就行了。
-
单实例多应用:有两个不同的 Web 项目 war 包,还是只需要丢在webapps目录下,执行启动 Tomcat 的脚本,访问不同项目加上不同的虚拟目录。这种方式要慎用在生产环境,因为重启或挂掉 Tomcat 后会影响另外一个应用的访问。
-
多实例单应用:多个 Tomcat 部署同一个项目,端口号不同,可以利用 Nginx 这么做负载均衡,当然意义不大。
-
多实例多应用:多个 Tomcat 部署多个不同的项目。这种模式在服务器资源有限,或者对服务器要求并不是很高的情况下,可以实现多个不同项目部署在同一台服务器上的需求,来实现资源使用的最大化。-
这次其实要说的就是这种方式,但多个 Tomcat 就是简单的复制出一个新的 Tomcat 目录后改一下端口么?这样做也太 Low 了点吧?哈哈,其实并不是低端没技术含量的问题,当你同一台服务器部署了多个不同基于 Tomcat 的 Web 服务时,会迎来下面几个极其现实的问题。 -
当你需要对数十台 Tomcat 版本进行升级的时候,你需要怎么做?
-
当你需要针对每一个不同的 Web 服务分配不用的内存时,你需要怎么做?
-
当你需要启动多台服务器时,你需要怎么做?
当然,好像上面的都不是很重要,注意,划重点,多实例部署最大作用就是最大化利用服务器资源。
Let's do it
- 下载tomcat
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
- 解压
tar -xf apache-tomcat-8.5.35.tar.gz
- 创建实例
- 新建实例目录作为CATALINA_BASE
mkdir tomcat-1 tomcat-2
- apache-tomcat-8.5.35目录下的bin conf logs temp webapps work 属于实例的目录移动过去
mv bin conf logs temp webapps work -t ../tomcat-1
cp tomcat-1/* tomcat-2
- 修改端口
Server Port
Connector Port
AJP Port
Redirect Port 这个不用改 - 启动脚本
实例目录下创建bin目录放start.sh
start.sh:
#!/bin/bash
export CATALINA_HOME="/usr/local/tomcat/apache-tomcat-8.5.35"
export CATALINA_BASE="/usr/local/tomcat/tomcat-1"
export CATALINA_TMPDIR="$CATALINA_BASE/temp"
export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"
export JAVA_OPTS="-server -Xms1024m -Xmx1024m -Djava.awt.headless=true -Dtomcat.name=tomcat1"
#创建logs目录
if [ ! -d "$CATALINA_BASE/logs" ]; then
mkdir $CATALINA_BASE/logs
fi
#创建temp目录
if [ ! -d "$CATALINA_BASE/temp" ]; then
mkdir $CATALINA_BASE/temp
fi
# 调用tomcat启动脚本
bash $CATALINA_HOME/bin/startup.sh "$@"
- 效果
两个实例中的webapps目录下的ROOT目录分别加入index.html
<html>
<title>Tomcat-1</title>
<body>
Hello DUDE! This is Tomcat-1.
</body>
</html>
分别启动两个实例中的start.sh脚本


网友评论