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

三、效果展示

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章