Linux通过shell执行自动化部署

背景

  通过shell判断是否存在补丁更新,进行自动化的部署

 

代码

  1 #!/bin/sh 
  2 #Edit:何彦霆
  3 #version:1.0.0 beta
  4 
  5 #执行环境初始化
  6 source /hxspace/production/bin/setenv.sh
  7 
  8 #变量说明
  9 #$1-外部提供,日期补丁(格式要求BD_2017-03-02)     
 10 #Paths_Way-补丁存放目录   
 11 #Tomcat_Way-tomcat中间件目录 
 12 #Tomcat_Start_Way-tomcat中间件启动文件位置(加载so存在该限制,不能直接使用工程下的启动文件) 
 13 #Env_Wabapp_Way-web应用目录  
 14 #Env_Bus_Way-BUS工程目录
 15 
 16 BD_Data=$1
 17 Paths_Way="/mnt/patches"
 18 Tomcat_Way="/hxspace/production/server/apache-tomcat-8.5.9"
 19 Tomcat_Start_Way="/hxspace/production/bin"
 20 Env_Wabapp_Way="/hxspace/production/webroot"
 21 Env_Bus_Way="/hxspace/production/bus"
 22 
 23 function Env_WEB_updata()
 24 {
 25     WEB_name=$1
 26     WEB_way=$2
 27 
 28     #判断Mall_WEB组件更新
 29     if [ -d ./${WEB_name} ];then
 30     
 31         echo "存在${WEB_name}补丁,准备进行${WEB_name}环境更新"
 32 
 33         #down掉服务器tomcat
 34         sh ${Tomcat_Way}/bin/shutdown.sh
 35         sleep 5s
 36 
 37         #清空部署启动目录下,WEB应用文件
 38         mkdir -p ${Env_Wabapp_Way}/${WEB_way}
 39         rm -rf ${Env_Wabapp_Way}/${WEB_way}/*
 40         cp -rf ${Paths_Way}/${BD_Data}/${WEB_name}/* ${Env_Wabapp_Way}/${WEB_way}
 41 
 42 
 43         #启动WEB
 44         sh ${Tomcat_Start_Way}/tomcat_run.sh
 45         echo "Mall_WEB环境更新完成"
 46         
 47     else
 48     
 49         echo "${WEB_name}更新补丁不存在,${WEB_name}更新结束"
 50         
 51     fi
 52 
 53 }
 54 
 55 function Env_BUS_updata()
 56 {
 57     BUS_name=$1
 58     BUS_port=$2
 59     BUS_way=$3
 60     echo ${BUS_name}    
 61     echo ${BUS_port}    
 62     echo ${BUS_way}    
 63     #判断组件更新
 64     #if [ -d ./${BUS_name}* ];then
 65     result=`ls -l | grep ${BUS_name}*`
 66     #if [[ "$result" != "" ]];then
 67     if [ -d ./${result} ];then
 68     
 69         echo "存在${BUS_name}补丁,准备进行${BUS_name}环境更新"
 70 
 71         #判断Server 进程是否存在 - centos 使用判断监控PID
 72         Sc_Pid=`netstat -nlp | grep ${BUS_port} | awk '{print $7}' | awk -F "/" '{print $1}'`
 73 
 74         #判断20025端口是否被监听,如果正在监听,kill
 75         if [ ! $Sc_Pid ]; then  
 76         
 77             echo "IS NULL"    
 78             
 79         else  
 80         
 81             echo "NOT NULL"  
 82             kill -9 $Sc_Pid
 83 
 84         fi
 85         
 86         #拷贝壳子进行覆盖
 87         mkdir -p ${Env_Bus_Way}/${BUS_way}
 88         cp -rf './TBAServer(2.1.9.4)'/* ${Env_Bus_Way}/${BUS_way}
 89         
 90         if [ -d ./${BUS_name}_conf ];then
 91         
 92             echo "${BUS_name}_conf存在补丁,准备进行环境更新"
 93             
 94             #清空部署启动目录下,Collect_bus_conf文件
 95             rm -rf ${Env_Bus_Way}/${BUS_way}/config.ini
 96             rm -rf ${Env_Bus_Way}/${BUS_way}/classes/*
 97             rm -rf ${Env_Bus_Way}/${BUS_way}/*.so
 98             
 99             mkdir -p ${Env_Bus_Way}/${BUS_way}
100             cp -rf ${Paths_Way}/${BD_Data}/${BUS_name}_conf/* ${Env_Bus_Way}/${BUS_way}
101             
102             #启动bus-采用重启
103             sh ${Env_Bus_Way}/${BUS_way}/restart.sh
104             echo "${BUS_name}_conf补丁,更新完成"
105             
106         else
107         
108             echo "${BUS_name}_conf补丁不存在"
109             
110         fi
111 
112         if [ -d ./${BUS_name}_lib ];then
113         
114             echo "${BUS_name}_lib存在补丁,准备进行环境更新"
115             
116             #清空部署启动目录下,${BUS_name}_lib文件
117             mkdir -p ${Env_Bus_Way}/${BUS_way}/lib
118             rm -rf ${Env_Bus_Way}/${BUS_way}/lib/*
119 
120             cp -rf ${Paths_Way}/${BD_Data}/${BUS_name}_lib/* ${Env_Bus_Way}/${BUS_way}/lib
121             
122             #启动bus-采用重启
123             sh ${Env_Bus_Way}/${BUS_way}/restart.sh 
124             echo "${BUS_name}_lib补丁,更新完成"
125             
126         else
127         
128             echo "${BUS_name}_lib补丁不存在"
129             
130         fi
131 
132         if [ -d ./${BUS_name}_classes ];then
133                 
134             echo "${BUS_name}_classes存在补丁,准备进行环境更新"
135             
136             #清空部署启动目录下,${BUS_name}_classes文件
137             #工程classes文件同配置文件classes同目录,才用覆盖的方式
138             mkdir -p ${Env_Bus_Way}/${BUS_way}/classes
139 
140             cp -rf ${Paths_Way}/${BD_Data}/${BUS_name}_classes/* ${Env_Bus_Way}/${BUS_way}/classes
141             
142             #启动bus-采用重启
143             sh ${Env_Bus_Way}/${BUS_way}/restart.sh 
144             echo "${BUS_name}_classes补丁,更新完成"
145             
146         else
147         
148             echo "${BUS_name}_classes补丁不存在"
149             
150         fi            
151         
152     else
153         echo "${BUS_name}无补丁"
154     fi
155 }
156 
157 
158 #切换至补丁目录
159 cd  ${Paths_Way}
160 
161 
162 #判断补丁目录下是否存在指定补丁
163 if [ -d ./$BD_Data ];then
164     echo "存在该补丁,准备进行环境更新"
165     cd ./$BD_Data
166     # BUS 更新,$1 - 补丁文件名  $2 - BUS监听端口  $3 BUS部署路径
167     Env_BUS_updata HX_ChenDu_LC_Mall_bus_test 20025 mall_bus
168     
169     Env_BUS_updata HX_ChenDu_LC_MallTimer_bus_test 20032 mall_timer
170     
171     Env_BUS_updata HX_ChenDu_pmc_bus_test 20028 pmc_bus
172     
173     Env_BUS_updata HX_ChenDu_pmc_Collect_bus_test 20042 collector_bus
174     
175     #WEB更新,$1 - 补丁文件名  $2 - WEB部署路径
176     Env_WEB_updata HX_ChenDu_LC_Mall_WEB_Linux_Test mall
177     
178     #Env_WEB_updata HX_ChenDu_pmc_Collect_bus_test mkt    
179     
180 else
181     echo "补丁不存在,更新结束"
182     exit 0
183 fi

自动通过目录标示判断是否存在该模块补丁,进行补丁的移动合并和更新

posted @ 2017-03-02 22:02  YatHo  Views(2058)  Comments(0Edit  收藏  举报