Linux系统下Jboot/SpringBoot项目部署方法 生产环境配置【详解】

星墨小哥_1412

星墨小哥_1412

2026-04-21

331人浏览

原创

spring boot生产环境部署核心是稳、可查、可持续,需验证jdk版本匹配、jar包完整性,用systemd守护进程,外置application-prod.yml配置,通过环境变量注入敏感信息,并检查防火墙、selinux及端口冲突。

linux系统下jboot/springboot项目部署方法 生产环境配置【详解】

Spring Boot 项目在 Linux 生产环境部署,核心不是“能不能跑起来”,而是“能不能稳、能不能查、能不能续”。直接用 java -jar 启动看似简单,但没日志轮转、没进程守护、没配置隔离、没 JVM 调优,上线三天必出问题。

如何确认 JDK 和 jar 包已就位

别跳过这步——很多“启动失败”其实卡在环境上。先验证 JDK 版本是否匹配项目要求(比如 Spring Boot 3.x 需 JDK 17+):

java -version 输出必须含 17 或更高;若为 1.8.0_XXX,则不兼容 Spring Boot 3+,会报 UnsupportedClassVersionError。

jar 包上传后检查权限和完整性:

  • 用 ls -l your-app.jar 确认非 root 用户也能读取(尤其用 systemd 切换用户时)
  • 用 java -Djarmode=layertools -jar your-app.jar list 快速验证 jar 是合法的 Spring Boot 可执行包(输出包含 dependencies、spring-boot-loader 等)
  • 避免把开发机打包的 jar 直接传上去——确保 mvn clean package -Dmaven.test.skip=true 是在目标 JDK 版本下执行的

systemd service 是生产首选,不是“可选”

nohup 或 shell 脚本启动无法自动拉起、无法统一管理生命周期、日志分散难聚合。systemd 是现代 Linux 的标准服务管理器,必须用。

关键配置点:

Browser Setup (No-Root Linux)
Browser Setup (No-Root Linux)

在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...

下载
  • ExecStart 必须写全路径:/usr/bin/java -Xms512m -Xmx1024m -jar /opt/myapp/app.jar --spring.profiles.active=prod
  • 加 User=deploy(不要用 root),提前创建无登录权限用户:useradd -r -s /sbin/nologin deploy
  • 加 Restart=always 和 RestartSec=10,防止 OOM 或异常退出后服务静默离线
  • StandardOutput=journal 和 StandardError=journal,让 journalctl -u myapp 能查到所有输出

示例片段(存为 /etc/systemd/system/myapp.service):

[Service]
User=deploy
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/myapp/app.jar --spring.profiles.active=prod
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

application-prod.yml 必须外置,不能打进 jar

打进去的配置改一次就得重打包,违反十二要素原则。生产配置必须从外部加载:

  • 把 application-prod.yml 放到 /opt/myapp/config/ 下
  • 启动命令中显式指定:--spring.config.location=file:/opt/myapp/config/(注意末尾斜杠)
  • 同时加 --spring.config.name=application,否则它会去找 application.yml 而不是 application-prod.yml
  • 数据库密码等敏感字段,优先用环境变量注入:SPRING_DATASOURCE_PASSWORD=xxx,比明文写在 yml 里安全

验证是否生效:启动后立刻查日志,搜索 Active profiles,应输出 prod;再搜 Started Application 前的 Tomcat started on port(s): 8080,确认端口和 profile 都对。

防火墙、SELinux、端口冲突是隐形杀手

服务明明启动成功,却连不上?大概率卡在这三处:

  • 腾讯云/阿里云控制台的安全组规则,必须放行应用端口(如 8080),**仅开放服务器本地防火墙(firewalld/ufw)不够**
  • CentOS 8+/Alibaba Cloud Linux 默认启用 SELinux,会拦截 Java 绑定端口,临时关掉验证:setenforce 0;长期方案是配策略:semanage port -a -t http_port_t -p tcp 8080
  • 检查端口是否被占:ss -tulnp | grep ':8080',常见冲突源是残留的旧进程、宝塔面板、或另一个 Spring Boot 实例

特别注意:如果用了 Nginx 反向代理,Spring Boot 应监听 127.0.0.1:8080 而非 0.0.0.0:8080,避免应用端口直接暴露公网。

最常被忽略的是 JVM 参数和日志滚动——没设 -Xmx,容器化环境容易被 OOM kill;没配 logging.file.max-size 和 logging.file.max-history,几个月后磁盘爆满。这些不是“上线后再加”,是部署脚本里必须固化的第一行。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2025.08.06

2311

22

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

2026.01.26

437

25

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3790

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3273

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2393

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5750

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5402

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3193

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2705

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习