服务器自动化部署脚本
创始人
2024-09-25 03:23:12
0

在服务器上解压和更新项目包的自动化部署脚本

在现代软件开发中,自动化部署成为了提升工作效率的重要手段。今天,我们将讨论一段用于在服务器上解压项目包并更新服务的脚本。这段脚本封装了一系列操作,旨在简化部署过程,减少人为错误的发生。

脚本概述

脚本的功能主要包括:

  1. 下载指定的压缩包文件。
  2. 解压缩文件到指定目录。
  3. 复制相关文件至目标服务路径。
  4. 关闭正在运行的服务进程。
  5. 启动新的服务进程。

接下来,我们逐步解析脚本的每一个部分。

脚本代码

#!/bin/sh   #压缩包文件名   fileName=dn-planning20240827V1.zip    #拉取上传文件   wget -P /tmp http://文件服务器IP:端口/file_back/rest/ftpFileController/down/${fileName}    #系统服务路径   projectPath=/home/appuser/run/dn-server    echo "复制"${fileName}   mv /tmp/${fileName} /home/appuser/backup    echo "解压压缩包"${fileName}   unzip -O GBK -o /home/appuser/backup/${fileName} -d /home/appuser/backup    cp -R /home/appuser/backup/dn-planning/template/* /${dataPath}/template   echo "复制jar包到"${dataPath}"路径下"   cp /home/appuser/backup/dn-planning/dn-planning.jar /${dataPath}    echo "关闭服务进程"   # 根据端口号杀死进程   netstat -nlp | grep :8081 | grep -v grep | awk '{print $7}' | awk -F '/' '{print $1}' | xargs kill -9    echo "更新项目"   nohup java -Xms4096m -Xmx12288m -jar -Dserver.port=8081 -Dspring.profiles.active=dev ${projectPath}/dn-planning.jar 2>&1 &   

脚本详细解析

  1. 文件名定义

    fileName=dn-planning.zip   

    这行定义了要下载和解压缩的压缩包文件名。

  2. 下载压缩包:(事先需把要发布的项目压缩包上传到文件服务器指定目录下)

    wget -P /tmp http://文件服务器IP:端口/file_back/rest/ftpFileController/down/${fileName}   

    使用wget命令从指定的URL下载文件,并将其存储在/tmp目录下。

  3. 定义服务路径

    projectPath=/home/appuser/run/dn-server   

    指定了服务的运行路径,以便后续文件操作使用。

  4. 移动文件到备份目录

    mv /tmp/${fileName} /home/appuser/backup   

    将下载的文件移动到备份目录以进行解压缩。

  5. 解压缩文件

    unzip -O GBK -o /home/appuser/backup/${fileName} -d /home/appuser/backup   

    使用unzip解压缩文件,并将内容存储在备份目录中。-O GBK选项确保了中文文件名的正确显示。

  6. 复制模板文件

    cp -R /home/appuser/backup/dn-planning/template/* /${projectPath}/template   

    从解压的文件中复制模板文件到服务的模板目录。

  7. 复制JAR包

    cp /home/appuser/backup/dn-planning/dn-planning.jar /${projectPath}   

    将JAR包复制到服务运行目录,准备启动服务。

  8. 杀死旧服务进程

    netstat -nlp | grep :8081 | grep -v grep | awk '{print $7}' | awk -F '/' '{print $1}' | xargs kill -9   

    通过查找占用8081端口的进程,并使用kill -9命令强制终止,以避免冲突。

    PS: 这段脚本的作用是查找并强制杀掉正在使用8081端口的进程。下面是对这段命令的详细分解:

    1. netstat -nlp: 这个命令用于显示网络连接状态。选项说明:

      • -n: 以数字格式显示地址和端口号。
      • -l: 只显示在监听状态的服务。
      • -p: 显示该连接对应的进程ID(PID)和程序名称。
    2. grep :8081: 从netstat的输出中筛选出使用8081端口的行。

    3. grep -v grep: 排除掉包含“grep”这个词的行,避免匹配到当前的grep命令本身。

    4. awk '{print $7}': 从筛选出的结果中提取第7列,通常这一列包含相应进程的PID和程序名称。

    5. awk -F '/' '{print $1}': 以斜杠(/)为分隔符,从中提取出PID部分。

    6. xargs kill -9: 将提取到的PID作为参数传给kill -9命令,强制终止这些进程。-9代表强制杀死进程,无论其状态如何。

    总结:
    这段脚本的最终效果是:找到所有当前占用8081端口的进程,并将其强制终止。请谨慎使用此命令,确保不会不小心终止重要的进程。

  9. 启动新服务进程

    nohup java -Xms4096m -Xmx12288m -jar -Dserver.port=8081 -Dspring.profiles.active=dev /${projectPath}/dn-planning.jar 2>&1 &   

    使用nohup命令在后台启动Java服务,并指定JVM参数以及运行的JAR包。

结论

这段脚本通过简单而有效的步骤,实现了在服务器上自动化解压和部署项目包的过程。自动化部署不仅提高了工作效率,也减少了人为错误的风险。在今后的开发过程中,可以根据项目需求对脚本进行扩展和优化,以适应不同的部署场景。

希望这篇博客能为你的自动化部署提供一些灵感和帮助!如有任何问题或想法,欢迎在评论区分享。

相关内容

热门资讯

透视代打!德州大菠萝摆牌攻略,... 【福星临门,好运相随】;透视代打!德州大菠萝摆牌攻略,wepoker有辅助吗(详细辅助可靠技巧);暗...
wepoke智能ai!wpk怎... wepoke智能ai!wpk怎么玩胜率高,(WEPOke)本来真的是有挂(有挂攻略);科技安装教程;...
透视辅助!河南微乐小程序辅助器... 透视辅助!河南微乐小程序辅助器免费(辅助挂)本来存在有挂(详细辅助力荐教程)1、打开软件启动之后找到...
wepokeai代打的胜率!h... wepokeai代打的胜率!hm3德州辅助,(wepOke)本然有挂(有挂透明);wpk透视辅助官方...
透视存在!HH德州pk机器人多... 德扑之星透视软件作弊挂赢率提升策略‌;透视存在!HH德州pk机器人多吗,德扑之星透视软件作弊挂(详细...
透视辅助!新蜜瓜大厅免费控制器... 透视辅助!新蜜瓜大厅免费控制器(辅助挂)其实存在有挂(详细辅助细节方法)新蜜瓜大厅免费控制器辅助器中...
WePoKe外 挂!wpk外挂... WePoKe外 挂!wpk外挂是真的还是,(WEPOKE)竟然存在有挂(有挂攻略);《WPK辅助透视...
透视玄学!wePoKer有透视... 透视玄学!wePoKer有透视软件吗,poker透视挂(详细辅助微扑克教程);wePoKer有透视软...
透视辅助!四川点点长牌系统(辅... 透视辅助!四川点点长牌系统(辅助挂)原来真的有挂(详细辅助攻略方法);1)四川点点长牌系统辅助挂:进...
wepoke是真的有挂!wep... 【福星临门,好运相随】;wepoke是真的有挂!wepoke ai,(wepOkE)起初是真的有挂(...