找回密码
 立即注册
首页 业界区 安全 Spring Boot 项目部署与开机自启详解

Spring Boot 项目部署与开机自启详解

胥望雅 2 小时前
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 包到服务器

  1. # 创建应用目录(规范管理)
  2. sudo mkdir -p /opt/springboot-app
  3. # 上传 JAR 包(替换为你的 JAR 包名和服务器IP)
  4. scp your-app.jar admin@你的服务器IP:/opt/springboot-app/
  5. # 给 JAR 包执行权限
  6. sudo chmod +x /opt/springboot-app/your-app.jar
复制代码
步骤2:创建 systemd 服务文件(开机自启核心)

  1. sudo nano /etc/systemd/system/springboot-app.service
复制代码
粘贴以下配置(根据你的实际情况修改):
  1. [Unit]
  2. Description=Spring Boot Application
  3. After=network.target  # 网络启动后再启动应用
  4. [Service]
  5. # 运行用户(避免 root 运行,提升安全性)
  6. User=admin
  7. Group=admin
  8. # 应用目录
  9. WorkingDirectory=/opt/springboot-app
  10. # Java 启动命令(指定 JAR 包,配置 JVM 参数)
  11. ExecStart=/usr/bin/java -jar /opt/springboot-app/your-app.jar \
  12.           -Xms512M -Xmx1024M  # JVM 内存配置,根据服务器配置调整
  13. # 重启策略(异常退出时自动重启)
  14. Restart=on-failure
  15. RestartSec=5  # 重启间隔 5 秒
  16. # 日志输出(可选,也可依赖 Spring Boot 自身日志)
  17. StandardOutput=append:/opt/springboot-app/app.log
  18. StandardError=append:/opt/springboot-app/app-error.log
  19. [Install]
  20. WantedBy=multi-user.target  # 多用户模式下开机自启
复制代码
保存退出(Ctrl+O → 回车 → Ctrl+X)。
步骤3:配置并启动服务

  1. # 重新加载 systemd 配置
  2. sudo systemctl daemon-reload
  3. # 启动应用服务
  4. sudo systemctl start springboot-app
  5. # 设置开机自启
  6. sudo systemctl enable springboot-app
  7. # 查看服务状态(确认是否启动成功)
  8. 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
    1. <packaging>war</packaging>
    2. <dependency>
    3.     <groupId>org.springframework.boot</groupId>
    4.     spring-boot-starter-tomcat</artifactId>
    5.     <scope>provided</scope>
    6. </dependency>
    7. <dependency>
    8.     <groupId>org.springframework.boot</groupId>
    9.     spring-boot-starter-web</artifactId>
    10. </dependency>
    复制代码

  • 修改启动类

  • 让启动类继承 SpringBootServletInitializer 并重写 configure 方法:
    1. import org.springframework.boot.SpringApplication;
    2. import org.springframework.boot.autoconfigure.SpringBootApplication;
    3. import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    4. @SpringBootApplication
    5. public class YourAppApplication extends SpringBootServletInitializer {
    6.     @Override
    7.     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    8.         return application.sources(YourAppApplication.class);
    9.     }
    10.     public static void main(String[] args) {
    11.         SpringApplication.run(YourAppApplication.class, args);
    12.     }
    13. }
    复制代码

  • 打包 WAR 包

  • 执行 mvn clean package,生成的 WAR 包在 target 目录下。

步骤2:服务器部署

按之前给你的 Tomcat 部署步骤操作:

  • 将 WAR 包上传到 Tomcat 的 webapps 目录;

  • 配置 Tomcat 的 systemd 服务并设置开机自启;

  • 访问路径:http://服务器IP:Tomcat端口/WAR包名/接口路径。

  常用运维命令

  1. # 重启 Spring Boot 应用
  2. sudo systemctl restart springboot-app
  3. # 停止应用
  4. sudo systemctl stop springboot-app
  5. # 查看应用日志(Spring Boot 自身日志,默认在应用目录下)
  6. tail -f /opt/springboot-app/logs/xxx.log  # 或你配置的日志路径
  7. # 查看系统服务日志
  8. journalctl -u springboot-app -f
复制代码
总结


  • 推荐方案:Spring Boot 优先用 JAR 包部署,无需外部 Tomcat,通过 systemd 配置服务即可实现开机自启,步骤更简单;

  • WAR 包适配:需修改项目 pom.xml(禁用内嵌 Tomcat)和启动类(继承 SpringBootServletInitializer),再部署到外部 Tomcat;

  • 自启核心:通过 systemd 服务文件配置 ExecStart 启动命令、Restart 重启策略,执行 enable 开启开机自启。


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册