当前位置: 首页 > news >正文

【最新版】Spring Boot 项目打包部署到服务器

文章目录

    • 一、创建定时任务
    • 二、打包项目
    • 三、拷贝到服务器
    • 四、服务器配置
      • 1. 检查版本
      • 2. 安装 Java 17
      • 3. 配置 Java 环境变量
    • 五、编写脚本
      • 1. 启动脚本
      • 2. 停止脚本
      • 3. 运行脚本
      • 4. 查看日志


一般把 Java 项目部署到服务器上,无非就是通过:Jenkins、Docker,这里给大家说一种我常用的 Shell 脚本。

一、创建定时任务

使用 Spring 的 @Scheduled 注解创建了一个定时任务

@Scheduled(cron = "0 0 8-22/2 * * MON-FRI")
public void processScheduledKidData()
{processAllKidData();
}

cron 表达式解析:

  • 分钟:0(每小时的第 0 分钟)
  • 小时:8 - 22(上午 8 点到晚上 10 点),每 2 小时执行一次
  • 日期:每月任意天
  • 月份:每月
  • 星期:周一到周五

因此,这个任务会在周一至周五的上午 8 点、10 点、中午 12 点、下午 2 点、4 点、6 点、晚上 8 点、10 点各执行一次。

或者可以使用 fixedRate(适合任务执行时间短的场景)

@Scheduled(fixedRate = 1800000L) // 1800000毫秒 = 30分钟
public void test() {func();
}

除此之外,用 fixedDelay 也可以

@Scheduled(fixedDelay = 1000*60*10L) //每10分钟执行一次
public void processScheduledKidData()
{processAllKidData();
}

来看看它们的区别:

类型触发机制并行性任务超时处理适用场景
fixedDelay任务结束后等待指定时间延迟启动下一次任务任务执行时间不稳定,需稳定间隔
fixedRate固定频率触发(不管任务状态)可能直接启动新任务短任务,需严格频率控制
cron基于表达式精确触发跳过错过的时间点复杂时间模式(如工作日、整点执行)

二、打包项目

在打包项目之前,记得把 test 目录里面的测试类方法的代码给注释掉,不然会打包很久。

在这里插入图片描述

然后在 IDEA 右侧窗口的 maven 图标中,依次执行 cleanpackage 命令

在这里插入图片描述

在项目中的 targe 目录下可以看到最终打包项目生成的 jar 包。

在这里插入图片描述

三、拷贝到服务器

在 window 下打开终端,然后用下面的命令把 jar 包拷贝到你服务器创建的目录下:

scp D:\01java本地代码\EngStudy-0.0.1-SNAPSHOT.jar  admin@ServerIP:/home/admin/enstudyAi

在这里插入图片描述

四、服务器配置

1. 检查版本

在终端中运行以下命令来查看当前安装的 Java 版本

java -version

在这里插入图片描述

2. 安装 Java 17

我 IDEA 和 服务器配置的都是 Java 17。

如果你使用的是 Ubuntu 或 Debian 系统,可以使用以下命令安装 OpenJDK 17:

sudo apt update
sudo apt install openjdk-17-jdk

如果你使用的是 CentOS 或 RHEL 系统,可以使用以下命令安装 OpenJDK 17:

sudo yum install java-17-openjdk-devel

3. 配置 Java 环境变量

安装完成后,需要配置 JAVA_HOME 环境变量。打开 ~/.bashrc~/.bash_profile 文件,并添加以下内容:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH

保存文件后,运行以下命令使配置生效:

source ~/.bashrc

此时可以在已安装的多个 Java 版本中切换 Java 17 版本(一般默认就好)

sudo update-alternatives --config java

在这里插入图片描述

五、编写脚本

1. 启动脚本

start.sh

#!/bin/bash
nohup java  -jar EngStudy-0.0.1-SNAPSHOT.jar --server.port=15924 >/dev/null 2>&1 &
echo $!>pid

这段 bash 脚本的主要作用是启动一个基于 Java 的应用程序(这里是 EngStudy-0.0.1-SNAPSHOT.jar),并将其放到后台运行,同时把该进程的 PID(进程标识符)保存到当前目录下名为 pid 的文件中。

2. 停止脚本

stop.sh

#!/bin/bash
appName=EngStudy-0.0.1-SNAPSHOT.jar
kill -9 `pgrep -f ${appName}`
time=`date +%Y%m%d%H%M%S`
mkdir backup
cp ${appName} backup/${appName}_$time.jar
find backup -mtime +3 -delete

这段 bash 脚本主要用于停止正在运行的 EngStudy-0.0.1-SNAPSHOT.jar 应用程序,然后创建一个备份目录,将当前的应用程序 JAR 文件备份到该目录下,并给备份文件添加时间戳后缀,最后会自动删除备份目录中超过 3 天的旧备份文件。

3. 运行脚本

直接运行 start.sh 即可

sh start.sh

4. 查看日志

回到 IDEA 中,看一下咱们设置的日志文件的位置,我这里是 /tmp/spring.log

在这里插入图片描述

然后使用下面的命令,直接显示 /tmp/spring.log 文件的最后 300 行内容,并且实时跟踪文件的更新。

tail -n 300 -f /tmp/spring.log

这里的 -n 选项明确指定了要显示的行数为 300,-f 选项则用于实时跟踪文件的更新。

http://www.dtcms.com/a/269008.html

相关文章:

  • 【配置+图解Android各种版本配置】
  • V8 主要版本与对应 ECMAScript 支持
  • 2025 API 开发管理工具 Apipost 与 Apifox 全维度对比
  • CentOS-7-x86_64解决:使用NAT模式无法ping通www.baidu.com或无法ping 8.8.8.8问题。
  • 防火墙防御DDoS攻击能力分析
  • AI 智能体记忆系统关键技术
  • vite打包的简单配置
  • 构建一个vue2的项目并安装echarts
  • 【机器学习笔记 Ⅲ】1 无监督学习
  • 讯飞结合kimi辅助文章博客写作
  • 如何解决微信小程序出现两个下拉刷新样式?
  • 【论文阅读】Dynamic Few-Shot Visual Learning without Forgetting
  • 科目一小述(二之前)
  • Git安装避坑指南
  • 深入理解 React 单向数据流:构建高效、可维护的组件架构
  • 石子入水波纹效果:UV扰动着色器实现
  • Vue 配置打包后可编辑的变量
  • UI前端大数据处理性能提升:分布式架构下的数据处理优化
  • 数字人源码部署流程分享--- PC+小程序融合方案
  • 【MyBatis】XML实现,配置方法和增、删、改、查
  • 深入解析密集矩阵与稀疏矩阵:概念、应用与代码实战
  • 【人工智能】ChatGPT、DeepSeek-R1、DeepSeek-V3 辨析
  • 音频信号的预加重:提升语音清晰度
  • 【Netty进阶】Netty的进阶与实战
  • 【C语言】const、volatile、restrict、static四大关键字学习笔记
  • 沉浸式视频的未来:MV-HEVC与3D-HEVC技术深度解析
  • 图像处理基础:镜像、缩放与矫正
  • 语音交互新纪元:Hugging Face LeRobot如何让机器人真正“懂你”
  • C++基础问题
  • GTA(传承/增强)1.71-3570环境补丁