速卖通素材
奋斗

京东云服务器如何配置自动启动Spring Boot应用程序?

服务器

在京东云服务器(ECS)上配置 Spring Boot 应用程序自动启动,最推荐且稳定的方式是使用 Systemd(Linux 主流服务管理器)。以下是完整、清晰的配置步骤:


✅ 前提条件

  1. 服务器已安装 JDK(建议 JDK 8 或 11+),并配置好 JAVA_HOME。
  2. Spring Boot 应用已打包为可执行 JAR 文件(如 app.jar)。
  3. 拥有服务器 root 或 sudo 权限。

📌 步骤一:创建系统用户(安全最佳实践)

不建议以 root 运行应用,创建一个专用用户:

sudo useradd -m -s /bin/bash springboot
sudo passwd springboot  # 设置密码(可选)

📌 步骤二:部署应用文件

将你的 Spring Boot JAR 包上传到服务器,例如放在 /opt/app/ 目录下:

sudo mkdir -p /opt/app
sudo cp your-app.jar /opt/app/app.jar
sudo chown -R springboot:springboot /opt/app

💡 建议同时创建日志目录和配置文件目录:

sudo mkdir -p /var/log/springboot /etc/springboot
sudo chown -R springboot:springboot /var/log/springboot /etc/springboot

📌 步骤三:编写 Systemd 服务单元文件

创建服务文件:

sudo nano /etc/systemd/system/springboot.service

写入以下内容(按需修改路径、用户、JVM 参数等):

[Unit]
Description=Spring Boot Application
After=syslog.target network-online.target
Wants=network-online.target

[Service]
User=springboot
Group=springboot
ExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /opt/app/app.jar --spring.config.location=/etc/springboot/application.yml
SuccessExitStatus=143
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=springboot
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

🔍 关键说明:

  • ExecStart:指定 Java 命令启动 JAR,可添加 JVM 参数、环境变量、配置文件路径等。
  • Restart=always:确保应用崩溃后自动重启。
  • StandardOutput/Error=syslog:日志输出到 systemd 日志,可通过 journalctl 查看。
  • 如需加载环境变量,可在 [Service] 中添加:
    Environment="SPRING_PROFILES_ACTIVE=prod"
    EnvironmentFile=/etc/springboot/env.conf

📌 步骤四:启用并启动服务

# 重载 systemd 配置
sudo systemctl daemon-reload

# 启用开机自启
sudo systemctl enable springboot.service

# 立即启动服务
sudo systemctl start springboot.service

# 检查状态
sudo systemctl status springboot.service

📌 步骤五:验证与日志查看

查看服务状态:

systemctl is-active springboot

查看实时日志:

journalctl -u springboot.service -f

查看历史日志:

journalctl -u springboot.service --since "2024-06-01"

🔄 可选:通过脚本方式(不推荐用于生产)

如果你更熟悉 shell 脚本,也可用 rc.local 或 cron @reboot,但 Systemd 是官方推荐方式,具备依赖管理、自动重启、日志集成等优势。

示例 rc.local 方式(仅用于测试):

# 编辑 /etc/rc.local
nohup java -jar /opt/app/app.jar > /var/log/springboot/app.log 2>&1 &

⚠️ 注意:rc.local 在较新 Linux 发行版中可能默认禁用,且缺乏监控和自动恢复能力。


✅ 最佳实践建议

项目 建议
运行用户 使用非 root 专用用户(如 springboot)
日志管理 使用 journald 或配合 Logback/FileAppender 输出到独立文件
内存限制 根据服务器配置合理设置 -Xms/-Xmx
健康检查 暴露 Actuator /actuator/health 端点,便于监控
多实例 若需多个实例,可使用不同端口 + 不同 service 文件

🧪 测试自动重启

你可以模拟进程崩溃来测试:

# 找到 PID
ps aux | grep app.jar

# 杀死进程
kill -9 <PID>

# 观察是否自动重启
systemctl status springboot
journalctl -u springboot -n 20

通过以上步骤,你的 Spring Boot 应用将在京东云服务器上实现开机自动启动、崩溃自动重启、集中日志管理,满足生产环境基本需求。

未经允许不得转载:轻量云Cloud » 京东云服务器如何配置自动启动Spring Boot应用程序?