阿里云ECS部署Spring Boot后端

星期五, 6月 12, 2026 | 1分钟阅读 | 更新于 星期五, 6月 12, 2026

@

记录将 Spring Boot 后端 jar 包部署到阿里云 ECS 服务器的流程,包括 JDK 安装、打包上传、systemd 服务管理和常见问题。

一、服务器准备

购买 ECS 后拿到公网 IP(例如 47.xx.xx.xx),SSH 登录:

ssh root@47.xx.xx.xx

安装 JDK

yum install -y java-17-openjdk-devel
java -version

配置安全组

在阿里云控制台 → 安全组规则,开放端口:

端口用途
22SSH
8080后端 API

二、打包上传

Maven 打包

在本地项目目录执行:

mvn clean package -DskipTests
# 生成 target/myapp.jar

上传到服务器

scp target/myapp.jar root@47.xx.xx.xx:/opt/app/

三、启动方式

方式一:nohup(临时测试用)

在服务器创建 /opt/app/start.sh

#!/bin/bash
nohup java -jar /opt/app/myapp.jar --server.port=8080 > /opt/app/app.log 2>&1 &
echo $! > /opt/app/app.pid
echo "应用已启动, PID: $(cat /opt/app/app.pid)"

方式二:Systemd 服务(推荐生产环境)

创建 /etc/systemd/system/myapp.service

[Unit]
Description=My Spring Boot App
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/java -jar /opt/app/myapp.jar --server.port=8080
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

启用并启动服务:

systemctl daemon-reload
systemctl enable myapp
systemctl start myapp
systemctl status myapp

常用管理命令:

命令作用
systemctl start myapp启动
systemctl stop myapp停止
systemctl restart myapp重启
systemctl status myapp查看状态
journalctl -u myapp -f实时查看日志

四、端口检查

检查防火墙

firewall-cmd --state
# 开放端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

注意:阿里云安全组优先级高于系统防火墙,安全组未放行端口则系统防火墙配置无效。排查时先查安全组。

验证服务

curl http://localhost:8080/api/xxx

五、常见问题

后端启动报错

journalctl -u myapp -n 50  # 查看最近 50 行日志

常见原因:

  • 端口被占用 → netstat -tlnp 查看
  • 数据库连接失败 → 检查数据库地址、用户名、密码
  • Redis/Kafka 未启动 → 检查中间件服务状态

外部访问不通

排查顺序:安全组 → 防火墙 → 应用监听地址

# 确认应用监听在 0.0.0.0 而不是 127.0.0.1
netstat -tlnp | grep 8080

如果显示 127.0.0.1:8080,则外网无法访问,需改为 0.0.0.0

总结

后端部署核心步骤:

Maven 打包 → scp 上传 → systemd 管理 → 安全组/防火墙放行 → 验证

systemd 的好处:开机自启、崩溃自动重启、统一日志管理。

© 2026 My Blog

🌱 Powered by Hugo with theme Dream.