June 2026探究前沿科技 · 提升自我文章 · Article
← 回到文章列表
前沿科技

Java Spring Boot 项目部署到 Linux 服务器

从打包、配置文件、JDK 环境、systemd 服务到 Nginx 代理,整理一套 Spring Boot 项目上线流程。

这篇文章发布于 2026.07.01,其中提到的工具、数据或结论请结合最新信息谨慎参考。

Java Spring Boot 项目部署到 Linux 服务器

Java 项目上线最容易乱在配置文件和启动方式:把环境变量、日志和进程管理先固定下来,后面维护会轻很多。

一、准备 JDK

sudo apt update
sudo apt install -y openjdk-17-jdk nginx
java -version

如果项目使用 Java 21,就安装对应 JDK,版本不要靠猜。

二、本地或 CI 打包

Maven 项目:

mvn clean package -DskipTests

Gradle 项目:

./gradlew clean bootJar

生成的 jar 一般在 target/ 或 build/libs/ 下。上传到服务器:

scp target/app.jar deploy@example.com:/opt/elik-java/app.jar

三、外置配置

线上配置建议放在 `/opt/elik-java/application-prod.yml`。

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/blog?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: blog_user
    password: change-me
logging:
  file:
    name: /var/log/elik-java/app.log

数据库密码不要写进 Git。更推荐通过环境变量注入。

四、创建 systemd 服务

[Unit]
Description=elik Spring Boot service
After=network.target

[Service]
User=elikapp
WorkingDirectory=/opt/elik-java
Environment="SPRING_PROFILES_ACTIVE=prod"
ExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /opt/elik-java/app.jar --spring.config.additional-location=/opt/elik-java/application-prod.yml
Restart=always
RestartSec=5
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now elik-java
sudo systemctl status elik-java

五、Nginx 代理

server {
    listen 80;
    server_name java-api.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

六、健康检查

如果引入 Actuator,可以开放健康检查:

management:
  endpoints:
    web:
      exposure:
        include: health,info

检查命令:

curl http://127.0.0.1:8080/actuator/health
journalctl -u elik-java -f

七、更新发布流程

  1. 停止服务或上传新 jar 到临时文件
  2. 备份当前 jar
  3. 替换 jar
  4. 重启服务
  5. 检查日志和健康接口
cp app.jar backups/app-$(date +%Y%m%d%H%M).jar
mv app-new.jar app.jar
sudo systemctl restart elik-java

Java 部署的核心不是 `java -jar`,而是让配置、进程、日志、代理和回滚形成固定流程。

本文链接https://elikbin.cn/article/java-spring-boot-linux-deploy

版权声明:本文为 elik 原创,采用 CC BY-NC 4.0 协议授权。欢迎非商业转载,但请保留作者署名与原文链接;商业使用请先联系授权。

← 上一篇
好奇心的复利
下一篇 →
工具与心智
回到顶部 ~
© 2026 elik — 用好奇心写作 ✎