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
三、效果展示