找回密码
 注册
查看: 3823|回复: 2

自动部署脚本编写

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-9-20 21:50:37 | 显示全部楼层 |阅读模式

  I7 ?* p4 ?. {2 ~0 V+ m/ o  自动部署shell脚本由4个方法组成: deploy_backup(版本备份)、deploy_unzip(自动解压新版本)、deploy_restart(重启tomcat)、deploy_Rollback(版本回滚),当然,每个方法可以独立执行,此处在开始运行脚本时给出了2个选择,0:版本回滚,其他任意输入会自动部署新的版本包并重启tomcat。shell脚本代码如下:
; P& v! k/ [, z' o, H; H5 l0 S3 D) M. E: ?: i
#!/bin/bash4 L! Q' k! ]8 t- J1 y4 t# J  f% r
deploy installation script By clinva 2015.08.28
3 `* z3 g$ @: |2 W' @4 N, F5 R7 M( }" y- {; g
+ F: w$ v$ `2 H! W
#版本部署路径9 Z( L  L- H: q2 c
mainpath=/home/emalls1/qdone/pcv2
/ p+ s5 }" x! o" U0 K' X7 w
3 w) \1 d- W2 ]& h* f/ E3 k. l  \0 l% t, j- ]6 u# O- k7 B
0 M5 M. O0 D+ o; g5 F, P& _
#备份版本包" d& r+ N4 y- H; N" C
deploy_backup()* C; q' k$ ]: {6 p2 X3 o# X
{9 V# b' x# ?3 j# Y$ N$ T: ^
cd ${mainpath}/tomcat8/webapps/;
6 A; u% s! Q$ }tar -zcvf epc_`date +%y%m%d%H%M%S`.tar.gz epc;: y+ O' R- f& O2 s- t
sleep 3
5 j" y9 t9 F  b4 Sls;
1 O: z  `* o. C5 t5 qmv *.tar.gz ${mainpath}/backup/;* K5 I$ ^# M" ^( G2 Z* F
}
( G; Q8 G+ G- l  t6 p# ^8 }3 e- B. `! p. u

/ [6 p# y2 P0 n- y, T#解压版本包5 `! Z& Q- x7 U. `
deploy_unzip()6 B3 n" B$ c# P0 C7 k5 g
{
5 ]9 o5 M4 R' Z% R. t. Kcd ${mainpath};3 e9 C) f- s8 R- O
ls;
5 Y  F8 G. K; R; L( z. Ksleep 3;5 j' @$ r/ l  v+ e: V
#unzip -l *.zip;+ `+ [5 @+ F" g; f* Z1 D- U
unzip -o -d ./tomcat8/webapps/epc pc.zip;
  S) R' E# E5 r, zsleep 3;2 e( M$ J1 L1 C# u
}
, ^9 i& |) O1 c, E- `
* o  K+ A) x. I) b4 B+ j5 F& Y#重启tomcat, y; q7 s# H# F2 `
deploy_restart()/ G% _- s! B3 v$ q5 }: @* f; y
{
3 [0 a" |" H4 _+ v1 A2 Acd ${mainpath}/tomcat8/bin;3 M% w$ t. U4 ]4 {* [
pid1=`ps -ef|grep emalls1 |grep pcv2 |grep tomcat8 |grep qdone |awk '{print $2}'`
0 N! R5 G" T+ J" lecho $pid1! Z! n! C8 C9 P2 m. ~
if [ -z $pid1 ]; then
: a/ K( V6 y" P. x        echo "not exist"& L4 C% \, d1 y& J( L* T
        ./startup.sh;! ?0 m7 I$ e. w. {  k+ F
        tailf ./../logs/catalina.out1 `  R) G, C0 p+ e5 v% F1 }: i' A
        exit 12 @1 E  D' m7 K, ~9 B
else
+ U6 \# c3 F: X        echo "restarting tomcat1"
/ b; B% M7 ]: `8 J7 |5 `: L        kill -9 $pid1
, i# b- `; T4 G" v& @        sleep 5
; S# s, Z# I3 H3 N; ]        ./startup.sh;
) Y, K, c' U8 Q7 `) C        tailf ./../logs/catalina.out
, P+ E- W2 R3 k2 `( ?fi
3 O9 @% E* Y  Q}
1 Q: y+ f2 z8 ^8 K+ B
( N1 h" |; A* `# u. w3 M, U' N& o" u& O1 P9 }+ c, F8 F5 S
#版本回滚5 N  f% _0 m$ }0 ?4 s
deploy_Rollback()6 \1 ^6 U4 L  O" k- b0 E
{
2 H' C$ C: b+ m# Q/ X, B0 z#进入备份文件夹
9 B) q2 q! s: s( N- E+ ~1 b        cd ${mainpath}/backup/
, s% p3 P% C1 V, o8 H* I: U# a        #获取最新备份文件
; E& h( o5 y$ s' V2 C+ G$ L0 w        file_name_new=''  x6 \. l6 \) X$ Z2 H2 f
        for i in `ls -tr`;7 K/ y6 ~$ `- s$ M! g, x# l" s
        do
) Z, `+ c" P' e% E3 @                echo $i;' u) T# c4 \/ ]2 G. N/ P2 K
                file_name_new=$i;
- h6 O* q7 b+ O4 p6 b: B0 B        done;- `+ Q( H) Q. q7 @
        #将备份文件复制到webapps
6 _$ f4 I8 m; g: f; f1 c; [        cp  ${mainpath}/backup/${file_name_new} ${mainpath}/tomcat8/webapps1 l$ D5 C: k/ g0 S
        if [ $? -eq 0 ]; {# D3 r1 V9 P9 r
        then
1 x: y# ~. T3 `/ H) V1 D. z, Y9 Y                echo 复制${file_name_new}成功' }. v+ m9 Q) Y
        else5 g' k7 g! y5 D7 J" c& T6 u
                echo 复制失败,退出!
0 `% ~, r8 j6 H        exit 1
3 v  T7 Y& e& m        fi
' f& v4 A6 B) l2 O3 J; N2 L        #进入webapps/目录* A# v6 f% p+ `0 _  l& i
        cd  ${mainpath}/tomcat8/webapps) J& x+ C0 Y$ @6 W" z  p  m
        #解压文件
, U  ]4 l5 O, q& w( f9 Z        echo 正在解压,请稍后...- R. x, w. ]* C' k2 |3 M2 t% B
        tar -zxvf ${file_name_new}) i* d9 Z2 L5 v1 l+ a8 \& @
        #重启tomcat
# o9 p& ^% I# a5 K/ _        deploy_restart5 e: }) U+ n/ V' C7 {
}
; ^6 l' O! }6 V/ R2 ]4 k) }- c, t$ n( t# H1 b3 N$ q/ `; {

! z# Q! f( a. n' ?echo --------欢迎使用shell自动部署脚本--------5 c' M  R* j( ~4 x" o- }
echo -e "请输入对应的操作编号:\n0.版本包回滚;\n其他键.一件部署;"
* A8 C" ^" |; Q. N  t* L; d#获取用户操作
" L& W% d. ^' G7 J0 Iread wm2# h2 Z7 T" u' S- n" h* A- H$ ?
case $wm2 in. u- J, y. E  A! x- M
0)
: Z2 X' n3 i! y+ e8 @1 S        deploy_Rollback
) |  M7 [) [7 Q: U: u% y$ n! W$ n7 ~, D        ;;8 p8 h& D0 F/ B& ]( U# m$ L2 R2 W
*)$ b. O5 z) L. T6 ]% R
        deploy_backup
1 u# m9 @& P' y' i( M& ^1 U! v        deploy_unzip: u& Z) \( l, n2 U6 U1 i% h9 [
        deploy_restart
3 M' q, \  X2 L1 P2 d" w$ f6 k0 ]! K        ;;
7 G  o! i  M3 b+ B7 Qesac
; `- @+ V9 b* d; s- a+ v) _$ W6 Q* J! h, U- Y/ W0 S
- B" U: o( F( I; M

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-9-20 21:52:14 | 显示全部楼层
每次部署版本的时候就感觉浪费时间也没有工作效率,每次都是人工手动部署,而且还可能存在认为失误导致部署失败的风险,且每个人的部署习惯都不一致,有的人没有备份版本包的习惯,如果部署的新版本有问题又没有之前版本的备份,在线下测试环境可能会浪费大家的时间,如果是在线上出现这种情况,那就是事故,会招来客户投诉,所以为了提高工作效率,形成规范,特意抽了点时间写了一个自动部署版本包的脚本。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-9-21 13:41:55 | 显示全部楼层
#! /bin/sh7 |2 u' @) ?2 K( K, g% w
echo '####################开始自动部署####################'
+ K' R' W8 x: Tpath=`pwd` #当前路径4 u+ O3 v; s) S" V! b
tomcatPath=tomcat-7 #指定tomcat文件目录名称1 J/ h7 T4 u( H+ x1 r' Y, V
cd ../$tomcatPath/bin #进入tomcat的bin目录1 H  z6 D1 |9 a( C0 x& f1 y$ \
PID=$(ps -fu `whoami`|grep tomcat|grep -v grep|awk '{print $2}')- [: v( i- Z+ D' v7 Y" O9 t
if [ -z "$PID" ];then
6 k) t- t) b  K+ j% {) i5 e echo "no tomcat process"
& U+ g  }8 ?% d: A# j- \  helse
7 _3 {" Q" X* G: k2 }5 O8 {' \' _./shutdown.sh #停止tomcat服务+ l% @# n4 `7 E/ u( J  t% e% e7 t
fi5 f# L' n; R& S9 e. o
sleep 1 #休眠1s& O* \; p$ z; l$ [7 @7 B
cd ../webapps #进入tomcat的webapps目录/ f* H0 b% ]* h% V/ T8 P; A9 @
rm -fr test #删除test文件目录) q) l$ k, r7 z0 P- ]
mv test.war test.war.$(date +%Y%m%d) #备份webapps下的test16 cp $path/test.war ./ #复制test.war到webapps路径下* f) @2 P% K8 ~
sleep 1 #休眠1s+ E! T+ N5 X' n: a, U6 q
cd ../bin9 H3 o( A6 f' @
./startup.sh #启动tomcat服务2 x; N0 T6 H4 O
echo '####################部署结束####################'
5 ~9 R0 s! x$ g5 P+ O4 V3 h4 O- {- ~4 \/ z1 S1 t$ L# j

. b$ q( P; B) b9 |8 _! b
  e' k+ x! x6 n7 \* W1 s# r5 [说明:' y( [& x. P6 y* K$ `: y
1.新建一个目录autoDeploy与tomcat目录放在同级目录下( z4 }7 `0 v  b" _; g
  (1)autoDeploy.sh放在autoDeploy目录下3 q9 D- x& C6 T+ A$ j
  (2)需要部署的test.war放在autoDeploy目录下(test.war为需要部署的到tomcat上的war包)
2 ]* C) ]; J- ^1 _3 [$ }2.tomcatPath=tomcat-7(指定tomcat文件目录名称,tomcat-7改为自己tomcat的目录名称)
0 m0 o2 K. M3 `1 {- W3.执行autoDepoy.sh即可实现自动部署
) x& `( x( I9 y' c) W  新建的autoDepoy.sh若没有执行权限,需要执行:chmod +x autoDeploy.sh0 D- m6 l- `" G+ Z8 R( h
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:54 , Processed in 0.025445 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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