将打包好的 Spring Boot 项目部署到已有服务器,最推荐的方式是使用 JAR 包直接运行并配合 Systemd 进行进程守护。这种方式利用了 Spring Boot 内嵌 Tomcat 的特性,无需额外安装 Web 容器,且通过系统服务管理能保证项目在后台稳定运行、开机自启。

以下是标准化的上线操作步骤:

环境准备与文件上传

在部署前,必须确保服务器的基础环境与项目构建时的要求一致。

  • 检查 JDK 版本:Spring Boot 3.x 需要 JDK 17+,2.x 通常需要 JDK 8 或 11。请在服务器终端执行 java -version 确认。
  • 上传 JAR 包:使用 FTP 工具(如 WinSCP、Xftp)或命令行(scp)将本地 target 目录下的 .jar 文件上传至服务器的指定目录(例如 /opt/myapp/)。

生产环境配置优化

不要直接使用开发环境的配置文件,建议采用外部化配置以隔离敏感信息。

  • 创建外部配置文件:在 jar 包同级目录下创建 application-prod.yml(或 .properties)。
  • 修改关键参数
    • 端口:避免使用默认的 8080,防止冲突或被扫描攻击。
    • 数据库:指向生产环境的数据库地址,切勿使用本地 localhost。
    • 日志:配置日志输出路径和级别(生产环境建议 INFO 或 WARN),避免控制台输出过多日志拖慢性能。

编写启动脚本与服务注册

直接使用 java -jar 命令关闭窗口后程序会终止,因此需要将其注册为 Linux 系统服务。

  • 创建服务文件:执行 vim /etc/systemd/system/myapp.service,写入以下内容:
[Unit]
Description=My Spring Boot Application
After=syslog.target network.target

[Service]
User=root
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar --spring.profiles.active=prod
SuccessExitStatus=143
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

注意:请将 ExecStart 中的 Java 路径和 Jar 包路径替换为你服务器的实际路径。--spring.profiles.active=prod 用于激活刚才创建的生产环境配置。

  • 启动与管理
    • 重载配置:systemctl daemon-reload
    • 启动项目:systemctl start myapp
    • 设置开机自启:systemctl enable myapp
    • 查看状态:systemctl status myapp

网络与安全配置

项目启动成功后,还需要确保外部能够访问。

  • 开放防火墙端口:如果服务器开启了防火墙(如 firewalldiptables),需放行项目监听的端口。
  • 配置云安全组:如果是阿里云、腾讯云等云服务器,必须在控制台的“安全组”规则中添加入方向规则,放行对应的 TCP 端口。
  • 反向代理(可选):建议使用 Nginx 作为反向代理,将 80/443 端口转发到 Spring Boot 的内部端口,这样既能隐藏真实端口,又能方便后续配置 SSL 证书和静态资源缓存。

按照上述步骤操作,即可完成一个标准、稳定的 Spring Boot 后端项目上线流程。如果在启动时遇到报错,请优先检查 systemctl status myapp 输出的日志信息以及 JDK 版本是否匹配。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐