「shell」Linux下快速部署tomcat程序

目標:

通過tomcat模板,快速部署新的tomcat程序到指定目錄,包括定義服務端口、創建啟動腳本。

待改進:

將網站數據直接放到tomcat一次性部署。

部署腳本目錄:

[root@OperationTest1 automaticDeployment]# tree .
.
├── deployment.sh
└── files
├── apache-tomcat-7.0.68.tar.gz
└── tomcatDefault
1 directory, 3 files

腳本 deployment.sh 內容:

#!/bin/bash
# deployment.sh
# Date: 2018/12/05

# 確認tomcat存放路徑
defaultPath="/opt/RUN"
read -p "`echo -e "\033[31m請輸入您tomcat存放的路徑:[$defaultPath] \033[0m"`" tomcatPath

# 如果路徑為默認,則將默認值賦予給tomcatPath
if [ -z "$tomcatPath" ];then
tomcatPath=$defaultPath
fi

# 給tomcat定義個名稱
read -p "`echo -e "\033[31m請給您tomcat定義個名稱: \033[0m"`" tomcatName


# 循環判斷目錄是否存在,目錄不存在則跳出循環,否則重新輸入並判斷
while true
do
if [ -d "$tomcatPath/$tomcatName" ];then
read -p "`echo -e "\033[31m您定義個名稱已存在,請重新輸入: \033[0m"`" tomcatName
continue
else
break
fi
done

# 定義新的服務端口
tomcatFile="$tomcatPath/$tomcatName/conf/server.xml"
defaultShutdownPort=8005
defaultHttpPort=8080
defaultAjpPort=8009
defaultRedirectPort=8443

read -p "`echo -e "\033[31m請輸入新的Shutdown Port:[$defaultShutdownPort] \033[0m"`" shutdownPort
read -p "`echo -e "\033[31m請輸入新的HTTP Port:[$defaultHttpPort] \033[0m"`" httpPort
read -p "`echo -e "\033[31m請輸入新的AJP Port:[$defaultAjpPort] \033[0m"`" ajpPort
read -p "`echo -e "\033[31m請輸入新的redirect Port:[$defaultRedirectPort] \033[0m"`" redirectPort

# 輸入為空則使用默認值
if [ -z "$shutdownPort" ];then
shutdownPort=$defaultShutdownPort
fi
if [ -z "$httpPort" ];then
httpPort=$defaultHttpPort
fi
if [ -z "$ajpPort" ];then
ajpPort=$defaultAjpPort
fi
if [ -z "$redirectPort" ];then
redirectPort=$defaultRedirectPort
fi

# 定義啟動腳本名稱
read -p "`echo -e "\033[31m請輸入新的啟動腳本名稱: \033[0m"`" runFile


while true
do
if [ -f "/etc/init.d/$runFile" ];then
read -p "`echo -e "\033[31m文件已存在,請重新輸入: \033[0m"`" runFile
continue
else
break
fi
done

# 判斷是否執行本次部署操作
# 定義程序啟動用戶
user=rtom
tomcat="files/apache-tomcat-7.0.68.tar.gz"
sh="files/tomcatDefault"

while true
do
read -p "`echo -e "\033[31m是否執行本次部署操作[YES|NO]: \033[0m"`" choose1

case $choose1 in
[yY][eE][sS]|[yY])
id $user &> /dev/null || useradd $user &> /dev/null
mkdir -p $tomcatPath/$tomcatName

# 解壓tomcat模板到指定路徑並命名
tar xf $tomcat -C $tomcatPath/$tomcatName --strip-components 1

# 更新服務端口
sed -i s/8005/$shutdownPort/g $tomcatFile
sed -i s/8080/$httpPort/g $tomcatFile
sed -i s/8009/$ajpPort/g $tomcatFile
sed -i s/8443/$redirectPort/g $tomcatFile

# 更新啟動腳本配置
cp $sh /etc/init.d/$runFile
sed -i s/tomcatDefault/$runFile/g /etc/init.d/$runFile
sed -i s@tomcatPath@$tomcatPath/$tomcatName@g /etc/init.d/$runFile

# 啟動腳本授權並設置開機啟動
chmod +x /etc/init.d/$runFile

chkconfig --add $runFile

echo "tomcat部署已完成!"
break
;;
[nN][oO]|[nN])
exit
;;
*)
;;
esac
done

# 判斷是否啟動服務
while true
do
read -p "`echo -e "\033[31m是否啟動服務[YES|NO]:NO \033[0m"`" choose2

if [ -z "$choose2" ];then
break
fi

case $choose2 in
[yY][eE][sS]|[yY])
/etc/init.d/$runFile start
break
;;
[nN][oO]|[nN])
break
;;
*)
;;
esac
done

# 打印出相關變量值
echo "################################"
echo -e "tomcat存放路徑: \033[32m$tomcatPath\033[0m"
echo -e "tomcat名稱: \033[32m$tomcatName\033[0m"
echo -e "tomcat啟動腳本: \033[32m/etc/init.d/$runFile\033[0m"
echo "################################"

啟動腳本模板內容:

#!/bin/bash
# chkconfig: 35 90 10
# description: tomcatDefault auto start-stop/># Date: 2018-12-05

prog=tomcatDefault
rundir="tomcatPath"
RETVAL=0
STOP_TIMEOUT=${STOP_TIMEOUT-10}

start() {
echo $"Starting $prog."
chown -R rtom $rundir
su - rtom $rundir/bin/startup.sh
return $RETVAL
}

stop() {
echo $"Stopping $prog."
$rundir/bin/shutdown.sh
sleep 3
if [ "$( ps aux | grep $rundir/bin/bootstrap.jar | grep -v grep)" ]; then
kill -9 $(ps aux | grep $rundir/bin/bootstrap.jar | grep -v grep | awk '{print $2}')
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $prog {start|stop|restart}"
exit 1
esac
exit $RETVAL

部署腳本執行效果:

「shell」Linux下快速部署tomcat程序

部署完成後驗證:

[root@OperationTest1 automaticDeployment]# ls /opt/test/
tomcat1

[root@OperationTest1 automaticDeployment]# chkconfig --list tomcat1
tomcat1 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:啟用 6:關閉

[root@OperationTest1 automaticDeployment]# /etc/init.d/tomcat1 start
Starting tomcat1.
Using CATALINA_BASE: /opt/test/tomcat1
Using CATALINA_HOME: /opt/test/tomcat1
Using CATALINA_TMPDIR: /opt/test/tomcat1/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/test/tomcat1/bin/bootstrap.jar:/opt/test/tomcat1/bin/tomcat-juli.jar
Tomcat started.


分享到:


相關文章: