易陆发现互联网技术论坛

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

自动部署脚本编写

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

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

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

x
  n1 S: m; d$ p5 [" p7 Y
  自动部署shell脚本由4个方法组成: deploy_backup(版本备份)、deploy_unzip(自动解压新版本)、deploy_restart(重启tomcat)、deploy_Rollback(版本回滚),当然,每个方法可以独立执行,此处在开始运行脚本时给出了2个选择,0:版本回滚,其他任意输入会自动部署新的版本包并重启tomcat。shell脚本代码如下:
  h7 V4 B' d2 ^. M+ }6 u1 q6 a: M+ S! k8 K( S6 F
#!/bin/bash$ a' i1 I, h) N1 m/ m% ?
deploy installation script By clinva 2015.08.28  E" |6 c) ^* t  E* g1 @
5 p/ i) T& h0 b, }6 A
  ]! |$ }# ^) I* e) q
#版本部署路径
* O1 `  ]# a+ b( r" o3 ?4 dmainpath=/home/emalls1/qdone/pcv2# W; B# q5 W' E6 z6 P

4 p3 q+ J7 R% T; \# O3 S% F5 P; P9 {% E: ]/ ^
5 N' L5 N- z" b3 h! ?
#备份版本包
4 t5 B7 P4 K6 Z4 _  ?; edeploy_backup()/ b- Z( P6 z8 F/ s/ I7 s
{) g4 F9 g# J. I" Y  Y% G
cd ${mainpath}/tomcat8/webapps/;; a4 @4 W1 m$ ~- k1 j" ?( p6 L
tar -zcvf epc_`date +%y%m%d%H%M%S`.tar.gz epc;/ p: Z( w1 e$ e, M/ Q* B: z% W
sleep 3
9 q( H2 G) J1 a4 U+ ~ls;
" j0 }! @9 A3 H5 R  n( I0 smv *.tar.gz ${mainpath}/backup/;
- S6 o/ _# D( F4 {, D}: m( q# R1 C5 h8 ]

. D- t$ f5 S) l: X" Y& h( Q& {% M
# ~8 g& o1 N% l3 M5 Y#解压版本包% Y, j/ b3 C2 u0 U% I9 V! @
deploy_unzip()4 m( Q3 \  G" l. t0 I
{
# z0 U( ?, Y7 icd ${mainpath};
( u% q0 @" I1 q" a# nls;( U0 o$ i2 C. B# A6 z% F2 [! m8 {
sleep 3;
! Y7 V- t- t4 r7 N. \#unzip -l *.zip;+ n: |- q; z; p, `
unzip -o -d ./tomcat8/webapps/epc pc.zip;
0 e" @, E3 y# x: K4 E1 J# vsleep 3;
3 J" b8 i! f+ o" b1 s}% e2 Q# v+ u7 m& J4 P

# |9 D' D# b! T#重启tomcat
+ d" ~/ y# H& `" G7 E' Udeploy_restart()# x+ z7 B! i5 o. v- x8 ]7 ~; D. a! W
{
& P/ m- {0 D) y& wcd ${mainpath}/tomcat8/bin;5 X  [5 Z5 g; B7 p' f. V6 E3 p
pid1=`ps -ef|grep emalls1 |grep pcv2 |grep tomcat8 |grep qdone |awk '{print $2}'`/ j: B4 C' F# q9 Q5 i, r4 I) Z
echo $pid15 q' r, f3 X2 x0 v. {+ x
if [ -z $pid1 ]; then7 Z2 R7 m; V* m2 u& z+ ^1 c
        echo "not exist"
1 c8 c2 F, M! H4 ?7 Q; |        ./startup.sh;
3 x" ]! a# g. T8 {+ s* B8 {' w7 u        tailf ./../logs/catalina.out
, ~: l. n) I' o3 P5 P        exit 1
5 J( {$ H: U8 uelse
2 O, K, c6 A+ E8 }4 W: U0 ~        echo "restarting tomcat1"
* P& y/ V7 k5 `6 \' J- R( L        kill -9 $pid1
) J6 ]0 `9 e2 W1 S+ j        sleep 5
- B/ j  X( V) H, v        ./startup.sh;
. _+ h8 u6 y6 |: _: i        tailf ./../logs/catalina.out
$ q. \: |0 P1 l: Q6 i  ufi
% e3 Z7 b2 g: j6 W}
0 q( i& j# Z! _; k! F5 ^1 d
' U: ~8 ]% E, b6 p) h4 o8 Q3 S5 e
#版本回滚
8 ~7 |1 U( Q0 mdeploy_Rollback(). P, K: R: J; K+ o; Y0 u
{/ ?& Q% M: q* P# U
#进入备份文件夹) N( `! r# U0 Y  i, }6 W; v
        cd ${mainpath}/backup/& e5 [& F, P1 ~+ k( ~3 o$ o
        #获取最新备份文件7 v. W" k( c, j. s: e
        file_name_new=''
. G9 Z* c/ e+ G2 _5 @" O5 s4 ~( i        for i in `ls -tr`;
8 Z$ }: j' u% K! t' f        do7 h& s; t0 V+ {
                echo $i;* C* T) a) F' [" a  R& o3 k9 C0 {
                file_name_new=$i;
8 B1 W( j! g& ]: f+ b        done;
0 h9 `, _" ?- ]) Q5 @) _6 G        #将备份文件复制到webapps
# N5 I$ \' Q- {2 a! y$ G# n/ H        cp  ${mainpath}/backup/${file_name_new} ${mainpath}/tomcat8/webapps
' [/ j  V7 p1 l! }: X4 b        if [ $? -eq 0 ]
! W9 z! o  ~; X, O$ k* ]        then
) B4 x1 O  @9 \! A- j: j                echo 复制${file_name_new}成功
! o6 S0 V0 K& e' _. S7 a        else  n! X  t  W% S1 W) y9 A" j
                echo 复制失败,退出!
  _4 y( A' ~0 [. o+ S+ z        exit 1
9 d( |4 U, X$ a' f& u! R9 U        fi
8 }9 N$ f& t" d3 Y. Q! P1 U+ @        #进入webapps/目录
' b8 o9 g/ C0 R8 S" S7 E! \        cd  ${mainpath}/tomcat8/webapps
* ^1 l6 ~' i3 y' W4 y- l7 q0 e$ @, ~        #解压文件
6 |, k: v% _' [1 D3 S+ q/ y9 w- u        echo 正在解压,请稍后...9 O- y/ t; S' Q( y# X0 i1 P
        tar -zxvf ${file_name_new}
3 K0 k/ m; V" R1 x        #重启tomcat
1 X* M5 v3 p9 ?# h$ G" j* ~        deploy_restart
; Q9 c2 J. O, c}
" }$ F  r2 O- D
, b& x9 q/ g4 G( l& C9 @0 B  Y  M  S$ U3 X: h3 t+ j
echo --------欢迎使用shell自动部署脚本--------
( T" @. Z$ U, {. e, Wecho -e "请输入对应的操作编号:\n0.版本包回滚;\n其他键.一件部署;"- P6 ~6 z. C) i# e; k
#获取用户操作
, s4 f" w9 d9 y9 X2 Gread wm2
4 q1 ?2 I& J* E2 X9 J9 l+ Lcase $wm2 in
* Q1 B$ A+ W# K  f+ F0)
+ P" M8 h7 I% L5 S. {2 Y$ |( y8 e        deploy_Rollback
5 I; ]7 N/ x) C/ ~/ \  M3 q        ;;
7 W5 i( e0 B  w- W" H*)
$ a/ k; c! a" |& \, d& J$ o$ f        deploy_backup# h( b% @2 v: Y* p, r$ j
        deploy_unzip
- E+ d* n* `+ s: Y8 j# t. {        deploy_restart" T* @2 M6 \3 W9 ?  n1 @. T
        ;;, i5 ~# R8 I: q
esac
' c( C# x% F1 v; b% h/ X3 |: h' u2 E7 Z% `5 T6 V5 }0 L0 J2 z; I& l

1 P* n  h5 L" N+ V8 H( v
 楼主| 发表于 2017-9-20 21:52:14 | 显示全部楼层
每次部署版本的时候就感觉浪费时间也没有工作效率,每次都是人工手动部署,而且还可能存在认为失误导致部署失败的风险,且每个人的部署习惯都不一致,有的人没有备份版本包的习惯,如果部署的新版本有问题又没有之前版本的备份,在线下测试环境可能会浪费大家的时间,如果是在线上出现这种情况,那就是事故,会招来客户投诉,所以为了提高工作效率,形成规范,特意抽了点时间写了一个自动部署版本包的脚本。
 楼主| 发表于 2017-9-21 13:41:55 | 显示全部楼层
#! /bin/sh
. h- \% u! S0 }  U( e) V$ O4 Recho '####################开始自动部署####################'
1 C2 {* V+ a" U5 P# D: u! f1 z1 Spath=`pwd` #当前路径
; j8 A. ~/ {$ o: wtomcatPath=tomcat-7 #指定tomcat文件目录名称
3 |9 o$ B; m4 Y3 Ocd ../$tomcatPath/bin #进入tomcat的bin目录
; y, A/ ^) e& {, U  GPID=$(ps -fu `whoami`|grep tomcat|grep -v grep|awk '{print $2}')) c/ H/ z' B$ B4 J/ f
if [ -z "$PID" ];then4 N* C# w9 [$ a3 T6 C6 j4 L: W
echo "no tomcat process"  b: p7 n( F/ `# A
else: E  L0 M" I  u: |3 c+ ~% K% P
./shutdown.sh #停止tomcat服务9 r" R. m8 }. P, W0 H
fi* @0 j8 n% n# o# ~" F
sleep 1 #休眠1s) M( ?$ r! ^; }6 \* \
cd ../webapps #进入tomcat的webapps目录
# Q+ s4 k/ E) l2 N+ x; j' z) z, C. yrm -fr test #删除test文件目录
- H1 t4 X% v3 x! wmv test.war test.war.$(date +%Y%m%d) #备份webapps下的test16 cp $path/test.war ./ #复制test.war到webapps路径下9 u% {  d) v/ J: ?
sleep 1 #休眠1s. I1 Y/ ^. h4 l- M9 Y, A! W
cd ../bin
* [: @4 X. W# [$ \; A4 M./startup.sh #启动tomcat服务
! P9 L* W' z6 g  hecho '####################部署结束####################'" F! w9 y: k7 v- A' P  }0 d0 w7 T
$ T+ |6 E$ @5 e/ a
4 K; `7 O9 j' B! r! W

6 X7 h& ]0 ^+ S1 K) C说明:
, m% O9 x' G0 y# X$ V$ B) y; o# Y+ V1.新建一个目录autoDeploy与tomcat目录放在同级目录下  A/ X2 q8 g1 W
  (1)autoDeploy.sh放在autoDeploy目录下1 C4 h8 a2 Y% ?: r7 z/ ]' b- m
  (2)需要部署的test.war放在autoDeploy目录下(test.war为需要部署的到tomcat上的war包)
7 @; `/ ]2 o7 O% f- P! |2.tomcatPath=tomcat-7(指定tomcat文件目录名称,tomcat-7改为自己tomcat的目录名称)% P# E, n% A  {0 \) `& Z
3.执行autoDepoy.sh即可实现自动部署- I+ x# x/ V, a' s
  新建的autoDepoy.sh若没有执行权限,需要执行:chmod +x autoDeploy.sh) B- y6 n' F, s7 _9 c
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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