代码发布脚本

代码发布流程链接在此

一、脚本框架
二、命令填充
三、完善功能
增加日志功能
增加锁文件功能
增加主函数逻辑
增加参数安全措施

脚本框架

#!/bin/bash
# 功能:打包代码   
# 脚本名:deploy.sh 
# 作者:json_steve 
# 版本:   
# 联系方式:steve_nash@foxmail.com

# 获取代码
get_code(){
  echo "获取代码"
}

# 打包代码
tar_code(){
  echo "打包代码"
}

# 传输代码
scp_code(){
  echo "传输代码"
}

# 关闭应用
stop_serv(){
  echo "关闭应用"
  echo "关闭nginx应用"
  echo "关闭django应用"
}

# 解压代码
untar_code(){
  echo "解压代码"
}

# 放置代码
fangzhi_code(){
  echo "放置代码"
  echo "备份老文件"
  echo "放置新文件"
}

# 开启应用
start_serv(){
  echo "开启应用"
  echo "开启django应用"
  echo "开启nginx应用"
}

# 检查
check(){
  echo "检查项目"
}

# 部署函数
deploy_pro(){
  get_code
  tar_code
  scp_code
  stop_serv
  untar_code
  fangzhi_code
  start_serv
  check
}

# 主函数
main(){
  deploy_pro
}

# 执行主函数
main
#!/bin/bash
# 功能:打包代码   
# 脚本名:deploy.sh 
# 作者:json_steve 
# 版本:   
# 联系方式:steve_nash@foxmail.com

# 定义变量
LOG_FILE='/data/logs/deploy.log'
PID_FILE='/tmp/deploy.pid'

# 定义日志功能函数
write_log(){
  date=$(date +%F)
  time=$(date +%T)
  buzhou="$1"
  echo "${date} ${time} $0 : ${buzhou}" >> "${LOG_FILE}"
}

# 增加锁文件
add_lock(){
 echo "增加锁文件"
 touch "${PID_FILE}"
 write_log "增加锁文件"
}

# 删除锁文件
del_lock(){
 echo "删除锁文件"
 rm -f "${PID_FILE}"
 write_log "删除锁文件"
}
# 获取代码
get_code(){
  echo "获取代码"
  write_log "获取代码"
}

# 打包代码
tar_code(){
  echo "打包代码"
  ssh root@ip.ip.ip.ip "/bin/bash /data/scripts/tar_code.sh"
  write_log "打包代码"
}

# 传输代码
scp_code(){
  echo "传输代码"
  cd /data/codes/
  scp root@ip.ip.ip.ip:/data/codes/django.tar.gz ./
  write_log "传输代码"
}

# 关闭应用
stop_serv(){
  echo "关闭应用"
  write_log "关闭应用"
  echo "关闭nginx应用"
  /data/server/nginx/sbin/nginx -s stop
  write_log "关闭nginx应用"
  echo "关闭django应用"
  kill $(lsof -Pti :8000)
  write_log "关闭django应用"
}

# 解压代码
untar_code(){
  echo "解压代码"
  cd /data/codes
  tar xf django.tar.gz
  write_log  "解压代码"
}

# 放置代码
fangzhi_code(){
  echo "放置代码"
  write_log  "放置代码"
  echo "备份老文件"
  mv /data/server/itcast/test1/views.py /data/backup/views.py-$(date +%Y%m%d%H%M%S)
  write_log "备份老文件"
  echo "放置信文件"
  cd /data/codes
  mv django/views.py /data/server/itcast/test1/
  write_log "放置信文件"
}



# 开启应用
start_serv(){
  echo "开启应用"
  write_log "开启应用"
  echo "开启django应用"
  source /data/virtual/venv/bin/activate
  cd /data/server/itcast/
  python manage.py runserver >> /dev/null 2>&1 &
  deactivate
  write_log "开启django应用"
  echo "开启nginx应用"
  /data/server/nginx/sbin/nginx
  write_log "开启nginx应用"
}


# 检查
check(){
  echo "检查应用"
  netstat -tnulp | grep ':80'
  write_log "检查应用"
}

# 部署函数
deploy_pro(){
  add_lock
  get_code
  tar_code
  scp_code
  stop_serv
  untar_code
  fangzhi_code
  start_serv
  check
  del_lock
}

# 定义报错函数
err_msg(){
  echo "脚本 $0 正在运行中,请稍候..."
}

# 定义脚本帮助信息
usage(){
  echo "脚本 $0 的使用方法: $0 [ deploy ]"
}

# 主函数
main(){
  case "$1" in
    deploy)
          if [ -f "${PID_FILE}" ]
          then
            err_msg
          else
            deploy_pro
          fi
      ;;
    *)
       usage
       ;;
  esac
}


# 调用主函数
if [ "$#" -ne 1 ]
then
  usage
else
  main $1
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值