背景

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

代码

 #!/bin/sh
#Edit:何彦霆
#version:1.0. beta #执行环境初始化
source /hxspace/production/bin/setenv.sh #变量说明
#$-外部提供,日期补丁(格式要求BD_2017--)
#Paths_Way-补丁存放目录
#Tomcat_Way-tomcat中间件目录
#Tomcat_Start_Way-tomcat中间件启动文件位置(加载so存在该限制,不能直接使用工程下的启动文件)
#Env_Wabapp_Way-web应用目录
#Env_Bus_Way-BUS工程目录 BD_Data=$
Paths_Way="/mnt/patches"
Tomcat_Way="/hxspace/production/server/apache-tomcat-8.5.9"
Tomcat_Start_Way="/hxspace/production/bin"
Env_Wabapp_Way="/hxspace/production/webroot"
Env_Bus_Way="/hxspace/production/bus" function Env_WEB_updata()
{
WEB_name=$
WEB_way=$ #判断Mall_WEB组件更新
if [ -d ./${WEB_name} ];then echo "存在${WEB_name}补丁,准备进行${WEB_name}环境更新" #down掉服务器tomcat
sh ${Tomcat_Way}/bin/shutdown.sh
sleep 5s #清空部署启动目录下,WEB应用文件
mkdir -p ${Env_Wabapp_Way}/${WEB_way}
rm -rf ${Env_Wabapp_Way}/${WEB_way}/*
cp -rf ${Paths_Way}/${BD_Data}/${WEB_name}/* ${Env_Wabapp_Way}/${WEB_way} #启动WEB
sh ${Tomcat_Start_Way}/tomcat_run.sh
echo "Mall_WEB环境更新完成" else echo "${WEB_name}更新补丁不存在,${WEB_name}更新结束" fi } function Env_BUS_updata()
{
BUS_name=$1
BUS_port=$2
BUS_way=$3
echo ${BUS_name}
echo ${BUS_port}
echo ${BUS_way}
#判断组件更新
#if [ -d ./${BUS_name}* ];then
result=`ls -l | grep ${BUS_name}*`
#if [[ "$result" != "" ]];then
if [ -d ./${result} ];then echo "存在${BUS_name}补丁,准备进行${BUS_name}环境更新" #判断Server 进程是否存在 - centos 使用判断监控PID
Sc_Pid=`netstat -nlp | grep ${BUS_port} | awk '{print $7}' | awk -F "/" '{print $1}'` #判断20025端口是否被监听,如果正在监听,kill
if [ ! $Sc_Pid ]; then echo "IS NULL" else echo "NOT NULL"
kill -9 $Sc_Pid fi #拷贝壳子进行覆盖
mkdir -p ${Env_Bus_Way}/${BUS_way}
cp -rf './TBAServer(2.1.9.4)'/* ${Env_Bus_Way}/${BUS_way} if [ -d ./${BUS_name}_conf ];then echo "${BUS_name}_conf存在补丁,准备进行环境更新" #清空部署启动目录下,Collect_bus_conf文件
rm -rf ${Env_Bus_Way}/${BUS_way}/config.ini
rm -rf ${Env_Bus_Way}/${BUS_way}/classes/*
rm -rf ${Env_Bus_Way}/${BUS_way}/*.so mkdir -p ${Env_Bus_Way}/${BUS_way}
cp -rf ${Paths_Way}/${BD_Data}/${BUS_name}_conf/* ${Env_Bus_Way}/${BUS_way} #启动bus-采用重启
sh ${Env_Bus_Way}/${BUS_way}/restart.sh
echo "${BUS_name}_conf补丁,更新完成" else echo "${BUS_name}_conf补丁不存在" fi if [ -d ./${BUS_name}_lib ];then echo "${BUS_name}_lib存在补丁,准备进行环境更新" #清空部署启动目录下,${BUS_name}_lib文件
mkdir -p ${Env_Bus_Way}/${BUS_way}/lib
rm -rf ${Env_Bus_Way}/${BUS_way}/lib/* cp -rf ${Paths_Way}/${BD_Data}/${BUS_name}_lib/* ${Env_Bus_Way}/${BUS_way}/lib #启动bus-采用重启
sh ${Env_Bus_Way}/${BUS_way}/restart.sh
echo "${BUS_name}_lib补丁,更新完成" else echo "${BUS_name}_lib补丁不存在" fi if [ -d ./${BUS_name}_classes ];then echo "${BUS_name}_classes存在补丁,准备进行环境更新" #清空部署启动目录下,${BUS_name}_classes文件
#工程classes文件同配置文件classes同目录,才用覆盖的方式
mkdir -p ${Env_Bus_Way}/${BUS_way}/classes cp -rf ${Paths_Way}/${BD_Data}/${BUS_name}_classes/* ${Env_Bus_Way}/${BUS_way}/classes #启动bus-采用重启
sh ${Env_Bus_Way}/${BUS_way}/restart.sh
echo "${BUS_name}_classes补丁,更新完成" else echo "${BUS_name}_classes补丁不存在" fi else
echo "${BUS_name}无补丁"
fi
} #切换至补丁目录
cd ${Paths_Way} #判断补丁目录下是否存在指定补丁
if [ -d ./$BD_Data ];then
echo "存在该补丁,准备进行环境更新"
cd ./$BD_Data
# BUS 更新,$1 - 补丁文件名 $2 - BUS监听端口 $3 BUS部署路径
Env_BUS_updata HX_ChenDu_LC_Mall_bus_test 20025 mall_bus Env_BUS_updata HX_ChenDu_LC_MallTimer_bus_test 20032 mall_timer Env_BUS_updata HX_ChenDu_pmc_bus_test 20028 pmc_bus Env_BUS_updata HX_ChenDu_pmc_Collect_bus_test 20042 collector_bus #WEB更新,$1 - 补丁文件名 $2 - WEB部署路径
Env_WEB_updata HX_ChenDu_LC_Mall_WEB_Linux_Test mall #Env_WEB_updata HX_ChenDu_pmc_Collect_bus_test mkt else
echo "补丁不存在,更新结束"
exit 0
fi

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

Linux通过shell执行自动化部署的更多相关文章

  1. shell脚本自动化部署服务

    shell脚本自动化部署 !/bin/bash #export PATH=$PATH:/export/maven/bin run_flag_dir="/data0/shell/deploy_ ...

  2. shell脚本自动化部署

    由于公司技术部团队较小,没有专门的运维团队,所以运维工作技术部承包了. 一.纯人工部署是这样的: 1. 本地打包:一般 maven clean package 2. 借助xftp上传到服务器对应目录 ...

  3. jenkins结合ansible用shell实现自动化部署和回滚

    最近用jenkins+gitlab+ansible做持续化集成,自动化部署和版本回滚.然而deploy plugin没能做到增量升级和回滚操作,折腾了很久决定自己写个脚本来简单实现. 环境: cent ...

  4. 登录linux时 shell执行顺序

    # .bash_history,.bash_logout,.bash_profile,.bashrc/etc/profile 全局.bash_history 记录当前登录用户历史操作的命令.bash_ ...

  5. linux下使用shell脚本自动化部署项目

    在Java开发项目时经常要把正在开发的项目发布到测试服务器中去测试,一般的话是要把项目先打成war包,然后把war包发布到服务器中,关闭服务器, 最后重新启动服务器,虽然这过程不是很繁琐,但如果是多个 ...

  6. jenkins+maven+Tomcat+shell构建自动化部署

    https://yq.aliyun.com/articles/685931 1.官网下载war包:jenkins本质上就是一个web应用,直接下载jenkins的war包通过tomcat运行即可.ht ...

  7. Shell脚本-自动化部署WEB

    #! /bin/ ] then echo "#### 参数有误,\$1:构建号必填" exit fi cd /root/workspace/xinya_erp/xinya_web ...

  8. Shell脚本-自动化部署反向代理、WEB、nfs

    部署nginx反向代理三个web服务,调度算法使用加权轮询(由于物理原因只开启两台服务器) AutoNginxNfsService.sh #/bin/bash systemctl status ngi ...

  9. shell脚本自动化部署XX的案例(附数组使用)

    #!/bin/sh #Auto Make install MFS Files # cat <<EOF ++++++++++++++++Welcome To Use Auto Install ...

随机推荐

  1. Sizzle 源码分析 (二)

    在Sizzle函数中,如果能快速处理或者通过querySelector处理,那么就使用它处理.否则使用select函数处理 . select函数 select = Sizzle.select = fu ...

  2. 使用SQL语句使数据从坚向排列转化成横向排列(排班表)

    知识重点: 1.extract(day from schedule01::timestamp)=13 Extract 属于 SQL 的 DML(即数据库管理语言)函数,同样,InterBase 也支持 ...

  3. cpp(第十章)

    1. const class & func(const class &) const { do something.. } 第一个const返回后的类不允许被赋值,第二个const不允 ...

  4. ue4加载界面(loadingscreen)的实现

    即使开放世界已然成为现今游戏趋势,切换关卡过程中的读条仍是很难避免的,譬如进入房屋.传送到其他世界等等. 于是就引入了loadingscreen这一需求. loadingscreen顾名思义就是加载过 ...

  5. [USACO4.2]草地排水Drainage Ditches

    题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草 要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹 ...

  6. SyntaxError: Unexpected token < in JSON at position 0 错误

    当你使用AJAX时有设定dataType : 'json' 所以在接回传值的时候会以json格式来解析但回传的资料非json格式就会出现这个错误讯息

  7. Swift字符串可变性

    您可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改: var variableString = "Horse" variableStrin ...

  8. template might not exist or might not be accessible by any of the configured Template Resolvers

    距离上一篇文章已经很长时间了,最近太忙碌了,今天发布spring boot遇到一个问题,找了好久才找到解决办法,今天贴出来和大家一起分享下,首先看错误信息 HTTP Status 500 - Requ ...

  9. 【Android Developers Training】 34. 添加一个简单的分享行为(Action)

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  10. Chrome DevTools 调研笔记

    1  说明 此篇文章针对Chrome DevTools常用功能进行调研分析.描述了每个功能点能实现的功能.应用场景和详细操作. 2  Elements 2.1  功能 检查和实时更新页面的HTML与C ...