登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Spring Boot 项目部署与开机自启详解
Spring Boot 项目部署与开机自启详解
[ 复制链接 ]
胥望雅
昨天 16:15
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
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
项目
部署
开机
相关帖子
用 AI Vibe Coding - word-cards 自部署 TTS + Vercel 部署实践
VMware VCSA 8.0.3部署教程 + AD接入
VMware VCSA 8.0.3部署教程 + AD接入
在 Kubernetes 中部署 LiteLLM
服务云部署
推荐8个牛逼的SpringBoot项目
Spring Boot整合Sentinel之QPS限流
Spring Boot整合Sentinel之流量控制入门
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
用 AI Vibe Coding - word-cards 自部署 TTS + Vercel 部署实践
0
955
搜娲瘠
2025-12-24
业界
VMware VCSA 8.0.3部署教程 + AD接入
1
541
公西颖初
2025-12-25
业界
VMware VCSA 8.0.3部署教程 + AD接入
0
295
姘轻拎
2025-12-25
业界
在 Kubernetes 中部署 LiteLLM
0
496
铜坠匍
2025-12-26
安全
服务云部署
0
7
谷江雪
2025-12-26
业界
推荐8个牛逼的SpringBoot项目
0
6
毕余馥
2025-12-26
业界
Spring Boot整合Sentinel之QPS限流
0
488
疝镜泛
2025-12-27
安全
Spring Boot整合Sentinel之流量控制入门
0
565
存叭
2025-12-28
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
胥望雅
昨天 16:15
关注
0
粉丝关注
22
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9996
6
宋子
9979
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9948
查看更多
今日好文热榜
565
Spring Boot整合Sentinel之流量控制入门
678
如何使用『页脚HTML代码』-实现自推广 -『A
488
Spring Boot整合Sentinel之QPS限流
895
红米AX6 扩容 刷Uboot+openwrt 经历
327
总结 Next.js 中的 Server Actions
374
Python 潮流周刊#133:为什么要多读技术博
426
规划中主要使用的曲线类型
376
Sidecar不就是在Pod里多跑一个容器吗!
603
基于莱布尼茨公式的编程语言计算性能基准测
547
AI生成原创歌曲真的来了!支持19种语言,还
987
从快手直播故障,看全景式业务监控势在必行
795
SP100 BABTWR - Tower of Babylon
181
Spring Boot 项目部署与开机自启详解
872
DolphinScheduler 工作原理与使用指南
743
别让你的密钥在互联网上“裸奔”!用 pytho
389
【面试题】详细描述一条 SQL 语句在 MySQL
42
大模型榜单周报(2025/12/27)
947
数据存储和传输的二进制编码格式概述
169
FFmpeg开发笔记(九十五)国产的开源视频美
64
【2025年最新】全面解析 poloapi.top:一站