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

自动部署脚本编写

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

1

主题

0

回帖

12

积分

管理员

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

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-9-21 13:41:55 | 显示全部楼层
#! /bin/sh
  t. z2 A4 L7 i/ p2 w& ?; S9 kecho '####################开始自动部署####################'
- o; i! Y8 @+ ^& Fpath=`pwd` #当前路径
& k. s- r; Z' k  _4 wtomcatPath=tomcat-7 #指定tomcat文件目录名称- W5 U+ d/ M% [5 e* A, t
cd ../$tomcatPath/bin #进入tomcat的bin目录1 S( E+ S: u& P& l1 V
PID=$(ps -fu `whoami`|grep tomcat|grep -v grep|awk '{print $2}')
9 D5 V9 j% o' Z, G, l2 a# |if [ -z "$PID" ];then3 C" W& ?& c& ^) w2 u
echo "no tomcat process"
5 E; |1 Q. |$ s. x: Q- E8 felse
: {% M4 {6 q/ o( t./shutdown.sh #停止tomcat服务7 @% C' o: N, h* Z- V  n. ~  ?
fi
& m6 \8 J) r9 W/ w6 Y/ wsleep 1 #休眠1s
. O" s. K) ^4 |. Q0 Ncd ../webapps #进入tomcat的webapps目录/ [1 i/ |! n1 F8 I) V8 n5 b4 A
rm -fr test #删除test文件目录
( [/ t3 E: w9 r) X4 Nmv test.war test.war.$(date +%Y%m%d) #备份webapps下的test16 cp $path/test.war ./ #复制test.war到webapps路径下, a/ R% T" T7 ]! ^- a
sleep 1 #休眠1s8 u9 s0 @- h# y4 F1 ~- I
cd ../bin
3 z' W9 p* T0 L6 d/ P0 v9 `# V./startup.sh #启动tomcat服务$ @1 y5 U9 c7 q. O$ i' \
echo '####################部署结束####################'
# y+ J+ d3 |" N& H
1 @3 `3 {! h: R& z* b
7 J: _) {( M: h% n! p
. h3 c' O# d  n- }4 D3 k5 [说明:- Z. H8 d6 x& j. |
1.新建一个目录autoDeploy与tomcat目录放在同级目录下
  ~: E5 ~: C: v4 U( y; p7 C& w" M  (1)autoDeploy.sh放在autoDeploy目录下
* _) G  c7 t2 j+ O  (2)需要部署的test.war放在autoDeploy目录下(test.war为需要部署的到tomcat上的war包)+ }# Q2 L: j# q8 `7 l3 i5 n
2.tomcatPath=tomcat-7(指定tomcat文件目录名称,tomcat-7改为自己tomcat的目录名称)) p* J) r( h* s  f
3.执行autoDepoy.sh即可实现自动部署" [! p( ]0 d+ }5 q/ W  p
  新建的autoDepoy.sh若没有执行权限,需要执行:chmod +x autoDeploy.sh
. [4 x4 \* B2 |) H% Q$ m以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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