1 #!/bin/bash
2 # date_time: 2022-03-02
3 # author: yxy
4
5 servies_name='snail-ad.war'
6 bak_time=`date "+%Y%m%d"`
7
8 stop(){
9 # 停止服务
10 /snail/tomcats/snail-ad-server-0{1..3}/bin/shutdown.sh
11 # 检测服务是否停止,如果未停止,则强制停止
12 for server in snail-ad-server-0{1..3}
13 do
14 sleep 5
15 pid=`ps -ef |grep ${server} |grep -v "grep"|awk '{print $2}' `
16 ps -ef |grep ${server} |grep -v "grep" > /dev/null
17 if [ $? == 0 ]
18 then
19 sleep 5
20 kill -9 $pid
21 else
22 echo "${server} 服务已停止"
23 fi
24 done
25 }
26
27
28 start(){
29 # 启动服务
30 /snail/tomcats/snail-ad-server-0{1..3}/bin/startup.sh
31 for server in snail-ad-server-0{1..3}
32 do
33 sleep 5
34 pid=`ps -ef |grep ${server} |grep -v "grep"|awk '{print $2}' `
35 ps -ef |grep ${server} |grep -v "grep" > /dev/null
36 if [[ $? == 0 ]]
37 then
38 echo "${server} 服务已启动"
39 else
40 sleep 5
41 echo "${server} 请确认服务是否启动"
42 fi
43 done
44 }
45
46
47 rollback(){
48 if [ ! -f /snail/appData/${servies_name}${bak_time} ]
49 then
50 # 没有文件备份
51 exit 0
52 fi
53
54 # 停止服务
55 stop
56
57 if [ -f "/snail/appData/${servies_name}" ]
58 then
59 rm -fr /snail/appData/${servies_name}
60 # 回退并启动服务
61 tar -xf /snail/appData/${servies_name}${bak_time} /snail/appData/
62 start
63 exit 0
64 fi
65 }
66
67
68
69 # 判断新部署项目包不存在,退出部署脚本
70 if [ ! -f "/home/ops/"${servies_name} ]
71 then
72 echo "/home/ops/${servies_name}文件不存在"
73 exit 0
74 fi
75
76 # 判断旧版本包是否存在
77 if [ ! -f "/snail/appData/"${servies_name} ]
78 then
79 echo "/snail/appData/${servies_name} 文件不存在"
80 exit 0
81 fi
82
83
84 # 备份原snail-ad.war
85 tar -zcvf /snail/appData/${servies_name}${bak_time} -C /snail/appData/ ${servies_name}
86 # 判断是否备份成功
87 if [ ! -f /snail/appData/${servies_name}${bak_time} ]
88 then
89 # 文件备份不成功,退出
90 echo "文件备份不成功退出脚本"
91 exit 0
92 fi
93
94
95 # 调用停止服务函数
96 stop
97 # 删除旧版本war包
98 rm -fr /snail/appData/${servies_name}
99 # 将部署包/home/ops/snail-ad.war包copy到数据目录下,执行启动函数
100 cp /home/ops/${servies_name} /snail/appData/
101 if [ ! -f "/snail/appData/${servies_name}" ]
102 then
103 # 判断如果没有copy成功,回退并启动服务
104 tar -xf /snail/appData/${servies_name}${bak_time} /snail/appData/
105 start
106 exit 0
107 fi
108
109 # 调用启动函数
110 start
111
112 # 防止下次部署包文件冲突
113 rm -fr /home/ops/${servies_name}