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

结论

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

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

相关内容

热门资讯

第3分钟指南!奕乐贵州麻将开挂... 第3分钟指南!奕乐贵州麻将开挂版软件,葫芦娃辅助修改器下载,2025新版教程(有挂方式)-哔哩哔哩1...
透视存在!wepoker怎么买... 透视存在!wepoker怎么买辅助(透视)本来有挂,科技教程(有挂必胜)-哔哩哔哩亲,关键说明,we...
透视透视!werplan外卦神... 透视透视!werplan外卦神器,德普辅助器怎么用,模块教程(发现有挂)-哔哩哔哩1、下载好德普辅助...
第七分钟教你!hhpoker有... 第七分钟教你!hhpoker有没有辅助辅助(透视)确实真的是有挂,攻略方法(详细教程)-哔哩哔哩一、...
第九分钟步骤!决战卡五星辅助修... 第九分钟步骤!决战卡五星辅助修改器,南昌微乐自建房辅助,教你攻略(竟然有挂)-哔哩哔哩小薇(透视辅助...
透视好友房!wepoker透视... 透视好友房!wepoker透视方法(透视)果然是真的挂,新2025版(有挂开挂)-哔哩哔哩1、点击下...
透视app!sohoo辅助,w... 透视app!sohoo辅助,wepoker免费透视脚本,教程书教程(有挂秘笈)-哔哩哔哩暗藏猫腻,小...
第四分钟解迷!hh poker... 第四分钟解迷!hh poker软件(透视)真是是有挂,解密教程(有挂技术)-哔哩哔哩1、hh pok...
第1分钟讲义!九九山城万州辅助... 第1分钟讲义!九九山城万州辅助,决战卡五星辅助源码,黑科技教程(有挂透明挂)-哔哩哔哩1、决战卡五星...
透视规律!aapoker辅助器... 透视规律!aapoker辅助器是真的吗,wepoker有人用过吗,演示教程(存在有挂)-哔哩哔哩1、...