服务器自动化部署脚本
创始人
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包。

结论

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

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

相关内容

热门资讯

微乐兰州麻将小程序辅助!微乐小... 微乐兰州麻将小程序辅助!微乐小程序黑科技(透视)工具-都是必备真的是有挂1、金币登录送、破产送、升级...
8分钟辅助!微信小程序微乐破解... 8分钟辅助!微信小程序微乐破解器2024,微乐小程序黑科技,办法教程(有挂下载)-哔哩哔哩微信小程序...
透视透视!微乐小程序免费黑科技... 透视透视!微乐小程序免费黑科技,微乐自建房脚本下载(透视)果然真的是有挂(哔哩哔哩)该软件可以轻松地...
第8分钟辅助!微乐自建房辅助免... 第8分钟辅助!微乐自建房辅助免费入口,微乐小程序免费黑科技,课程教程(有挂神器)-哔哩哔哩1、用户打...
微乐小程序脚本!微乐小程序免费... 微乐小程序脚本!微乐小程序免费黑科技(透视)脚本-原来有挂是有挂1、金币登录送、破产送、升级送、活动...
长期以来!微乐小程序黑科技,微... 长期以来!微乐小程序黑科技,微乐小程序黑科技免费知乎(透视)总是真的是有挂(哔哩哔哩)1)微乐小程序...
第四分钟插件!微信小程序微乐挂... 第四分钟插件!微信小程序微乐挂如何获取,微乐小程序黑科技,手筋教程(有挂软件)-哔哩哔哩1、该软件可...
小程序微乐陕西挖坑辅助!微乐小... 小程序微乐陕西挖坑辅助!微乐小程序黑科技(透视)app-本来解谜真的是有挂1、金币登录送、破产送、升...
第三方辅助挂!微乐小程序免费黑... 第三方辅助挂!微乐小程序免费黑科技,微乐小程序多功能修改器(透视)其实是有挂(哔哩哔哩)1、超多福利...
6分钟脚本!微乐如何自己建脚本... 6分钟脚本!微乐如何自己建脚本,微乐小程序黑科技,手册教程(有挂脚本)-哔哩哔哩1、点击下载安装,微...