在腾讯云 ECS(Elastic Cloud Server)上从零部署 SpringBoot 项目是一个经典的运维场景。为了让你能够顺利上线,我将整个流程拆解为 准备阶段、环境搭建、代码部署、服务优化、安全配置 五个核心步骤。
📋 第一阶段:准备工作
在动手之前,请确保你手头有以下资源:
- 一台腾讯云服务器:建议至少 2 核 4G(运行 Java 应用更流畅),操作系统推荐 Ubuntu 20.04/22.04 LTS 或 CentOS 7.9。
- SpringBoot 项目源码:已打包成
.jar文件(推荐使用mvn clean package或gradle build)。 - 本地开发工具:SSH 客户端(如 Xshell, Putty, Terminal)、FTP/SFTP 工具(如 WinSCP, FileZilla)。
🚀 第二阶段:服务器环境搭建
登录你的 ECS 实例后,首先进行基础环境安装。
1. 更新系统并安装依赖
以 Ubuntu 为例(CentOS 使用 yum 命令类似):
sudo apt update && sudo apt upgrade -y
# 安装必要工具
sudo apt install git vim curl wget -y
2. 安装 JDK (Java Development Kit)
SpringBoot 需要运行在 JVM 上。推荐安装 JDK 17(LTS 版本)或 JDK 8。
# 安装 OpenJDK 17
sudo apt install openjdk-17-jdk -y
# 验证安装
java -version
# 输出应显示 version 17.x.x
3. 安装 Maven (可选,若本地已打包则跳过)
如果你需要在服务器上编译代码:
sudo apt install maven -y
mvn -v
📦 第三阶段:上传与部署项目
这里推荐两种主流方式:直接上传 Jar 包(最简单)和 Git 拉取代码(适合持续集成)。
方案 A:直接上传 Jar 包(推荐新手)
- 在本地打包好项目:
target/your-app.jar。 - 使用 SFTP 工具(如 WinSCP)将 jar 包上传到服务器,例如
/opt/app目录。# 创建目录 mkdir -p /opt/app cd /opt/app # (通过 WinSCP 上传 your-app.jar 到此目录)
方案 B:Git 拉取代码(适合团队开发)
cd /opt/app
git clone https://github.com/your-repo/project.git
cd project
mvn clean package -DskipTests
# 此时 target 目录下会有 jar 包
⚙️ 第四阶段:配置与启动
为了让项目稳定运行,不能直接用 java -jar 后台运行,建议使用 Systemd 管理服务,实现开机自启和进程守护。
1. 创建配置文件
在项目目录下创建一个 application.yml (或 properties),配置生产环境的数据库连接、端口等。
注意:不要将密码硬编码,建议使用环境变量或配置中心。
示例 application-prod.yml:
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_name?useSSL=false&serverTimezone=UTC
username: root
password: ${DB_PASSWORD} # 从环境变量读取
2. 编写 Systemd 服务文件
创建服务定义文件 /etc/systemd/system/myapp.service:
[Unit]
Description=My SpringBoot Application
After=syslog.target network.target
[Service]
User=root
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -Xms512m -Xmx1g -jar myapp.jar --spring.profiles.active=prod
SuccessExitStatus=143
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
-Xms和-Xmx根据服务器内存调整。--spring.profiles.active=prod指定激活的环境配置。
3. 启动服务
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start myapp
# 设置开机自启
sudo systemctl enable myapp
# 查看状态
sudo systemctl status myapp
如果看到 Active: active (running),说明部署成功!
🔒 第五阶段:网络与安全配置(关键)
默认情况下,云服务器的安全组是封锁所有端口的,你需要放行。
1. 配置腾讯云控制台“安全组”
- 登录 腾讯云控制台。
- 进入 云服务器 -> 安全组。
- 找到该 ECS 绑定的安全组,点击 添加规则。
- 添加一条 入方向 规则:
- 类型:自定义 TCP
- 端口范围:8080 (你的 SpringBoot 端口)
- 来源 IP:0.0.0.0/0 (允许全网访问,生产环境建议限制为特定 IP 段)
- 策略:允许
2. 配置 Nginx 反向X_X(进阶,推荐)
直接暴露 8080 端口不安全且不规范。通常我们在 ECS 上安装 Nginx,监听 80 端口,转发到 8080。
安装 Nginx:
sudo apt install nginx -y
修改 Nginx 配置 (/etc/nginx/sites-available/default):
server {
listen 80;
server_name your-domain.com; # 替换为你的域名
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
注意:如果使用 HTTPS,需在此处配置 SSL 证书。
重启 Nginx:
sudo systemctl restart nginx
此时,用户只需访问 http://your-ip 或 http://your-domain.com 即可。
🛠️ 第六阶段:日志监控与运维
1. 查看实时日志
# 查看最后 100 行日志
tail -f /var/log/syslog
# 或者查看 springboot 自己输出的日志(如果在 application.yml 中配置了 logging.file.name)
tail -f /opt/app/logs/app.log
2. 简单的心跳检测
可以使用 pm2 (Node.js 生态也有类似工具) 或简单的 Shell 脚本配合 crontab 检测进程是否存在。但推荐直接使用 systemd 的 Restart=on-failure 机制,它已经足够强大。
3. 数据库连接问题排查
如果启动失败,常见错误是 Connection refused。
- 检查 MySQL 是否开启远程访问权限。
- 检查 SpringBoot 配置中的
jdbc.url是否正确(如果是内网数据库,确保localhost指向正确,或者使用云数据库 CDB 的内网地址)。
✅ 上线检查清单 (Checklist)
在正式对外提供服务前,请确认以下事项:
- [ ] JDK 版本 是否符合项目要求?
- [ ] 端口映射:安全组是否放行了 8080 或 80 端口?
- [ ] 数据库连接:能否连通数据库?
- [ ] 日志输出:是否有报错信息(如
Application started on port)? - [ ] Nginx 配置:域名解析是否生效?HTTP 请求是否被正确转发?
- [ ] 自动重启:模拟杀掉进程 (
killall java),观察是否自动恢复?
💡 最佳实践建议
- 使用 Docker:如果项目复杂,建议将 SpringBoot 项目打包成 Docker 镜像,利用
docker-compose管理,避免环境差异问题。 - 敏感信息:永远不要把数据库密码写在代码里,使用环境变量或腾讯云 KMS 密钥管理服务。
- 定期备份:对数据库进行定时备份,防止数据丢失。
按照以上步骤操作,你的 SpringBoot 项目就能稳稳地运行在腾讯云上了!如果有具体的报错信息,欢迎随时发出来分析。
云知识CLOUD