• 使用Shell脚本优化Linux服务器上部署流程


    写在前面

    上次我们讲了windows下的bat脚本打包上传, 那么这次我们接着讲下linux下的解压发布。这里事先声明,没有自动挡的车------Jenkins之类的持续集成工具(如果有需要可以看我之前写的gitlab和jenkins文章,或者参照我github上的github Actions,或者Travis CI之类的工具),因为是guoqi、yinhang、zhengfu那边的环境,加之我就是一个权限很低的开发,不让搞,所以就直接点,上脚本吧。

    解决了什么问题?

    • 人工发包逻辑不难,但很繁琐
    • 人工发包容易打错包,打错字,忘记打包,忘记发包
    • 人工发包因人而异,每个人有每个人的风格,没有规范,不利于回溯

    直接上脚本

    #!/bin/bash
    # 定义你项目的路径,也就是解压后nignx配置的html静态资源目录
    declare DEPLOY_PATH="/heaven/965"
    
    ## 封装一个输入方法
    function get_input() {
      echo "#========中电惠融一键部署-开始========#"
      echo "请输入要部署的项目集合的数字编号:"
      echo "1、app  2、biz 3、fin"
      echo "4、app biz 5、app fin 6、biz fin"
      echo "7、app biz fin 8、退出"
      read -t 10 DEPLOY_NUM
      case $DEPLOY_NUM in
      "1")
      unzip2replace "app"
      ;;
      "2")
      unzip2replace "biz"
      ;;
      "3")
      unzip2replace "fin"
      ;;
      "4")
      unzip2replace "app"
      unzip2replace "biz"
      ;;
      "5")
      unzip2replace "app"
      unzip2replace "fin"
      ;;
      "6")
      unzip2replace "biz"
      unzip2replace "fin"
      ;;
      "7")
      unzip2replace "app"
      unzip2replace "biz"
      unzip2replace "fin"
      ;;
      *)
      exit 0
      esac
      echo "#========中电惠融一键部署-结束========#"
    }
    
    # 解压替换方法
    function unzip2replace() {
      echo "开始配置${1}端"
      sleep 3
      cd "${DEPLOY_PATH}/${1}"
      echo "开始备份${1}端"
      sleep 3
      if [ -d "dist" ];then
      echo "dist文件夹命中,开始备份"
      cur_date=`date '+%Y%m%d%H%M%S'`
      mv dist "dist-${cur_date}"
      else
      echo "dist文件夹未命中,无需备份"
      fi
      filename=`ls *.zip -t |head -n1|awk '{print $0}'`
      echo "开始解压${filename}到目录..."
      sleep 3
      unzip ${filename}
      echo "配置${1}端完成"
    }
    
    # 执行输入方法
    get_input
    

    Shell相关知识点解析

    找出最新的zip文件

    filename=`ls *.zip -t |head -n1|awk '{print $0}'`
    

    定义一个变量DEPLOY_PATH

    declare DEPLOY_PATH="/heaven/965"
    

    定义一个方法unzip2replace

    function unzip2replace() {
      
    }
    

    解压文件

    # zip包
    unzip 965.zip
    
    # tar包
    
    tar -zxvf 965.tar.gz
    

    获取当前日期

    date '+%Y%m%d%H%M%S'
    

    判断dist文件夹是否存在,不存在就do nothing

    if [ -d "dist" ];then
      echo "dist文件夹命中,开始备份"
      cur_date=`date '+%Y%m%d%H%M%S'`
      mv dist "dist-${cur_date}"
    else
      echo "dist文件夹未命中,无需备份"
    fi
    

    获取函数第一个参数 “$1"

    最后

    通过楼上的例子,我们学习了一些shell脚本的知识,可能一些企业就是不招运维啊,所以一部分工作就让开发来搞,无可厚非。但是你想一下,每次都上传再解压再替换啥的,东西是很简单,但是很繁琐,而且有些时候也容易打错字啥的,既然有这些诟病,那为什么不停下来思考下,用脚本去搞呢?本文就是期望给读者一些启迪,在处理计算机上的一些复杂的、或者是繁琐的事情,把它拆成一些指令集,汇聚成一把脚本,./deploy.sh,./deploy.bat完事,当然啦,随着技术的发展,如果领导能听得进去的话,最好还是搞自动化集成部署,遗憾的是,这样的领导,我在国企、传统的公司从未遇到。。。。。。

  • 相关阅读:
    jQuery.qrcode二维码插件生成网页二维码
    JavaScript 常用方法
    jQuery——样式与动画
    jQuery——事件
    js基础(使用Canvas画图)
    ES6
    正则表达式总结及常规的正则表达式校验
    jQuery基础介绍
    weblogic 数据源高可用配置
    win10 查看端口是否被占用以及杀进程
  • 原文地址:https://www.cnblogs.com/cnroadbridge/p/16398872.html
Copyright © 2020-2023  润新知