Tomcat多实例批量化部署
一、Tomcat简介
1)Tomcat是一款开源的、免费的WEB服务器软件,属于Apache基金会旗下的,是基于JAVA语言开发的,主要是用于发布网站代码,提供网页信息服务,用户通过浏览器可以实现页面的访问。
2)Tomcat WEB软件默认可以处理静态网页,也可以处理动态网页,主要是用于处理JSP动态网页,JSP(JAVA Server Pages)是基于JAVA语言开发的动态网页程序,Tomcat自身不能作为负载均衡软件,是一款WEB容器,主要是发布代码的。
3)基于线上的CentOS7主机构建Tomcat WEB平台,需在服务器上部署JDK工具包(JDK是JAVA语言开发的核心组件,同时也是JAVA代码运行时的环境)。
通过shell脚本实现Tomcat多实例化批量部署,提升运维效率,代码需根据业务需求自行修改。
二、Shell代码实现
环境准备:
- Linux系统:Centos7
- 网卡:无要求(可自行下载好 Tomcat tar 包后上传自服务器)
- 建议:运行前关闭防火墙和Selinux,防止网站端口被防火墙关闭
此次脚本考虑到防火墙问题
在代码中28-50行添加了交互式关闭防火墙
可不必手动关闭
#!/bin/bash
############################
#2020-03-05 #
#auto config tomcat web #
#author zcoder #
############################
#JDK Variable
JDK_Ver="1.8.0_131"
JDK_Dir="/usr/java"
JDK_Soft="jdk${JDK_Ver}.tar.gz"
JDK_Src=$(echo $JDK_Soft|sed 's/.tar.gz//g')
#Tomcat Web Variable
Tomcat_Ver1="8.5.51"
Tomcat_Ver2="tomcat-$(echo $Tomcat_Ver1|awk -F"." '{print $1}')"
Tomcat_Vhost="$1"
Tomcat_Dir="/usr/local/${Tomcat_Ver2}_${Tomcat_Vhost}"
Tomcat_Soft="apache-tomcat-${Tomcat_Ver1}.tar.gz"
Tomcat_Src=$(echo $Tomcat_Soft|sed 's/.tar.gz//g')
#Judge user parameters
if [ $# -eq 0 ]; then
echo -e "\033[32m------------------------------\033[0m"
echo -e "\033[32mUsage:{/bin/bash $0 WebName}\033[0m"
echo -e "\033[32m------------------------------\033[0m"
exit 2
fi
#Stop firewalld/selinux(Interactive)
while :
do
read -p "Whether to turn off the firewall and selinux,input [yes/no]: " turn
case "$turn" in
Y|YES|Yes|y|yes|yES|YEs|yEs|YeS)
systemctl stop firewalld.service;systemctl disable firewalld.service
setenforce 0;sed -ri '/^SELINUX/c\SELINUX=disabled' /etc/selinux/config
echo -e '\033[32;40;1mTurn off the firewall and selinux successful!\033[0m'
break
;;
N|NO|No|n|no|nO)
echo -e '\033[32;40;1mNothing to do!\033[0m'
break
;;
"")
echo -e '\033[31;40;1mTyping error, please try again!\033[0m'
;;
*)
echo -e '\033[31;40;1mTyping error, please try again!\033[0m'
;;
esac
done
#Install commond package
Check_num1=$(rpm -qa net-tools wget |grep -wcE "net-tools|wget")
if [ $Check_num1 -lt 2 ]; then
yum install -y net-tools wget
fi
#Install Tomcat package if the current directory does not have Tomcat_Soft package
if [ ! -e $Tomcat_Soft ]; then
wget http://mirror.bit.edu.cn/apache/tomcat/$Tomcat_Ver2/v$Tomcat_Ver1/bin/$Tomcat_Soft
fi
#Install JDK
JAVA_Work=$JDK_Dir/$JDK_Src
$JAVA_HOME/bin/java -version
if [ $? -ne 0 ]; then
mkdir -p $JDK_Dir
tar -zxf $JDK_Soft -C $JDK_Dir
cat >> /etc/profile <<-EOF
export JAVA_HOME=$JAVA_Work
export CLASSPATH=\$CLASSPATH:\$JAVA_HOME/lib:\$JAVA_HOME/jre/lib
EOF
source /etc/profile
$JAVA_HOME/bin/java -version
fi
#Install multiple instantiation Tomcat Web
for Tomcat_Vhost in $(echo $Tomcat_Vhost)
do
#Find http port
Max_Port=$(for i in `find /usr/local/ -name server.xml`; do grep "port" $i| grep -v "\!"; done| sed 's/ /\n/g'| grep "port="| sed 's/"//g;s/port=//g'| grep -vE "8080|8443"| sort -n| tail -1)
if [ -z $Max_Port ]; then
mkdir -p $Tomcat_Dir
tar -zxf $Tomcat_Soft -C $Tomcat_Dir &> /dev/null
$Tomcat_Dir/$Tomcat_Src/bin/startup.sh
netstat -tnlp|grep -wE "8005|8080|8009"
else
#Setting shutdown port | http port | https port
Port1=$(expr $Max_Port - 2000 + 1)
Port2=$(expr $Max_Port - 1000 + 1)
Port3=$(expr $Max_Port + 1)
#Install Tomcat web
mkdir -p $Tomcat_Dir
tar -zxf $Tomcat_Soft -C $Tomcat_Dir &> /dev/null
#Replace shutdown port | http port | https port
sed -i "s/8005/${Port1}/g" $Tomcat_Dir/$Tomcat_Src/conf/server.xml
sed -i "s/8080/${Port2}/g" $Tomcat_Dir/$Tomcat_Src/conf/server.xml
sed -i "s/8009/${Port3}/g" $Tomcat_Dir/$Tomcat_Src/conf/server.xml
$Tomcat_Dir/$Tomcat_Src/bin/startup.sh
#Wait 10s and watch Tomcat server port
sleep 10s
netstat -tnlp|grep -wE "${Port1}|${Port2}|${Port3}"
fi
done
使用方法:
chmod +x 脚本
sh +vx 脚本 目录后缀
每个实例化出来的Tomcat Web页面端口为:
第一个:8080
第二个:7010
第三个:7011
依次在 7010 端口的基础上 +1
三、效果展示