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

自动部署脚本编写

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-9-20 21:50:37 | 显示全部楼层 |阅读模式
8 P) Q* @7 G& T
  自动部署shell脚本由4个方法组成: deploy_backup(版本备份)、deploy_unzip(自动解压新版本)、deploy_restart(重启tomcat)、deploy_Rollback(版本回滚),当然,每个方法可以独立执行,此处在开始运行脚本时给出了2个选择,0:版本回滚,其他任意输入会自动部署新的版本包并重启tomcat。shell脚本代码如下:; D" _6 G4 n" ]5 T  U
# ?, W3 X2 H% O, U' m+ l) H
#!/bin/bash3 a0 K9 f5 B; v; N6 o
deploy installation script By clinva 2015.08.28- d+ ~9 w: _7 F) f5 k* ^# z9 _

4 M" n' N$ }- w0 `
+ G1 T! @8 _2 k# P& b) j#版本部署路径
% W0 h9 o. a" D" dmainpath=/home/emalls1/qdone/pcv2
2 ]) j  `( B8 m6 }0 g' ]2 ~5 V  _* ?1 Y* k% N( Q, a! n2 ~) m: k* Y

" R: W; z4 q" L$ `! r0 s0 J6 K3 G& \
#备份版本包
+ g3 z* w$ `! Ndeploy_backup()$ z, \; O& g+ z  x7 [- s
{3 J1 H4 `+ D$ J+ P1 t
cd ${mainpath}/tomcat8/webapps/;
0 v# y5 ^2 t, C5 P9 U$ J- y0 Gtar -zcvf epc_`date +%y%m%d%H%M%S`.tar.gz epc;. m. Y% n! }1 p3 i# ?  |  D
sleep 3! K8 d+ i& }5 w( N9 K3 i
ls;
* ~1 F3 W% i- ~$ m# b$ }mv *.tar.gz ${mainpath}/backup/;4 J9 \* k, n0 V1 Y2 e3 s6 R/ w" K3 M: Y
}' a% k! x6 d# X% {3 p
# Z" i+ {+ P% R! P6 b
2 D% W& ~1 s+ L& f; H; ]2 i2 R
#解压版本包
! F0 k, T# _/ T. F3 cdeploy_unzip()$ m5 r) p6 r: }% h5 n
{3 J$ V3 N* P3 S4 k
cd ${mainpath};
  O1 s7 t! \0 A3 T, G) c# [! kls;
7 ?5 S2 ]5 O& c9 G, O* k/ _& ]sleep 3;
/ O3 w8 S. t( G( X+ g$ `* u# T#unzip -l *.zip;% p+ T5 J$ L$ i3 q
unzip -o -d ./tomcat8/webapps/epc pc.zip;9 @- O3 T8 W" f
sleep 3;
/ D5 L( K- m: s/ z" ^* `3 p; K* ?# O9 W}
  {% \2 B( H- ~3 a- F' _. g3 x) Z) J+ a0 V2 H
#重启tomcat
$ S: _# h% ^: g; D% V& zdeploy_restart()
: d: U+ T* j* N. O3 f{
5 B% p7 l+ \5 r9 d" \cd ${mainpath}/tomcat8/bin;8 _" s8 _3 |+ g1 o
pid1=`ps -ef|grep emalls1 |grep pcv2 |grep tomcat8 |grep qdone |awk '{print $2}'`, a( g+ z8 E$ x% x0 g& a
echo $pid16 G& `# G6 g. ]- l' [
if [ -z $pid1 ]; then; l; a! e8 x, \3 E" k
        echo "not exist"( R7 ^! `. C% ]
        ./startup.sh;9 Z3 k( F$ ~+ {$ x7 h3 M8 ]
        tailf ./../logs/catalina.out4 d, n0 p" c' D  ?; w, r8 C  v
        exit 1
9 P- ], b$ O& |. X8 Eelse, {; C+ X4 }/ v$ a/ O/ X
        echo "restarting tomcat1"; _# M) u/ z4 x8 \* q( Z: a' `
        kill -9 $pid1* R" j' M$ j: D7 h& i. G
        sleep 5
. G" h) v9 T* \9 x; f$ @$ r8 Q( g        ./startup.sh;6 m- @" l0 I" G7 R& g0 `
        tailf ./../logs/catalina.out
( q& b6 h5 W% R0 h+ T: |fi
# E! k' u, i7 `& `5 x0 G3 s}) B9 o/ `  E- C! }
# j; ?. {; ^" ~! z* Q: B8 s

' n5 l! [7 o* F9 k2 Q4 g  j#版本回滚
6 l* f0 s# H+ l  T( W" ]deploy_Rollback()+ `7 a9 n4 `* F6 m: t  q8 d
{
5 s9 s) A- s( z) a9 n#进入备份文件夹
: F# s- p5 S& F& V, k" j5 u2 l% k: F        cd ${mainpath}/backup/0 E2 _  V$ j+ C4 H# m% y
        #获取最新备份文件8 s$ A* L7 i' ]& \; o" l9 u" U
        file_name_new=''
- g9 d% t1 a" F9 \0 c8 s% s, n6 x        for i in `ls -tr`;# k( v. l. O3 c
        do: i: l3 f; h2 y1 W4 T- e
                echo $i;
9 g7 c! m  L9 _+ X2 ^                file_name_new=$i;) \% b5 U- ]% |# u1 n* j3 q
        done;
( R  E5 K& Y) W+ x1 V8 `5 E        #将备份文件复制到webapps
' |. d) E7 r8 k        cp  ${mainpath}/backup/${file_name_new} ${mainpath}/tomcat8/webapps6 |7 A9 K& K4 j! z  f
        if [ $? -eq 0 ]% c, ~( b6 _% P' H* l/ n* F
        then! k. k8 O: ?5 f, j4 A! T
                echo 复制${file_name_new}成功: a9 V% j' N  ]! ?* `
        else2 T& c+ l9 }# e+ `. Q. u: o
                echo 复制失败,退出!' D0 I3 `7 C3 b6 n8 a' Y
        exit 19 W) F0 B0 E9 |9 D/ g) P$ y" T; e# f2 P
        fi
3 _, k  t0 |5 k7 f% R" d3 b$ J1 u        #进入webapps/目录  j) X' }$ ~+ C8 S5 N, _
        cd  ${mainpath}/tomcat8/webapps3 h/ E$ I" N: Q9 {- A
        #解压文件
! i' K3 o' N3 T9 \$ c        echo 正在解压,请稍后...& _. D2 {% u" z' [8 Q6 d7 v
        tar -zxvf ${file_name_new}$ q9 W- s/ g2 m! o8 m) X
        #重启tomcat
; [$ }1 Q( U% j7 C6 L; _# P" ?  c& U        deploy_restart
) b4 H4 i9 \; V7 w}
3 N# G4 B1 ?* N$ n
8 v3 w6 a/ I) m  m- Z9 c" ^- L+ F4 ~3 O! F
echo --------欢迎使用shell自动部署脚本--------
) S) g* r8 w6 xecho -e "请输入对应的操作编号:\n0.版本包回滚;\n其他键.一件部署;"
0 Z" ^( S$ b8 p4 G; c& M#获取用户操作8 Z5 S$ V" R* v) s
read wm21 ]' m/ h) H% h( W2 u  Y
case $wm2 in( C9 G  R! d6 g9 o- \: p" c
0)
9 l$ C( F6 L  @0 d* p" ^: x        deploy_Rollback; w. n4 Y+ Z) f% k; J
        ;;
* v7 k+ a7 [+ {) v) ?% A*)
$ U0 c& e3 M8 c* w. N' I        deploy_backup
7 F$ c. t) K3 s- h7 L# W9 ?. O  Y" y        deploy_unzip7 |" l: ~. W5 w, ~& k* P
        deploy_restart- {8 D  N8 _  {. f6 \
        ;;
+ L/ P* P6 F; b) H" S$ }. r+ wesac
* j# Y& H, j: b
5 T* v5 G+ s& ^9 G, }9 P* A
8 p$ z: z# R5 m3 F) J

1

主题

0

回帖

12

积分

管理员

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

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-9-21 13:41:55 | 显示全部楼层
#! /bin/sh
3 B5 Z$ F0 k. `/ E0 H4 Becho '####################开始自动部署####################'
0 P7 o  J. Z3 D- G, l) T+ Dpath=`pwd` #当前路径
1 b! A* O1 ~3 c8 w# S0 ?+ qtomcatPath=tomcat-7 #指定tomcat文件目录名称, ?/ J+ p4 ~- p& i$ K: X* X8 T
cd ../$tomcatPath/bin #进入tomcat的bin目录/ F8 f; F2 @' H; t
PID=$(ps -fu `whoami`|grep tomcat|grep -v grep|awk '{print $2}')
) B: ], ]+ O8 Xif [ -z "$PID" ];then
( Z0 |$ I$ R. m+ P; Y% n% D/ e echo "no tomcat process". P4 `" z. o2 f0 f, z
else) R+ x4 w; r3 `' Q; R/ g0 ]8 P/ B
./shutdown.sh #停止tomcat服务
* X" T0 {& f% d, V/ ]  X$ Yfi; u! G; e' f0 w" h  v
sleep 1 #休眠1s# O# R( x8 M7 D* e
cd ../webapps #进入tomcat的webapps目录
: J2 D( ~9 U: r, Z, ^2 u8 r2 {2 ^3 [rm -fr test #删除test文件目录
  N) l) |: c3 g  W& l5 f  ?mv test.war test.war.$(date +%Y%m%d) #备份webapps下的test16 cp $path/test.war ./ #复制test.war到webapps路径下* l0 b) n* q4 f( T
sleep 1 #休眠1s% k1 s, i/ L, e' P: j7 w& k2 C
cd ../bin9 G' V% n; b& a, [# ]
./startup.sh #启动tomcat服务5 Y4 G* x2 h' `3 Y4 g9 ?  |
echo '####################部署结束####################'
4 k4 ]( m; M1 ~
# `# P9 [* F) ]7 a8 F" J" a/ t+ E5 f6 M8 c3 t9 ~
) H8 Y* C- q: A  e! E% A
说明:- a* _4 L7 W3 {/ |6 x" s
1.新建一个目录autoDeploy与tomcat目录放在同级目录下6 p2 g! z# n5 G* A. f
  (1)autoDeploy.sh放在autoDeploy目录下
1 c- ?& f# s0 |4 Y1 r- V5 W  (2)需要部署的test.war放在autoDeploy目录下(test.war为需要部署的到tomcat上的war包)9 q% X1 d9 g8 O" `3 t2 z, T4 }
2.tomcatPath=tomcat-7(指定tomcat文件目录名称,tomcat-7改为自己tomcat的目录名称)$ s* P3 h" B* C% I8 k  Z' {
3.执行autoDepoy.sh即可实现自动部署
3 n5 C; g0 Z3 B  S4 O: |  新建的autoDepoy.sh若没有执行权限,需要执行:chmod +x autoDeploy.sh0 x: J! q  X0 L/ X( ^6 @3 X
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 03:00 , Processed in 0.016267 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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