8号码库
8号码库

暂无菜单项

首页/社区/广场/技术交流/
打开 MD 链接

从源码部署 Java Spring Boot:打包 Jar 包 + systemd 守护

maoku
发布于 2周前更新于 2周前
638

1Spring Boot 内嵌了 Tomcat,打包出来的 .jar 就是一个可直接运行的完整应用。部署的重点就两件事:把 Jar 跑起来、让它崩了能自动拉起。本文用 systemd 来完成后者。

一、环境准备

安装 JDK,版本需与项目编译目标一致(Spring Boot 3.x 需要 JDK 17+):

apt install openjdk-17-jdk -y
java -version

二、打包可执行 Jar

Maven 项目在源码根目录执行:

mvn clean package -DskipTests

Gradle 项目则执行 gradle build。产物在 target/ 下,如 app-1.0.0.jar。上传到服务器后先手动验证能启动:

java -jar app-1.0.0.jar --server.port=8080

三、配置外置

生产环境不要把配置写死在 Jar 里,用外部 application.yml 覆盖:

java -jar app-1.0.0.jar --spring.config.additional-location=file:/etc/app/application.yml

四、systemd 守护

新建服务文件 /etc/systemd/system/myapp.service:

[Unit]
Description=My Spring Boot App
After=network.target

[Service]
User=www
ExecStart=/usr/bin/java -jar /opt/app/app-1.0.0.jar --spring.config.additional-location=file:/etc/app/application.yml
SuccessExitStatus=143
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启用并启动:

systemctl daemon-reload
systemctl enable --now myapp
systemctl status myapp

Restart=always 保证进程退出后自动拉起,SuccessExitStatus=143 让优雅关闭不被误判为异常。

五、Nginx 反向代理

与 Node 项目类似,Nginx 监听 80/443,代理到本机 8080,并配置 proxy_set_header 传递真实 IP 与 Host。

六、日志与调优

  • 日志落盘:StandardOutput=append:/var/log/myapp.log,或交给 logback 滚动。
  • JVM 内存:-Xms512m -Xmx512m 按机器规格调整,避免默认吃满。
  • 优雅停机:Spring Boot 2.3+ 支持 graceful shutdown,配合 TimeoutStopSec 使用。

systemd 是 Linux 上最可靠的进程守护方案,比 nohup 加 & 专业得多——开机自启、异常重启、日志采集全都免费获得。

0 / 600
细中粗
3 讨论
热门最新
总结
评论主要关注Nginx配置及Spring Boot部署流程的实用性。
前端小明

请问文章中提到的Nginx配置如何实现日志的外置?

9/3
程序猿

我也有一个类似的项目,在部署过程中遇到了一些问题,这篇文章给了我一些启发。

9/3
摸鱼切图仔

这篇文章详细介绍了Spring Boot项目的部署流程,对于初学者来说非常实用。

9/3
热门帖子
  • 8号码库社区版规与发帖指引(新人必读)

    8
    置顶
    8/27326 浏览
  • 半夜两点还在调源码,我劝你这几个瞬间别硬刚

    3
    9/13531 浏览
  • WordPress 源码手动安装与性能优化全流程

    6
    9/34.7K 浏览
  • 宝塔面板从零部署网站源码:LNMP 环境一键搭建全流程

    5
    9/3510 浏览
  • 前端项目源码构建与部署:Vue/React + Nginx 静态托管与 SSR

    3
    9/3375 浏览
  • Docker 容器化源码部署:Dockerfile 与 Compose 编排实战

    5
    9/3773 浏览
  • Node.js 项目源码部署实战:PM2 进程守护 + Nginx 反向代理

    3
    9/3597 浏览
  • 从源码部署 Java Spring Boot:打包 Jar 包 + systemd 守护

    3
    9/3638 浏览
  • 半小时上线个人博客/知识库:通用部署流程(附流程图)

    2
    8/252.4K 浏览
  • 自己搭轻量网盘:Cloudreve 开箱即用(附架构图)

    5
    8/28463 浏览
8号码库
8号码库
首页
源码下载
交流社区
网址导航
版权所有 8号码库
隐私政策常见问题联系我们
捐赠❤️