• 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

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

  • 相关阅读:
    Key ssd_300_vgg/block3_box/L2Normalization/gamma not found in checkpoint的解决方案
    微调(Fine-tune)原理
    TensorFlow的数据读取机制
    卷积神经网络CNN识别MNIST数据集
    TensorFlow基本计算单元与基本操作
    一些小软件闪退的解决方案
    机器学习之SVM调参实例
    机器学习之支持向量机算法(二)
    机器学习之支持向量机算法(一)
    机器学习项目实战----新闻分类任务(二)
  • 原文地址:https://www.cnblogs.com/YatHo/p/6492844.html
Copyright © 2020-2023  润新知