|
|
1 g1 K9 z/ o0 r
自动部署shell脚本由4个方法组成: deploy_backup(版本备份)、deploy_unzip(自动解压新版本)、deploy_restart(重启tomcat)、deploy_Rollback(版本回滚),当然,每个方法可以独立执行,此处在开始运行脚本时给出了2个选择,0:版本回滚,其他任意输入会自动部署新的版本包并重启tomcat。shell脚本代码如下:
& S: {% L2 w" y0 N% S- a
$ `/ K: h9 g0 R" G#!/bin/bash
' l- H7 ?3 y! S; X' edeploy installation script By clinva 2015.08.28. w; ^# L! M8 N1 Y
`3 b$ u4 s( S" D v* D
9 Y' c* S. J2 h3 D#版本部署路径
4 Y1 i. }$ ]$ ~, l qmainpath=/home/emalls1/qdone/pcv20 F: B0 d4 H6 }) ^& F' u* y
% Z1 G( F. ?: J, p3 R" {" a8 Z3 T1 m* T% y: p
1 I8 s. d6 Q! m#备份版本包9 `9 g/ v- v0 i- h
deploy_backup()4 f! L* B7 o1 u
{
3 x5 s8 U7 k% {) Y9 G/ [, {/ Hcd ${mainpath}/tomcat8/webapps/;6 p2 U9 J* Z9 b5 h c
tar -zcvf epc_`date +%y%m%d%H%M%S`.tar.gz epc;
5 i: u6 |- j+ H+ K& o% t$ a: fsleep 3
) W) S& @( m2 {* A+ I; Jls;5 X- F- G; r# P/ {( Q
mv *.tar.gz ${mainpath}/backup/;
; [3 X @' q$ h: ]* E}9 ^; @6 x" _% q ~$ F$ Q
* W- ` C, R; M
N+ ? h! L0 h" K# B, M
#解压版本包; i1 }# D1 |3 ]/ g
deploy_unzip()
" e7 U" k) E5 Y! A+ X{
& J# [( J+ |2 U: F1 C! [ U, pcd ${mainpath};
; W7 h J) u0 c$ `$ Z; }ls;' V6 M+ g% ~, ^7 w& U% y
sleep 3;0 z" T+ c( d8 @( K( ?
#unzip -l *.zip;
% ^( O F- e9 U" g9 o' ounzip -o -d ./tomcat8/webapps/epc pc.zip;
3 T9 O$ d# q0 ~4 o+ O1 j& Msleep 3;' j- r2 x; F* p2 j; ` Q
}" d; [, t& k9 x8 M" ~7 q1 }
, X, ]( I9 ~: O0 t$ r
#重启tomcat
! f0 T6 Y' u! u7 V4 C8 g" u9 Hdeploy_restart()
8 h! {8 p5 m4 n" m- `& B/ y{8 r1 A: z8 V$ q
cd ${mainpath}/tomcat8/bin;
; W# V$ g: D: b$ Q# r$ cpid1=`ps -ef|grep emalls1 |grep pcv2 |grep tomcat8 |grep qdone |awk '{print $2}'`' X" p1 n- Q, l) \ ?3 |
echo $pid1
( V5 {% k3 M# ^$ T2 g9 c) k4 u9 Sif [ -z $pid1 ]; then
, r: g1 {3 {+ F% X; Z, w echo "not exist"
. ? D4 W s( k( j) u ./startup.sh;
; I. ~8 D: ]5 I, I9 k# }$ ] tailf ./../logs/catalina.out. o8 b; V$ J+ _# @- ~6 z
exit 1
8 b! r7 P0 i! z: G# h0 b$ H, @else
5 j& l9 ^* I8 v, |# T: k echo "restarting tomcat1"1 G: O- _* u S1 ]
kill -9 $pid18 e! t8 \/ U) N2 `
sleep 5
" B- e! a# G9 ]9 F8 Y; d2 P ./startup.sh;
" p* ]) V1 b" m8 k9 T tailf ./../logs/catalina.out9 [1 b( D$ F9 D8 L2 A7 c
fi
8 E. v! |8 ]0 z* j/ P}8 L3 d0 Z! H" s+ @5 k t
8 V+ Y) W1 V! d+ n, e; Y1 W& V. S' n: U+ o/ [6 F' {
#版本回滚
5 p/ F1 C ~* h' D& Y8 L+ `+ C, odeploy_Rollback()
' `! z, G \$ Y, \ {) _1 j! o, \{
w2 o" v6 [: {: U ?& n6 K0 m- b* B#进入备份文件夹. o) A1 R& {" {
cd ${mainpath}/backup/
% I. x1 `7 w# K #获取最新备份文件
" ]3 ^" W& n6 T% F" f8 v N file_name_new=''
5 F+ z9 n# U: }6 ~/ k* F, u& i0 B$ x" T for i in `ls -tr`;" s: Y. b3 w' q# B$ B1 B+ ^
do3 j' M( X) \! b( ^1 M
echo $i;9 H" \0 s9 U5 H
file_name_new=$i;
; e. h$ j) `7 J/ ~) x done;# l6 z% h; K0 F* S, o% E8 h
#将备份文件复制到webapps" l/ n, [1 o( K9 f+ o9 [
cp ${mainpath}/backup/${file_name_new} ${mainpath}/tomcat8/webapps( O1 k, F9 i! Y' J6 Y' Q1 ]
if [ $? -eq 0 ]
) l* x2 K: U6 z+ {) J/ z& F" v then
. Q6 v8 O2 K$ f- y9 G% X echo 复制${file_name_new}成功
B. s' ~% W: {' Z2 U: _ else
* K$ x6 U+ H4 k { echo 复制失败,退出!
; l2 }/ a: c' k exit 1" R7 _, b: {3 r2 \7 `$ }
fi
! j' N# F S5 j& K) E$ ?, z #进入webapps/目录# o5 |+ j& A) U+ j4 l$ e3 M
cd ${mainpath}/tomcat8/webapps/ C, ], z# E; ` W
#解压文件9 O' X+ o5 G0 Y6 F
echo 正在解压,请稍后..." q( D" t$ n0 s5 W; x
tar -zxvf ${file_name_new}4 g% Q7 e1 `% S3 B" \
#重启tomcat
3 V1 L3 T% D0 C2 R deploy_restart
0 _2 ^# _6 D; O0 E! |}
5 }0 }7 O Q- A$ M% B3 d
% f1 K1 }: Y3 T, m8 O7 q5 S
; \' Y( _$ i( S" B( r$ @% v: Wecho --------欢迎使用shell自动部署脚本--------+ b% F+ l9 J7 r) K# A( i6 y. D
echo -e "请输入对应的操作编号:\n0.版本包回滚;\n其他键.一件部署;"
3 S% C; i' D* [7 A#获取用户操作( c* w/ x, c) z/ h/ g$ g8 O
read wm2, l- G" M- |4 Q9 G8 }# }
case $wm2 in" S+ M! [# D3 l8 a
0)
8 u: L7 [+ L, x! I' `# I deploy_Rollback
9 x% X) Z7 E h7 z% s- T ;;
/ y _0 Z+ X/ S# A, u/ b*)
* w* E8 W0 i; y+ a8 |+ V/ [ deploy_backup2 J# i3 `* X2 U1 J* ]* ?
deploy_unzip
6 }0 M( h, A7 C0 f# z- L deploy_restart
8 G/ |; n8 {* a3 L' m ;;
( _! {" V* Y* H' L0 h$ ^% ]esac
5 U* V6 R5 _8 _" W
0 }3 E) q. y. K4 e' V3 k7 x: n* S
! t$ S2 B" \2 W7 B |
|