微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

shell 上线脚本(跳板机部署版)

shell aide_941 4℃
 

为了跳板机部署上线脚本写了公司生产上线脚本,供大家参考。上线脚本分为三个脚本组合,详细使用如例子 :

1.1 第一步 上传上线所需要 部署文件

 

  1. 提示:不管是使用XSHELL 还是 rz 将文件 上传,有旧文件需要删除
  2. rwrr 1 root root 1825172 Jul 11 18:20 jcj.zip
  3. rwrr 1 root root 72173147 Jul 11 18:20 goldadmin1.0SNAPSHOT.jar
  4. rwrr 1 root root 45052489 Jul 11 18:20 goldserver1.0SNAPSHOT.jar
  5. rwrr 1 root root 46552148 Jul 11 18:20 goldwap1.0SNAPSHOT.jar

1.2 第二步 执行 上线脚本

进入脚本目录(一定要用jcjuser用户)
[jcjuser@JCJ-MQ-3 devops]$ cd /home/jcjuser/shell/devops
[jcjuser@JCJ-MQ-3 devops]$ sh jcjops_deploy.sh

images

 

执行后可以根据自己需要,选择上线的应用 序列号。

1.1.1 例子:上线WAP1

提示:所有上线一定要根据流程走,从WAP1 再到WAP2,因为WAP2 之后会删除条本机/home/jcjuser/java/   目录的文件。

提示:根据上线需求,选择自己需要上线的应用,

images

提示: 如果应用上线报错,或上线有问题会 显示提示并退。

images

详细走的流程

  1. 执行代码如下;
  2. [jcjuser@JCJMQ3 devops]$ cd /home/jcjuser/shell/devops
  3. [jcjuser@JCJMQ3 devops]$ sh jcjops_deploy.sh
  4. =============代码上线===========
  5. 1.WAP1 部署上线
  6. 2.WAP2 部署上线
  7. 3.SERVER1 部署上线
  8. 4.SERVER2 部署上线
  9. 5.ADMIN1 部署上线
  10. 6.ADMIN2 部署上线
  11. 7.NGINX1 部署上线
  12. 8.NINGX2 部署上线
  13. =============代码回滚===========
  14. 9.WAP1 代码回退
  15. 10.WAP2 代码回退
  16. 11.SERVER1 代码回退
  17. 12.SERVER2 代码回退
  18. 13.ADMIN1 代码回退
  19. 14.ADMIN2 代码回退
  20. 15.NGINX1 代码回退
  21. 16.NINGX2 代码回退
  22. 提示:输入需要上线的应用编号 please input num: 1
  23. please input y or n 上线确定是WAP1?: y n 退出输入n ! y
  24. 确定后上线======================================================
  25. 第一步:目录存在.正在SCP——/home/jcjuser/java/goldwap1.0SNAPSHOT.jar
  26. 第二步:goldwap1.0SNAPSHOT.jar 文件存在,正在MV 到部署目录
  27. Stopping the goldwap ….OK!
  28. PID: 19835
  29. 第三步:goldwap1.0SNAPSHOT.jar 应用已停止成功
  30. 第四步:goldwap1.0SNAPSHOT.jar 开始部署
  31. total 222M
  32. rwrr 1 jcjuser jcjuser 45M Jul 7 11:27 20180709_17_21_12
  33. rwrr 1 jcjuser jcjuser 45M Jul 9 16:10 20180709_17_25_25
  34. rwrr 1 jcjuser jcjuser 45M Jul 10 20:48 goldwap1.0SNAPSHOT.jar_20180711_19_18_26
  35.  
  36. rwrr 1 jcjuser jcjuser 45M Jul 11 10:38 goldwap1.0SNAPSHOT.jar_20180711_10_55_36
  37. rwrr 1 jcjuser jcjuser 45M Jul 11 19:18 goldwap1.0SNAPSHOT.jar
  38. 备份不需要删除
  39. Starting the goldwap ….OK!
  40. PID: 26777
  41. STDOUT: /home/jcjuser/logs/goldwap/goldwap.log
  42. 第五步:goldwap1.0SNAPSHOT.jar 查看状态: goldwap1.0SNAPSHOT.jar 服务START……
  43. jcjuser 26777 1 99 19:18 ? 00:00:02 /usr/local/jdk/bin/java Xms256m Xmx1g Xss256k Djava.awt.headless=true Djna.nosys=true Djava.net.preferIPv4Stack=true Djava.util.Arrays.useLegacyMergeSort=true Dfile.encoding=UTF8 XX:+UseParNewGC XX:+UseConcMarkSweepGC XX:CMSInitiatingOccupancyFraction=75 XX:+UseCMSInitiatingOccupancyOnly XX:+HeapDumpOnOutOfMemoryError XX:+DisableExplicitGC jar goldwap/target/goldwap1.0SNAPSHOT.jar

1.3.1 例子:回滚WAP1

  1. 回滚目录也是在/home/jcjuser/shell/devops
  2. [jcjuser@JCJMQ3 devops]$ cd /home/jcjuser/shell/devops
  3. [jcjuser@JCJMQ3 devops]$ sh jcjops_deploy.sh
  4. # 选择需要回滚的应用
  5.  

images

images

到此 上线和回滚都完成了。

1.1 上线脚本代码(三部分)

1.1.1 代码一,执行脚本

 

  1. [jcjuser@JCJMQ3 devops]$ cat jcjops_deploy.sh
  2. [jcjuser@JCJMQ3 devops]$ cat jcjops_deploy.sh
  3. #!/bino/sh
  4. [ f /etc/init.d/functions ] && . /etc/init.d/functions
  5. menu() {
  6. cat<> /home/jcjuser/logs/deploy/deploy.log
  7. 1.4.3 脚本三 执行脚本
  8. [root@JCJWEB2 shell]# cat jcjops_nginx47.sh
  9. #!/bin/sh
  10. #########
  11. #积存金 nginx web 上线脚本
  12. #by xuebao 20180711
  13. #########
  14. TIME=$(date +%F_%H_%M_%S)
  15. NGINX_file=“/home/jcjuser/www”
  16. NGINX_www=“/www/”
  17. NIGNX_PID=`ps -ef|grep nginx|grep process|wc -l`
  18. NGINX_SH=” sh /home/jcjuser/shell/nginx_jcjuser.sh”
  19. start() {
  20. cd /home/jcjuser/shell/ && sh nginx_jcjuser.sh start
  21. }
  22. stop() {
  23. cd /home/jcjuser/shell/ && sh nginx_jcjuser.sh stop
  24. }
  25. reload() {
  26. sudo chown R www.www /www/
  27. $NGINX_SH reload
  28. }
  29. status() {
  30. $NGINX_SH status
  31. }
  32. url_test() {
  33. NUM=`curl -s –head 10.254.197.100|sed -n 1p|awk -F’ ‘ ‘{print $2}’`
  34. if [[ $NUM != 200 ]];then
  35. echo e “\033[32m ========================================================= \033[0m”
  36. echo e “\033[41;37m ngixn url 检测有问题,请查看nginx \033[0m”
  37. echo e “\033[32m =========================================================\033[0m”
  38.  
  39. else
  40. echo e “\033[32m ========================================================= \033[0m”
  41. echo “ngixn url 检测正常,上线成功”
  42. echo e “\033[32m =========================================================\033[0m”
  43. fi
  44. ls lrth /www/
  45. sudo netstat lntlup|grep 80
  46. }
  47. nginx_scp() {
  48. APP_FILE2=“/home/jcjuser/www/jcj.zip”
  49. ssh jcjuser@10.254.197.61 “sh /home/jcjuser/shell/devops/jcjops_nginx47.sh”
  50. if [[ ! f $APP_FILE2 ]];then
  51. echo e “\033[41;37m 第二步:$APP_FILE2不存在,请查看 \033[0m”
  52. exit
  53. else
  54. echo e “\033[32m 第二部 $APP_FILE2文件存在,正在MV 到部署目录 \033[0m”
  55. fi
  56. cd $NGINX_file && unzip jcj.zip >test.log
  57. mv dist/ jcj
  58. rm fr jcj.zip
  59. }
  60. nginx_golive(){
  61. echo e “\033[32m 第三步:$APP_NAME3 开始部署\033[0m”
  62. cd /www/ && sudo mv jcj jcj_$TIME
  63. cd /home/jcjuser/www/
  64. sudo mv jcj /www/
  65. # 删除删除 备份大于6份
  66. NUM2=`ls -lrth -d /www/jcj_*|wc -l`
  67. if [ $NUM2 ge 6 ]
  68. then
  69. cd /www/ && ls lrth d /www/jcj_*|tail 2|xargs sudo rm fr
  70. echo e “\033[41;37m 备份大于6份自动删除2份 \033[0m”
  71. else
  72. echo e “\033[31m 备份不需要删除 \033[0m”
  73. fi
  74. }
  75. # 回滚模块
  76. rollback(){
  77. cd /www/
  78. sudo mv $INPUT2 jcj
  79. ls lrth d jcj*
  80. }
  81. list() {
  82. cd /www/ && ls lrth d jcj_*
  83. }
  84. INPUT2=$2
  85. case $1 in
  86. golive)
  87. nginx_scp
  88. nginx_golive
  89. reload
  90. url_test
  91. ;;
  92. status)
  93. status
  94. ;;
  95. rollback)
  96. rollback $INPUT2
  97. reload
  98. url_test
  99. ;;
  100. list)
  101. list
  102. ;;
  103. *)
  104. echo e “\033[41;37m sh /home/jcjuser/shell/jcjops_nginx46.sh {golive|rollback|list 提示:如果回滚前请查看列表} \033[0m”
  105. exit
  106. ;;
  107. esac
  108.  

shell 上线脚本(跳板机部署版)

转载请注明:SuperIT » shell 上线脚本(跳板机部署版)

喜欢 (0)or分享 (0)