登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Spring Boot 项目部署与开机自启详解
Spring Boot 项目部署与开机自启详解
[ 复制链接 ]
胥望雅
6 天前
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
Spring Boot 项目有两种部署方式:
推荐:直接运行 JAR 包
(无需安装外部 Tomcat,Spring Boot 内嵌容器,配置更简单);
WAR 包部署
(需禁用内嵌 Tomcat,适配外部 Tomcat)。
下面优先讲更简单的
JAR 包部署+开机自启
,再补充 WAR 包适配要点。
方式1:Spring Boot JAR 包部署(推荐)
前提
本地已将 Spring Boot 项目打包为 xxx.jar(可通过 mvn clean package 或 IDE 打包);
服务器已安装 Java 17(你已完成)。
步骤1:上传 JAR 包到服务器
# 创建应用目录(规范管理)
sudo mkdir -p /opt/springboot-app
# 上传 JAR 包(替换为你的 JAR 包名和服务器IP)
scp your-app.jar admin@你的服务器IP:/opt/springboot-app/
# 给 JAR 包执行权限
sudo chmod +x /opt/springboot-app/your-app.jar
复制代码
步骤2:创建 systemd 服务文件(开机自启核心)
sudo nano /etc/systemd/system/springboot-app.service
复制代码
粘贴以下配置(根据你的实际情况修改):
[Unit]
Description=Spring Boot Application
After=network.target # 网络启动后再启动应用
[Service]
# 运行用户(避免 root 运行,提升安全性)
User=admin
Group=admin
# 应用目录
WorkingDirectory=/opt/springboot-app
# Java 启动命令(指定 JAR 包,配置 JVM 参数)
ExecStart=/usr/bin/java -jar /opt/springboot-app/your-app.jar \
-Xms512M -Xmx1024M # JVM 内存配置,根据服务器配置调整
# 重启策略(异常退出时自动重启)
Restart=on-failure
RestartSec=5 # 重启间隔 5 秒
# 日志输出(可选,也可依赖 Spring Boot 自身日志)
StandardOutput=append:/opt/springboot-app/app.log
StandardError=append:/opt/springboot-app/app-error.log
[Install]
WantedBy=multi-user.target # 多用户模式下开机自启
复制代码
保存退出(Ctrl+O → 回车 → Ctrl+X)。
步骤3:配置并启动服务
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启动应用服务
sudo systemctl start springboot-app
# 设置开机自启
sudo systemctl enable springboot-app
# 查看服务状态(确认是否启动成功)
sudo systemctl status springboot-app
复制代码
如果状态显示 active (running),说明启动成功。
步骤4:验证应用访问
访问 http://你的服务器IP:应用端口/接口路径(端口是你 Spring Boot 配置的 server.port,默认 8080),能正常访问接口即部署成功。
方式2:Spring Boot WAR 包部署(适配外部 Tomcat)
如果必须用 WAR 包部署到外部 Tomcat,需要先修改 Spring Boot 项目代码,再按之前的 Tomcat 部署步骤操作:
步骤1:本地项目修改(关键适配)
修改 pom.xml
:
<packaging>war</packaging>
<dependency>
<groupId>org.springframework.boot</groupId>
spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
spring-boot-starter-web</artifactId>
</dependency>
复制代码
修改启动类
:
让启动类继承 SpringBootServletInitializer 并重写 configure 方法:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class YourAppApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(YourAppApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(YourAppApplication.class, args);
}
}
复制代码
打包 WAR 包
:
执行 mvn clean package,生成的 WAR 包在 target 目录下。
步骤2:服务器部署
按之前给你的 Tomcat 部署步骤操作:
将 WAR 包上传到 Tomcat 的 webapps 目录;
配置 Tomcat 的 systemd 服务并设置开机自启;
访问路径:http://服务器IP:Tomcat端口/WAR包名/接口路径。
常用运维命令
# 重启 Spring Boot 应用
sudo systemctl restart springboot-app
# 停止应用
sudo systemctl stop springboot-app
# 查看应用日志(Spring Boot 自身日志,默认在应用目录下)
tail -f /opt/springboot-app/logs/xxx.log # 或你配置的日志路径
# 查看系统服务日志
journalctl -u springboot-app -f
复制代码
总结
推荐方案
:Spring Boot 优先用
JAR 包部署
,无需外部 Tomcat,通过 systemd 配置服务即可实现开机自启,步骤更简单;
WAR 包适配
:需修改项目 pom.xml(禁用内嵌 Tomcat)和启动类(继承 SpringBootServletInitializer),再部署到外部 Tomcat;
自启核心
:通过 systemd 服务文件配置 ExecStart 启动命令、Restart 重启策略,执行 enable 开启开机自启。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Spring
Boot
项目
部署
开机
相关帖子
开源项目分享:Gitee热榜项目 2025年12月第四周 周榜
Spring AOP + Guava RateLimiter:我是如何用注解实现优雅限流的?
Figma不支持本地部署?国内企业如何选UI设计工具(附方案对比)
docker-compose 部署单节点 kafka 4.0 测试环境
Spring Boot Pf4j模块化能力设计思考
独立开发者的一周:把生活和项目都推进一点点
海豚调度DolphinScheduler 和 Spring Cloud Data Flow 对比
Spring Cloud生态地图——注册、配置、网关、负载均衡与可观测的组合拳
ComfyUI Docker 镜像部署指南
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
开源项目分享:Gitee热榜项目 2025年12月第四周 周榜
0
939
雨角
2025-12-29
业界
Spring AOP + Guava RateLimiter:我是如何用注解实现优雅限流的?
0
937
热琢
2025-12-29
安全
Figma不支持本地部署?国内企业如何选UI设计工具(附方案对比)
0
134
恶凝毛
2025-12-29
业界
docker-compose 部署单节点 kafka 4.0 测试环境
0
914
左优扬
2025-12-29
业界
Spring Boot Pf4j模块化能力设计思考
1
981
辜酗徇
2025-12-30
业界
独立开发者的一周:把生活和项目都推进一点点
0
523
榕闹
2025-12-31
业界
海豚调度DolphinScheduler 和 Spring Cloud Data Flow 对比
1
849
嫁吱裨
2025-12-31
安全
Spring Cloud生态地图——注册、配置、网关、负载均衡与可观测的组合拳
1
995
琉艺戕
2025-12-31
安全
ComfyUI Docker 镜像部署指南
0
315
袁勤
2026-01-01
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
胥望雅
6 天前
关注
0
粉丝关注
22
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994891
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9994
6
宋子
9978
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9947
查看更多
今日好文热榜
191
如何编写figma插件
805
2026年北京陪诊机构排行
834
Ruoyi框架 | 扩展部门数据权限实现
244
2025再见,码农当自强,47岁尚能饭否
165
在 Web 前端实现流式 TTS 播放
186
2025年终总结——在奔跑中前行
137
吴恩达深度学习课程四:计算机视觉 第四周
232
一个关于时间、节奏和前端动画的小实验:新
301
实用程序:解放双手!Python 打造 PDF 手写
218
Perigon.CLI 10.0 重磅发布【AspNetCore开
206
MongoDB 详解、应用场景及案例分析(AI)
391
RL 策略优化 (4.2章节)
65
0基础转行产品经理:墨刀还是Axure?从背景
621
springboot~传统WEB应用开启CSRF
55
BI报表及可视化分析类工具使用经验总结(下
315
ComfyUI Docker 镜像部署指南
267
国内直连GPT、Claude和Gemini?N8N这次更新
481
2026 年 PHP 开发者进阶 快速高效开发学习
535
TryHackMe-SOC-Section 5:网络钓鱼分析
50
【踩坑】Roslyn 5与VS2022——不散的红色浪