易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 3822|回复: 2
收起左侧

自动部署脚本编写

[复制链接]
发表于 2017-9-20 21:50:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x

  M' |8 c, g% R+ p* ]+ W5 N4 g  自动部署shell脚本由4个方法组成: deploy_backup(版本备份)、deploy_unzip(自动解压新版本)、deploy_restart(重启tomcat)、deploy_Rollback(版本回滚),当然,每个方法可以独立执行,此处在开始运行脚本时给出了2个选择,0:版本回滚,其他任意输入会自动部署新的版本包并重启tomcat。shell脚本代码如下:
. J- `0 O* n* U( e* m  ^3 t* D0 |& c8 u3 E
#!/bin/bash" f5 o6 i1 k/ M: R
deploy installation script By clinva 2015.08.28" Q* W3 G5 t8 i5 K* Z
7 G( b9 C) h8 Q8 J

9 }- E1 O+ \6 O" y9 O9 N9 B#版本部署路径5 f+ W; F3 v* u! y0 T) k8 j
mainpath=/home/emalls1/qdone/pcv2
0 n$ L& Z- V! z- Y6 S
3 ?2 j) B+ z- X6 v  u' Z* J* V8 e( f* _, h- `$ \) l/ E
6 j0 w# i$ C, c" Z+ y
#备份版本包
7 w- ?  I) y5 d6 ]& Pdeploy_backup()
! M, F, F0 }, Z. ]{% t& o! V! E& Z
cd ${mainpath}/tomcat8/webapps/;
1 c0 B/ T5 [4 ?& C9 ?9 q* Ttar -zcvf epc_`date +%y%m%d%H%M%S`.tar.gz epc;: {+ g. ^) Z. M) j- W! B6 c. g. E
sleep 3& t" L; g& @, ]
ls;
* |: a, B4 H3 I3 J+ t1 s5 B5 Ymv *.tar.gz ${mainpath}/backup/;! B/ c. W4 t0 P* _
}/ ~7 h( q2 y5 @7 _# Z. p, W
/ ^) z8 G: V3 x- U

2 z4 t8 ^" Y* {# b" Y5 u#解压版本包
, y' e) K: s" ?deploy_unzip()
! n/ s7 s  @8 C{5 C0 W" z) t0 I: i
cd ${mainpath};: D7 y* U5 i8 q! i4 t3 u. ~/ x& o7 ~
ls;
  ~, r: p5 d$ s4 K0 P7 k- Tsleep 3;8 g# ?6 [- i0 S& f- R" a! ]( V
#unzip -l *.zip;
& H/ \" v) t, w) S9 \unzip -o -d ./tomcat8/webapps/epc pc.zip;. U4 ?) l9 P; i# q# ~
sleep 3;8 @% y* d4 x0 P7 B) Q3 K) B$ M
}
% ~( x6 I# c. [7 B; \. w  u4 |# [  n# v# g
#重启tomcat1 N# ~. y5 @! T/ @* W1 m) ~
deploy_restart()
/ d  O0 l  N5 @% k5 A{
+ S/ V2 T, |4 {& P. gcd ${mainpath}/tomcat8/bin;; w7 z4 I; S& g$ e8 I) l
pid1=`ps -ef|grep emalls1 |grep pcv2 |grep tomcat8 |grep qdone |awk '{print $2}'`
& z) p2 w: M+ ]1 o8 Q: Iecho $pid1
" ?$ k% u" G. j/ d1 u. Dif [ -z $pid1 ]; then* u$ {9 B/ Y- {- o' _+ V5 J
        echo "not exist"
! _* T; Z% x$ a) w9 L# I& ?7 X        ./startup.sh;
4 x& [4 y# n! B/ _1 p% g9 Z+ R2 `& z        tailf ./../logs/catalina.out  C5 r+ C% J3 l4 F) ^% ?
        exit 12 {4 N/ z7 |/ F, H; i- X
else
; L5 }9 C. O# I        echo "restarting tomcat1"/ J" |! V; x  v
        kill -9 $pid1; M4 @+ z6 s3 W9 m3 ?5 _
        sleep 5: Y  [# e) C- l# [
        ./startup.sh;& B5 ~, p7 c' I: y( l7 G
        tailf ./../logs/catalina.out. m  |& Y+ |0 a
fi
8 i2 l" b# W  Z5 R0 A) j5 S}: B& X1 P7 H5 n
" W/ d, r  z+ O  v
& k" H& q% X. C, |) s7 t+ B! D& s4 T
#版本回滚
. f8 `7 {) v2 B. u! b  d$ ]deploy_Rollback()
( x0 F6 @2 E& [3 c{% n& g+ a% k+ \
#进入备份文件夹
  ]: ~: Y" h4 G4 N. q+ u% q' L        cd ${mainpath}/backup/
1 \- I/ w; `; D% _/ Q8 ~        #获取最新备份文件% H# h% a# T$ `3 [+ v
        file_name_new=''
. T$ F7 h& l1 ], b        for i in `ls -tr`;; a$ x6 z2 K3 S
        do: H: G# w% @. I
                echo $i;
; E; @0 ?- Q2 t+ m& u% u$ |1 l$ P& D- Z                file_name_new=$i;" L* O) r( _% n4 l) Y$ f1 u
        done;5 B" c6 ^. C! Z7 y% n/ I! r% @
        #将备份文件复制到webapps% H  @- E6 T1 r2 q* }6 d6 P
        cp  ${mainpath}/backup/${file_name_new} ${mainpath}/tomcat8/webapps9 C( t1 j7 x$ u
        if [ $? -eq 0 ]9 V' l. T2 B( P. L* a, g0 h6 M
        then& z' V; M+ S, H/ g2 z/ I
                echo 复制${file_name_new}成功
( d; F( |. L0 C; z; K& w' ]        else
$ `, N5 Z; Q; b5 Z0 Y/ f                echo 复制失败,退出!, l9 L! M/ @9 q1 g. V' g
        exit 1
" K7 }, I4 R% |  x4 C        fi
' e7 }+ U& F9 R6 O: _1 C        #进入webapps/目录! O5 Q/ M' C' f# [6 n, {
        cd  ${mainpath}/tomcat8/webapps5 K& Q7 d# p. n* C
        #解压文件0 ?5 ~0 J4 V( Q" z! m$ A
        echo 正在解压,请稍后..., u* {; V; R4 n8 W( R! m
        tar -zxvf ${file_name_new}& w- y8 C: o0 \1 A
        #重启tomcat
5 ?5 Z- j2 q- Q, B        deploy_restart6 J& s2 }9 g5 V. o1 P
}
0 F; q+ b- l# ?: L: h# T% I; N1 V5 C5 }1 H; o  r0 g% H

; q0 `7 {1 ]- f) Secho --------欢迎使用shell自动部署脚本--------# D! [4 K7 a  E  \6 T& W
echo -e "请输入对应的操作编号:\n0.版本包回滚;\n其他键.一件部署;"
) _) V: o( x( H6 O8 F& D#获取用户操作
3 z/ [7 j3 _" P$ S- z% D( K1 oread wm2
5 Z: ?: x. h8 p; Kcase $wm2 in
+ F! C* B  S3 [& t; c0)
. ]1 i) ~6 Z8 V) ~- X) A        deploy_Rollback' l: L; ?1 J7 y2 W5 i1 o1 n0 O
        ;;( j% F2 x" g3 A4 e0 L/ \! y# h. ?
*): u' E$ @2 i7 m7 q' M2 n7 p
        deploy_backup- |, {8 d/ v7 t* a& I7 `3 R  c4 F
        deploy_unzip. b' _$ p; ?0 @  i2 Q- R" L% G
        deploy_restart( ^( ]/ X& Y* p" u9 ]- }4 ]( j
        ;;
! O" U* d) g; K! j0 lesac0 f6 p; g  `0 s3 ~/ O  H' N6 d

* t! }" L9 p1 V. ?8 [, F
2 N# i6 a$ z- |* X6 d. K
 楼主| 发表于 2017-9-20 21:52:14 | 显示全部楼层
每次部署版本的时候就感觉浪费时间也没有工作效率,每次都是人工手动部署,而且还可能存在认为失误导致部署失败的风险,且每个人的部署习惯都不一致,有的人没有备份版本包的习惯,如果部署的新版本有问题又没有之前版本的备份,在线下测试环境可能会浪费大家的时间,如果是在线上出现这种情况,那就是事故,会招来客户投诉,所以为了提高工作效率,形成规范,特意抽了点时间写了一个自动部署版本包的脚本。
 楼主| 发表于 2017-9-21 13:41:55 | 显示全部楼层
#! /bin/sh
+ A* `1 b! }% n% O5 E( \, H7 |- Decho '####################开始自动部署####################'  ]' ~, s# U& g7 o! F. w
path=`pwd` #当前路径
6 R+ J. ^( Y- u& ftomcatPath=tomcat-7 #指定tomcat文件目录名称+ P0 h  e$ f  D' [' a0 Z
cd ../$tomcatPath/bin #进入tomcat的bin目录
* f. Z# t+ x7 ]4 \2 ?, {$ T+ nPID=$(ps -fu `whoami`|grep tomcat|grep -v grep|awk '{print $2}')& }  s0 R5 o/ S; `5 @: t- N( E- Y& F
if [ -z "$PID" ];then7 P; `3 }1 D+ D5 B4 ?
echo "no tomcat process"
) k- W/ K: D$ `else
6 E4 ?4 w/ P, l0 [0 e$ C./shutdown.sh #停止tomcat服务
" i; w1 h! ~0 I5 }) ?fi& ?1 R' Z+ n' G/ X$ t: ~
sleep 1 #休眠1s
& f% J4 g; B# R- a  xcd ../webapps #进入tomcat的webapps目录+ J) Z  @% _5 D
rm -fr test #删除test文件目录! u8 ?% O: H9 O" b6 B- q
mv test.war test.war.$(date +%Y%m%d) #备份webapps下的test16 cp $path/test.war ./ #复制test.war到webapps路径下
0 F; J& e. C# H5 i  g7 v0 X$ J3 ksleep 1 #休眠1s% h" z2 ?$ X% J" @) q  F8 H
cd ../bin
+ x1 q& S9 j" F0 H./startup.sh #启动tomcat服务7 U/ }% e2 U8 Z$ r
echo '####################部署结束####################'
8 i3 |2 a) T; [0 {5 n) y) k
: x* i) `$ ~3 ?2 `# t! v3 \& F" b- P9 [2 ?, C- m

% a5 N# Z5 ]. o0 `. L说明:1 ]! g8 {- I" v2 G
1.新建一个目录autoDeploy与tomcat目录放在同级目录下% M6 Q) W" g  k' Y& @
  (1)autoDeploy.sh放在autoDeploy目录下- t4 R* T7 ]7 ]' o8 J0 ^
  (2)需要部署的test.war放在autoDeploy目录下(test.war为需要部署的到tomcat上的war包): L: j0 j2 B! d, S' d
2.tomcatPath=tomcat-7(指定tomcat文件目录名称,tomcat-7改为自己tomcat的目录名称)& U0 w9 G* V) k4 H
3.执行autoDepoy.sh即可实现自动部署9 G0 z/ H* ]. \  j
  新建的autoDepoy.sh若没有执行权限,需要执行:chmod +x autoDeploy.sh# `3 O: M9 @5 k
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 23:57 , Processed in 0.048747 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表