Spring Boot 项目打包 + Shell 脚本部署详细总结

Spring Boot 项目打包 + Shell 脚本部署详细总结

在现代企业应用开发中,Spring Boot项目的自动化部署是一个非常重要的环节。通过自动化部署,我们可以减少人为操作带来的错误,提高部署效率和可靠性。本文将详细介绍如何将Spring Boot项目打包,并通过Shell脚本进行自动化部署。

一、Spring Boot 项目打包

1.1 准备工作

在开始打包之前,我们需要确保以下条件:

  1. 已经安装了JDK和Maven。
  2. 已经配置好了Spring Boot项目,并且可以通过mvn clean install命令进行构建。

1.2 配置pom.xml

pom.xml文件中添加Spring Boot Maven插件,以便我们可以打包为一个可执行的JAR文件。

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

1.3 打包项目

在项目根目录下运行以下命令,将Spring Boot项目打包为一个可执行的JAR文件:

mvn clean package

执行上述命令后,会在target目录下生成一个*.jar文件,例如myapp-0.0.1-SNAPSHOT.jar

二、编写Shell脚本进行自动化部署

为了实现自动化部署,我们需要编写一个Shell脚本,该脚本将执行以下操作:

  1. 停止正在运行的旧版本应用。
  2. 备份旧版本应用。
  3. 部署新版本应用。
  4. 启动新版本应用。

2.1 创建部署目录

在服务器上创建一个目录,用于存放部署脚本和应用包。例如:

mkdir -p /opt/myapp

将打包生成的JAR文件上传到该目录。

2.2 编写部署脚本

/opt/myapp目录下创建一个名为deploy.sh的Shell脚本,并添加以下内容:

#!/bin/bash# 部署目录
APP_DIR="/opt/myapp"
# 应用名称
APP_NAME="myapp"
# 应用版本
APP_VERSION="0.0.1-SNAPSHOT"
# JAR 文件名
JAR_NAME="$APP_NAME-$APP_VERSION.jar"
# 备份目录
BACKUP_DIR="$APP_DIR/backup"
# 日志文件
LOG_FILE="$APP_DIR/$APP_NAME.log"# 创建备份目录
mkdir -p $BACKUP_DIR# 停止正在运行的旧版本应用
echo "Stopping old application..."
pid=$(ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; thenkill -9 $pidecho "Application stopped."
elseecho "No running application found."
fi# 备份旧版本应用
echo "Backing up old application..."
if [ -f "$APP_DIR/$JAR_NAME" ]; thenmv $APP_DIR/$JAR_NAME $BACKUP_DIR/$JAR_NAME.$(date +%Y%m%d%H%M%S)echo "Backup completed."
elseecho "No application to backup."
fi# 部署新版本应用
echo "Deploying new application..."
cp $APP_DIR/$JAR_NAME .# 启动新版本应用
echo "Starting new application..."
nohup java -jar $JAR_NAME > $LOG_FILE 2>&1 &echo "Deployment completed."

2.3 设置脚本权限

确保脚本具有可执行权限:

chmod +x /opt/myapp/deploy.sh

2.4 运行部署脚本

/opt/myapp目录下运行以下命令,执行部署脚本:

./deploy.sh

三、验证部署

在运行部署脚本之后,可以通过以下命令验证应用是否启动成功:

ps -ef | grep myapp-0.0.1-SNAPSHOT.jar

此外,还可以查看日志文件/opt/myapp/myapp.log,确认应用是否正常启动。

四、总结

通过本文的介绍,我们详细讲解了如何将Spring Boot项目打包为可执行的JAR文件,并通过Shell脚本实现自动化部署的过程。通过自动化部署,我们可以大大减少手动操作带来的风险,提高部署效率和可靠性。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么C#越学越陌生,搞那么多奇怪的东西?

绝大多数编程语言&#xff0c;除了基础语法&#xff0c;其他的都是可选的工具&#xff0c;可用可不用&#xff0c;顺手你就用&#xff0c;不顺手就别用。 刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点…

啥是多边央行数字货币桥项目(个人技术理解)

&#xff08;1&#xff09;是啥&#xff1a;是基于CBDC&#xff08;央行发行的电子货币&#xff09;的跨境支付互联互通的一种尝试&#xff0c;是点对点的交易。交易时商业银行作为同步节点&#xff08;点对点转账中的点&#xff09;&#xff0c;央行作为共识节点&#xff08;点…

vue3第三十八节(TS 之 class 类实现及使用)

引言&#xff1a;面相对象编程在我们工作中必须同时也是不可或缺的一部分&#xff0c;想要对JavaScript | TypeScript 有更加深刻的理解应用&#xff0c;我们需要充分学习应用 1、类的基本用途 在TS中 类描述了所创建的对象共同的属性和方法。TypeScript 支持面向对象的所有特…

钉钉二次开发-企业内部系统集成官方OA审批流程

场景&#xff1a;企业内部开发人员不足&#xff0c;需要从以前集成Activiti的方式转换成集成钉钉官方OA审批流程&#xff0c;提高开发效率和系统稳定性。 摘要&#xff1a;企业内部系统集成Acitiviti开源工作流存在的问题&#xff1a; 1. 企业需要单独搭建工作流服务&#xff…

服务器数据恢复—强制上线raid5阵列离线硬盘导致raid不可用的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌2850服务器中有一组由6块SCSI硬盘组建的raid5磁盘阵列&#xff0c;linux操作系统ext3文件系统。 服务器故障&#xff1a; 服务器运行过程中突然瘫痪。服务器管理员检查阵列后发现raid5阵列中有两块硬盘离线&#xff0c;将其中一块硬盘进行…

2种方法!一键批量下载1688主图、sku图、视频和详情页

最近关于如何一键下载1688主图、sku图、视频和详情页相关的问题被商友们问爆了。店雷达直接上实操教程&#xff0c;建议收藏&#xff0c;不迷路&#xff01; 方法一&#xff1a;通过选品中心下载 1、在店雷达选品中心&#xff08;如果想在1688进货的就在1688选品库中选品&…

视频监控管理平台LntonCVS视频汇聚平台充电桩视频监控应用方案

随着新能源汽车的广泛使用&#xff0c;公众对充电设施的安全性和可靠性日益重视。为了提高充电桩的安全管理和站点运营效率&#xff0c;LntonCVS公司推出了一套全面的新能源汽车充电桩视频监控与管理解决方案。 该方案通过安装高分辨率摄像头&#xff0c;对充电桩及其周边区域进…

Python中zip函数的奥秘与运用

Python中zip函数的奥秘与运用 在Python的编程世界中&#xff0c;zip函数如同一把神秘而强大的钥匙&#xff0c;能够开启数据处理的新境界。它的功能看似简单&#xff0c;但深入探究后&#xff0c;你会发现其中蕴含的奥秘与运用之广泛&#xff0c;足以让人惊叹。 四个方面&…

html5实现端午节网站源码

文章目录 1.设计来源1.1 端午首页页面1.2 端午由来页面1.3 端午图集页面1.4 端午活动页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/139524377 ht…

MYTED | TED100篇打卡总结 辅助学习网站使用说明

文章目录 &#x1f4da;背景&#x1f407;timeline&#x1f407;版本记录&#x1f407;产出小结 &#x1f4da;功能说明&#x1f407;左侧&#x1f407;中间&#x1f407;右侧 &#x1f4da;背景 &#x1f407;timeline 在一个平常的下午&#xff0c;一次平常的桌面整理&#…

软考对进入事业编的人有帮助吗?

首先肯定的说&#xff0c;软考是可以用来评职称的。 但是&#xff0c; 这取决于你所在公司的性质和工作岗位。 软考全国统一实施后&#xff0c;不再进行计算机技术与软件相应专业和级别的专业技术职务任职资格评审工作。计算机软件资格考试既是职业资格考试&#xff0c;又是…

代理记账公司的标准,理解并遵循业务流程和道德规范

代理记账公司的存在是为了帮助企业管理和报告他们的财务信息&#xff0c;他们为企业的各种交易提供会计服务&#xff0c;并确保企业遵守所有相关的法规和准则&#xff0c;这些公司需要严格地符合一些标准以维持良好的声誉和服务质量。 代理人必须拥有适当的证书和执照&#xff…

硬光敏的程序实现

硬光敏的程序实现通常涉及到使用物理光敏元件&#xff0c;如光敏电阻或光敏二极管&#xff0c;来检测环境光照强度。然后&#xff0c;根据检测到的光照强度来控制其他设备&#xff0c;例如补光灯或摄像头的红外滤镜。以下是一个简化的硬光敏程序实现的示例流程&#xff0c;使用…

迅为RK3562开发板ARM四核A53核心板瑞芯微国产人工智能Linux安卓

iTOP-3562开发板采用瑞芯微RK3562处理器&#xff0c;内部集成了四核A53Mali G52架构&#xff0c;主频2GHZ&#xff0c;内置1TOPSNPU算力&#xff0c;RK809动态调频。支持OpenGLES1.1/2.0/3.2、0penCL2.0、Vulkan 1.1内嵌高性能2D加速硬件。 内置独立NPU, 算力达 1TOPS,可用于轻…

浅谈IDEA中项目如何进行热部署

文章目录 一、什么是热部署&#xff1f;二、配置过程2.1、社区版IDEA2.2、专业版IDEA 一、什么是热部署&#xff1f; 热部署&#xff1a;当代码修改时&#xff0c;IDEA自动帮忙重新加载项目&#xff0c;无需手动加载。 二、配置过程 2.1、社区版IDEA 1、添加热部署框架 &l…

监控易监测对象及指标之:全面监控神通数据库

随着企业信息化建设的不断深入&#xff0c;数据库作为存储和管理核心数据的关键基础设施&#xff0c;其稳定性和性能直接关系到业务的连续性和企业的运营效率。神通数据库作为国产数据库的一种&#xff0c;因其出色的性能和稳定性而受到了广泛关注。 为了确保神通数据库的稳定运…

Docker 学习总结(83)—— 配置文件daemon.json介绍及优化建议

一、daemon.json 文件概述 daemon.json是Docker守护进程的配置文件,它允许系统管理员自定义Docker守护程序的行为。此文件通常位于/etc/docker/目录下。通过修改daemon.json,可以调整Docker守护进程的多种设置,包括网络配置、日志记录、存储驱动等。 二、daemon.json 文件结…

PyTorch交叉熵理解

PyTorch 中的交叉熵损失 CrossEntropyLoss PyTorch 中使用CrossEntropyLoss 计算交叉熵损失&#xff0c;常用于分类任务。交叉熵损失衡量了模型输出的概率分布与实际标签分布之间的差异&#xff0c;目标是最小化该损失以优化模型。 我们通过一个具体的案例来详细说明 CrossE…

Unity编辑器扩展-番外篇-Gizmos基础-物体如何在球面上移动

目录 一、本节目标效果展示 二、先画出素材 1.先新建一个普通的代码 2.画素材&#xff08;一个头&#xff0c;两个耳朵&#xff0c;一个鼻子&#xff09; a.关于贴心的Unity b.开始画素材 三、了解移动的原理 四、辅助物体的建立 五、画左耳朵 六、全部代码 七、作者的…

Ceph入门到精通-Ceph OSD 磁盘在系统重启后无法识别处理步骤

如果Ceph OSD磁盘在系统重启后无法识别,你可以按照以下步骤进行检查和解决: 1. 检查硬件状态 物理检查:首先进行物理检查,确保磁盘没有物理损坏,数据线和电源线连接正常。S.M.A.R.T状态:使用smartctl命令检查磁盘的S.M.A.R.T状态,以确定是否有硬件问题。2. 确认磁盘识别…