「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.


分享到:


相關文章: