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

自动部署脚本编写

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

! M( c- n$ u* p0 W% x  自动部署shell脚本由4个方法组成: deploy_backup(版本备份)、deploy_unzip(自动解压新版本)、deploy_restart(重启tomcat)、deploy_Rollback(版本回滚),当然,每个方法可以独立执行,此处在开始运行脚本时给出了2个选择,0:版本回滚,其他任意输入会自动部署新的版本包并重启tomcat。shell脚本代码如下:
7 x! u$ u! @# X7 x( G; ?9 M7 w
4 J! X8 s3 Y, \#!/bin/bash
3 `& t/ o7 k& Y# I  bdeploy installation script By clinva 2015.08.28
. e& L1 C" n) v
- t$ ~. f4 v" I. ~
$ g7 u7 x4 q, l, u! z! s. f#版本部署路径; ~* L* F: H$ t4 k  T
mainpath=/home/emalls1/qdone/pcv2. v! m$ Y3 ~. r$ m; y

, W6 }/ b7 l* f4 K0 G* ~( @
* }$ @# r# \/ y! B( m' A% ^$ O
#备份版本包0 ~; a. R0 e, G! U5 \5 [9 [
deploy_backup(): q: g2 M9 T! h/ w: e+ H
{8 M; h# y; n' h( W- l# `
cd ${mainpath}/tomcat8/webapps/;! H) E. c0 F% }& R1 j# @
tar -zcvf epc_`date +%y%m%d%H%M%S`.tar.gz epc;
! W& o2 r( @4 J1 J) r0 v7 ssleep 34 s+ c. h- G$ |- Z5 h# k% i; j/ J
ls;- o1 |5 G/ c4 ?) |
mv *.tar.gz ${mainpath}/backup/;
" U" X( R3 @; z& b% c2 b}' g+ ~: G! {+ J
& r' R+ r4 U) N. A

& b9 X- h1 q$ X' ]- _5 [, z#解压版本包
( h6 E8 {7 u( X! Tdeploy_unzip()
& K! H4 S( d- R, U{2 j8 d! F* {' A1 |& N
cd ${mainpath};8 K4 B) S( I- C6 \0 k2 \: a8 g: h
ls;1 m$ x- L9 o8 }* l& Q1 |2 K5 P7 @
sleep 3;4 ?$ G" }/ S! P) f7 ]* @
#unzip -l *.zip;' V  Y, Z' D2 ^" u6 j; S0 o
unzip -o -d ./tomcat8/webapps/epc pc.zip;5 n0 O5 u. e, s  u+ }
sleep 3;: q* h' ^  [5 w6 O
}  g$ J6 H( V3 L" d* ~
2 D) q% {' g! S! u
#重启tomcat3 h& T" m2 ~2 h
deploy_restart()9 Y1 }4 Y2 D& `& p) w
{3 Q& Q* h8 f2 Z4 ~- j: U0 v
cd ${mainpath}/tomcat8/bin;! b+ g: W" n% T) Y
pid1=`ps -ef|grep emalls1 |grep pcv2 |grep tomcat8 |grep qdone |awk '{print $2}'`
& ]2 o& K, D8 h" J* s2 O; lecho $pid1
, ~6 X- ]5 r: N& S4 M. ?if [ -z $pid1 ]; then
! S* B$ {. D, z( s, K        echo "not exist"0 s$ F; w- t6 h; U
        ./startup.sh;
1 F" e5 N) [# S4 h0 h        tailf ./../logs/catalina.out
+ o: Y6 |1 P8 V, o        exit 1
, M8 U! t( @, }& |0 velse
2 K, c( _( F5 r5 k/ c8 k        echo "restarting tomcat1"1 Y; L7 t  n% }+ \5 g
        kill -9 $pid1
. |5 R; h+ a' J, B        sleep 5
' K/ a, |; q' W/ l! y* M        ./startup.sh;4 T, N, G( r7 S5 b
        tailf ./../logs/catalina.out
* D) T2 d# S$ Z1 y, s9 S8 `fi  B6 t; t; S6 w5 w& I
}8 W0 f, |3 J3 x. O0 X4 a
1 u6 _, w6 I+ u) c( z4 p

3 m$ P* `- R+ ~6 t9 K, \6 `! n#版本回滚- A+ a, v7 p% X3 z9 j. z
deploy_Rollback(); t( G, a. v& `" j! E0 F
{
) p& j/ ]% Y9 |! P5 k6 {% v#进入备份文件夹
- ^4 N1 e$ Q# w: F3 e3 Q        cd ${mainpath}/backup/
. h4 g$ l* t, A' J; G' ]        #获取最新备份文件; Q$ L: F- V# W" K# z# D
        file_name_new=''9 W% ?; d  I5 P
        for i in `ls -tr`;4 T2 `( o, R, y# |6 I
        do' e' @& L( \" q1 s; P0 ]$ _; A
                echo $i;# [$ n. m3 D7 r  O: h' V# o$ \# p' S
                file_name_new=$i;
0 V( @8 L* k& C3 W! f$ q) c. _* n        done;* O# j; G3 B: z7 W! h4 k
        #将备份文件复制到webapps
# o. u7 F( d- F: {# `9 h7 L5 S        cp  ${mainpath}/backup/${file_name_new} ${mainpath}/tomcat8/webapps, x0 u4 a! x/ _9 W
        if [ $? -eq 0 ]
  X8 ?8 e: D# U9 e. s; l        then# T$ k( t7 l# U& o  I# W4 t& |4 o
                echo 复制${file_name_new}成功+ ^/ q* V; A: p3 L' z+ W( J; @9 i
        else
0 @2 K) ~6 Q0 A- F! f3 j, ^                echo 复制失败,退出!
6 {/ H: Y: M8 |" R1 T# s        exit 15 }# t6 j: W5 J" ~
        fi/ s- W+ [: P; x
        #进入webapps/目录
4 ]0 ]$ t+ j: h8 |& N# P        cd  ${mainpath}/tomcat8/webapps
8 w3 f- H) G8 H5 q        #解压文件
+ E- d. ~8 X: j0 y        echo 正在解压,请稍后...
( b+ |* \" m9 |$ d4 I7 B        tar -zxvf ${file_name_new}5 g6 Z; y4 ~1 ]: T
        #重启tomcat4 t, Q$ f# c$ l, {& k, q, O  p
        deploy_restart
" H4 i3 H- k3 v# X& M/ e, P}1 [2 b! m) P  }! r) @8 P9 S% T
/ m( D5 j8 u+ e' \8 m- ^

5 h; H4 f2 U0 u" W3 Aecho --------欢迎使用shell自动部署脚本--------+ e9 j! o$ ?- s
echo -e "请输入对应的操作编号:\n0.版本包回滚;\n其他键.一件部署;"2 P7 k/ e2 [+ ~$ x# V) t5 A
#获取用户操作* B9 x$ C% \* ]+ W
read wm2
1 [# ?. z% f& dcase $wm2 in' h% a! ?4 r( s
0)) L/ b4 Z" a1 ~, b0 g* ]( J+ D
        deploy_Rollback
! a; R5 e+ X3 q* V        ;;
" |7 H! }3 x8 u& ^6 E*)5 E/ y+ [4 `3 L; }& A) _
        deploy_backup
- l5 B* d, @: M        deploy_unzip
0 I% j" G% q; F        deploy_restart& W# \  f. A4 h: f: t* K" d; h
        ;;
8 z7 \/ [/ k) E  tesac
9 \" V: w- i3 _0 _1 S
7 Y# k) l1 {' M: T% F# w# t$ R4 ]# T( U' y2 l6 O! L9 I

1

主题

0

回帖

12

积分

管理员

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

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-9-21 13:41:55 | 显示全部楼层
#! /bin/sh4 e+ T! T( K9 N7 f# y
echo '####################开始自动部署####################'; A# d0 v3 p. C9 q
path=`pwd` #当前路径* x# }& a" b# b; w5 C8 ?
tomcatPath=tomcat-7 #指定tomcat文件目录名称
7 K! x' T8 U6 u9 l' ?cd ../$tomcatPath/bin #进入tomcat的bin目录
" j7 A9 c* q( I- o- {PID=$(ps -fu `whoami`|grep tomcat|grep -v grep|awk '{print $2}')# a. Y8 b( N! A1 R
if [ -z "$PID" ];then5 }( a$ v* ?9 E% e2 B3 I% M! t
echo "no tomcat process"
6 [8 ]( G8 h2 Z/ lelse7 ?# l- T  T$ Z: a2 ^+ l
./shutdown.sh #停止tomcat服务* P3 [2 n0 ~# w" }& E$ ]
fi( S. S" M( z- j/ t7 A3 ^
sleep 1 #休眠1s
% n9 k/ l% A5 o# b* wcd ../webapps #进入tomcat的webapps目录6 ?4 g  [( S7 ^. V* W* k
rm -fr test #删除test文件目录
& Y0 R' t5 a% rmv test.war test.war.$(date +%Y%m%d) #备份webapps下的test16 cp $path/test.war ./ #复制test.war到webapps路径下4 l6 Z4 W) J# r! K) [- x
sleep 1 #休眠1s8 B* |7 y. z0 ]
cd ../bin+ |# @: i1 g2 z2 h% d( c7 i
./startup.sh #启动tomcat服务
7 w. f# z( k: ?" i8 N$ R' Necho '####################部署结束####################'
& ~# Z5 L7 o4 U" P3 [1 @* A& r# P$ T, P! n! s

  k/ b  C+ b; x' g2 l4 W+ E4 K# u7 _+ z/ k8 j/ u4 y
说明:" a6 P) X: v+ P: @# s; W
1.新建一个目录autoDeploy与tomcat目录放在同级目录下# W) K- v" U) L6 i) [7 }
  (1)autoDeploy.sh放在autoDeploy目录下
1 z# ?0 T& E% u* ]5 |9 i8 C  (2)需要部署的test.war放在autoDeploy目录下(test.war为需要部署的到tomcat上的war包)2 M' F  m1 c* e- l- |, x
2.tomcatPath=tomcat-7(指定tomcat文件目录名称,tomcat-7改为自己tomcat的目录名称)
: {2 s6 _  v5 ?9 @3.执行autoDepoy.sh即可实现自动部署' @4 L! [2 O" y
  新建的autoDepoy.sh若没有执行权限,需要执行:chmod +x autoDeploy.sh
& E% T2 B" G- e4 U' V8 c6 E  s以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 04:07 , Processed in 0.029059 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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