一、Tomcat应用场景:
单实例单应用:比较常用的一种方式,只需要把你打好的 war 包丢在 webapps目录下,执行启动 Tomcat 的脚本就行了。
单实例多应用:有两个不同的 Web 项目 war 包,还是只需要丢在webapps目录下,执行启动 Tomcat 的脚本,访问不同项目加上不同的虚拟目录。(切勿在生产环境使用,因为重启或挂掉 Tomcat 后会影响另外一个应用的访问)
多实例单应用:多个 Tomcat 部署同一个项目,端口号不同,可以利用 Nginx 这么做负载均衡,当然意义不大。
多实例多应用:多个 Tomcat 部署多个不同的项目。这种模式在服务器资源有限,或者对服务器要求并不是很高的情况下,可以实现多个不同项目部署在同一台服务器上的需求,来实现资源使用的最大化。-
二、部署Tomcat(以多实例多应用为例):
注意:官方文档建议将tomcat目录下的conf、webapps、temp、logs和work这五个目录剪切至对应的实例文件存放目录里面去
1、安装jdk,并配置java环境
1.1、访问http://www.oracle.com/technetwork/java/javase/downloads/index.html,下载对应的jdk
1.2、将下载好的jdk-8u171-linux-x64.tar.gz文件,上传至/tmp/目录下
1.3、安装jdk
cd /tmp/
tar -zxf jdk-8u171-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.8.0_171/ /usr/local/jdk
1.4、配置java环境,创建/etc/profile.d/java.sh文件,并写入如下内容(注意:使用source /etc/profile.d/java.sh 让其立即生效)
export JAVA_HOME=/usr/local/jdk/
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
2.安装Tomcat
2.1、访问https://tomcat.apache.org/download-80.cgi,下载Tomcat。
2.2、将下载的apache-tomcat-8.5.30.tar.gz,上传至/tmp/目录下
2.3、安装Tomcat(多实例安装)
tar -zxf /tmp/apache-tomcat-8.5.30.tar.gz -C /usr/local/
ln -s /usr/local/apache-tomcat-8.5.30/ /usr/local/tomcat
cd /usr/local/tomcat/
mkdir -pv /usr/local/tomcat{1,2}
mv conf/ logs/ temp/ webapps/ work/ /usr/local/tomcat1/
cp -a /usr/local/tomcat1/* /usr/local/tomcat2/
3、配置Tomcat启动、停止脚本
3.1、创建tomcat_sh目录,并在该目录下面分别新建start_tomcat.sh和stop_tomcat.sh(注意:记得给该脚本文件添加可执行权限)
mkdir -pv /usr/local/tomcat_sh
touch /usr/local/tomcat_sh/{start,stop}_tomcat.sh
3.2、tomcat-start.sh文件内容如下:
#!/bin/bash
source /etc/profile
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=${1%/}
export log=$CATALINA_BASE/startup.log
# use %/ is for next grep match
echo $CATALINA_BASE
Tomcat_PID=$(ps aux | grep "java" | grep -v "grep" | grep "Dcatalina.base=${CATALINA_BASE}" |awk '{print $2}')
if [ -n "$Tomcat_PID" ];then
echo "The tomcat instance $CATALINA_BASE is running,please checkout the status";
exit 1;
fi
/usr/bin/sh $CATALINA_HOME/bin/startup.sh > $log 2>&1
if [ "$?" = 0 ];then
echo "The tomcat instance $CATALINA_BASE start succeed!!!";
else
echo "The tomcat instance $CATALINA_BASE start faild!!!"
tail -f $log
fi
3.3、stop_tomcat.sh文件内容如下:
#!/bin/bash
source /etc/profile
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=${1%/}
export log=$CATALINA_BASE/stop.log
# use %/ is for next grep match
echo $CATALINA_BASE
Tomcat_PID=$(ps aux | grep "java" | grep -v "grep" | grep "Dcatalina.base=${CATALINA_BASE}" |awk '{print $2}')
if [ -n "$Tomcat_PID" ];then
/usr/bin/sh $CATALINA_HOME/bin/shutdown.sh > $log 2>&1
else
echo "The tomcat instance $CATALINA_BASE is not running,please checkout the status"
exit 1;
fi
if [ "$?" = 0 ];then
echo "The tomcat instance $CATALINA_BASE stop succeed!!!";
else
echo "The tomcat instance $CATALINA_BASE stop faild!!!"
tail -f $log
fi
4、配置server.xml端口(Tomcat1和Tomcat2中的Server Port、Connector Port、AJP Port三者的端口必须不同)
Server Port:该端口用于监听关闭tomcat的shutdown命令,默认为8005
Connector Port:该端口用于监听HTTP的请求,默认为8080
AJP Port:该端口用于监听AJP( Apache JServ Protocol )协议上的请求,通常用于整合Apache Server等其他HTTP服务器,默认为8009
Redirect Port:重定向端口,出现在Connector配置中,如果该Connector仅支持非SSL的普通http请求,那么该端口会把 https 的请求转发到这个Redirect Port指定的端口,默认为8443;
5、创建测试文件
vim /usr/local/tomcat1/webapps/ROOT/index.html
<html>
<title>Tomcat1</title>
<body>
Hello HBGSLZ! from Tomcat1.
</body>
</html>
vim /usr/local/tomcat2/webapps/ROOT/index.html
<html>
<title>Tomcat2</title>
<body>
Hello HBGSLZ! from Tomcat2.
</body>
</html>
PS:index.jsp案例:
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>JSP Test Page</title>
</head>
<body>
<% out.println("Hello, world. myapp02"); %>
</body>
</html>
6、启动和停止Tomcat1、Tomcat2启动:
/usr/local/tomcat_sh/start_tomcat.sh /usr/local/tomcat1/
/usr/local/tomcat_sh/start_tomcat.sh /usr/local/tomcat2/
停止:
/usr/local/tomcat_sh/stop_tomcat.sh /usr/local/tomcat1/
/usr/local/tomcat_sh/stop_tomcat.sh /usr/local/tomcat2/
注意:如果Tomcat实例太多,切记每重启一个Tomcat实例,必须Sleep2分钟左右,具体时间依据实际情况,否则很容易出现服务正常启动,但应用无法正常访问。
7、使用浏览器检查测试结果(注意使用http访问)
附:
1.如果需要让Tomcat实例监听在IPv4上,则需要在/usr/local/tomcat/bin/catalina.sh文件中,添加如下内容:
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"
修改前监听:
修改后监听: