在京东云服务器(ECS)上配置 Spring Boot 应用程序自动启动,最推荐且稳定的方式是使用 Systemd(Linux 主流服务管理器)。以下是完整、清晰的配置步骤:
✅ 前提条件
- 服务器已安装 JDK(建议 JDK 8 或 11+),并配置好
JAVA_HOME。 - Spring Boot 应用已打包为可执行 JAR 文件(如
app.jar)。 - 拥有服务器 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