背景
通過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
自動通過目錄標示判斷是否存在該模組補丁,進行補丁的移動合併和更新