一键式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

三、效果展示

在这里插入图片描述
在这里插入图片描述

发布了89 篇原创文章 · 获赞 196 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_40791253/article/details/104666377