You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS EC2上部署SpringBoot项目实现服务不间断运行的方案咨询

SpringBoot 项目EC2常驻运行部署方案

以下按生产适用性从高到低给出方案,可根据自身需求选择:

1. 系统原生systemd服务(生产环境首选)

Linux发行版默认自带的服务管理工具,无额外依赖,支持开机自启、异常自动重启、统一日志管理,是稳定性最高的方案。
操作步骤:

  • 新建服务配置文件:sudo vim /etc/systemd/system/你的项目名.service
  • 填入以下配置,替换对应占位符为你实际的环境参数:
[Unit]
Description=自定义的SpringBoot项目描述
After=network.target nginx.target # 声明在网络、Nginx启动完成后再启动当前服务

[Service]
User=ec2-user # EC2默认用户名,Ubuntu系统替换为ubuntu
WorkingDirectory=/home/ec2-user/你的war包所在目录 # 替换为war包实际存放路径
ExecStart=/usr/bin/java -jar 你的war包文件名.war # 替换为实际Java执行路径、war包名称
Restart=always # 进程异常退出时自动重启
RestartSec=5 # 重启间隔为5秒
StandardOutput=journal+console # 日志统一输出到系统日志
StandardError=journal+console

[Install]
WantedBy=multi-user.target
  • 重载systemd配置使新服务生效:sudo systemctl daemon-reload
  • 启动服务:sudo systemctl start 你的项目名
  • 设置开机自动启动:sudo systemctl enable 你的项目名
  • 常用操作命令:
    • 查看服务运行状态:sudo systemctl status 你的项目名
    • 查看实时运行日志:sudo journalctl -u 你的项目名 -f
    • 重启服务(比如更新war包后):sudo systemctl restart 你的项目名
    • 停止服务:sudo systemctl stop 你的项目名

2. nohup 临时方案(适合快速测试,不推荐生产长期用)

无需额外配置,一行命令即可把进程挂到后台,终端退出不会影响进程运行:

  • 启动命令:nohup java -jar 你的war包文件名.war > app.log 2>&1 &
    • nohup 会忽略终端挂断信号,关闭SSH连接后进程不会被终止
    • > app.log 2>&1 会把程序的标准输出、错误输出都写入当前目录的app.log文件方便排查问题
    • 末尾的& 让进程在后台运行
  • 后续操作:
    • 查看进程ID:ps aux | grep 你的war包文件名.war
    • 停止服务:kill -9 对应进程ID

3. PM2 复用方案(熟悉PM2操作可直接用)

PM2本身支持管理非Node的其他语言进程,不需要额外学习新工具,操作逻辑和你管理Node项目完全一致:

  • 启动命令:pm2 start java --name "自定义项目标识名" -- -jar 你的war包文件名.war
  • 常用操作和Node项目完全相同:
    • 查看所有PM2管理的进程列表:pm2 list
    • 查看当前项目实时日志:pm2 logs 自定义项目标识名
    • 重启项目:pm2 restart 自定义项目标识名
    • 停止项目:pm2 stop 自定义项目标识名
    • 设置开机自启:pm2 save && pm2 startup

注意事项

以上所有方案都不需要修改你现有的Nginx路由配置,只需要保证SpringBoot项目启动的端口和Nginx转发的对应端口一致即可。

内容的提问来源于stack exchange,提问作者Minnie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:36:03