奋斗
努力

腾讯云ECS云服务器部署SpringBoot项目从零到上线全攻略?

云计算

在腾讯云 ECS(云服务器)上部署 SpringBoot 项目是一个经典且实用的运维场景。以下是一份从零到上线的全流程攻略,涵盖了环境准备、项目打包、上传部署、服务管理及安全配置等关键环节。


📋 前置准备

  1. 本地开发环境:已安装 JDK、Maven/Gradle、IDEA。
  2. 腾讯云账号:已注册并实名认证。
  3. ECS 实例:已在腾讯云控制台购买一台 Linux 服务器(推荐 Ubuntu 20.04+ 或 CentOS 7+)。
  4. 网络规划:确认服务器的公网 IP、端口号(默认 8080,建议修改为 80 或 8080 以外的端口以增强安全性)。

第一步:登录与基础环境搭建

1. SSH 连接服务器

使用终端(Mac/Linux)或工具(如 Xshell、PuTTY、Windows Terminal)连接服务器:

ssh root@<你的公网IP>
# 输入密码后进入

2. 安装 Java (JDK)

SpringBoot 依赖 Java 运行环境。以 Ubuntu 为例:

# 更新软件源
sudo apt update

# 安装 OpenJDK 17 (推荐版本,根据项目需求选择)
sudo apt install openjdk-17-jdk -y

# 验证安装
java -version

(若使用 CentOS,请使用 yum install java-17-openjdk-devel)

3. 安装 Maven (可选,用于远程构建)

如果希望直接在服务器上打包,需安装 Maven;如果本地打包,可跳过此步。

sudo apt install maven -y
mvn -v

4. 安装 Nginx (作为反向X_X,非必须但推荐)

用于负载均衡、静态资源托管及隐藏后端端口。

sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

第二步:本地打包项目

在本地 IDE 中完成代码编写后,进行打包:

  1. 修改配置文件:将 application.yml 或 application.properties 中的数据库连接、Redis 地址等改为生产环境配置(切勿硬编码敏感信息)。
  2. 执行打包命令:
    mvn clean package -DskipTests

    注意:添加 -DskipTests 跳过测试以加快构建速度。

  3. 获取产物:打包成功后,在 target 目录下会生成 .jar 文件(例如 my-app-0.0.1-SNAPSHOT.jar)。

第三步:上传项目到服务器

推荐使用 scp 命令或 SFTP 工具(如 WinSCP、FileZilla)。

方法 A:使用 scp 命令

# 语法:scp <本地路径> <用户名>@<服务器IP>:<服务器目标路径>
scp target/my-app-0.0.1-SNAPSHOT.jar root@<你的公网IP>:/opt/apps/

提示:先确保服务器目录存在 (mkdir -p /opt/apps)。

方法 B:使用 SFTP 图形化工具
直接拖拽 jar 包到 /opt/apps 目录即可。


第四步:启动 SpringBoot 应用

1. 创建运行脚本 (推荐)

为了方便管理,创建一个 start.sh 脚本:

cd /opt/apps
vim start.sh

写入以下内容:

#!/bin/bash
APP_NAME=my-app
JAR_FILE=your-project-name.jar # 替换为你的 jar 文件名

# 检查进程是否已存在
PID=$(ps -ef | grep $JAR_FILE | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
    echo "Application is already running with PID: $PID"
else
    echo "Starting application..."
    nohup java -jar $JAR_FILE > /dev/null 2>&1 &
    echo "Started successfully!"
fi

赋予执行权限:

chmod +x start.sh
./start.sh

2. 验证启动

查看日志和进程:

# 查看进程
ps -ef | grep your-project-name.jar

# 实时查看日志 (如果有日志输出到 console)
tail -f /var/log/syslog 
# 或者如果你重定向了日志文件
tail -f nohup.out

第五步:配置防火墙与安全组

这是新手最容易忽略的一步,导致“能连 SSH 但无法访问网页”。

1. 云服务器安全组 (腾讯云控制台)

  1. 登录 腾讯云控制台 -> 云服务器 -> 安全组。
  2. 找到你 ECS 绑定的安全组规则。
  3. 添加入方向规则:
    • 协议:TCP
    • 端口范围:8080 (或你配置的端口)
    • 来源 IP:0.0.0.0/0 (允许所有,生产环境建议限制特定 IP)。

2. 服务器内部防火墙 (UFW/CentOS Firewall)

Ubuntu (UFW):

sudo ufw allow 8080/tcp
sudo ufw enable

CentOS (firewalld):

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

第六步:配置 Nginx 反向X_X (最佳实践)

直接暴露 8080 端口不安全且不专业。通过 Nginx 监听 80 端口,转发请求到 SpringBoot。

  1. 编辑 Nginx 配置:

    sudo vim /etc/nginx/sites-available/default

    (如果是 CentOS,通常在 /etc/nginx/conf.d/ 下新建文件)

  2. 写入配置:

    server {
       listen 80;
       server_name your-domain.com; # 建议使用域名,若无域名可用 IP
    
       location / {
           proxy_pass http://localhost:8080; # 指向 SpringBoot 端口
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
    }
  3. 重载 Nginx:

    sudo nginx -t  # 检查配置语法
    sudo systemctl reload nginx

此时,访问 http://<你的公网IP> 即可看到项目页面。


第七步:设置开机自启 (Systemd)

为了让服务在服务器重启后自动运行,建议配置 Systemd 服务。

  1. 创建服务文件:

    sudo vim /etc/systemd/system/my-springboot.service
  2. 写入内容:

    [Unit]
    Description=My Spring Boot Application
    After=syslog.target network.target
    
    [Service]
    User=root
    WorkingDirectory=/opt/apps
    ExecStart=/usr/bin/java -jar /opt/apps/your-project-name.jar
    Restart=always
    SuccessExitStatus=143
    
    [Install]
    WantedBy=multi-user.target
  3. 启用并启动:

    sudo systemctl daemon-reload
    sudo systemctl enable my-springboot.service
    sudo systemctl start my-springboot.service
    sudo systemctl status my-springboot.service

✅ 上线前检查清单

检查项 状态 说明
Java 版本 ✅ 确认 java -version 符合项目要求
端口开放 ✅ 云控制台安全组 + 系统防火墙均放行
Nginx X_X ✅ 访问 80 端口能正确转发到 8080
日志监控 ✅ 能够查看 nohup.out 或日志文件无报错
数据库连接 ✅ 确认数据库白名单已添加服务器内网/公网 IP
定时任务 ✅ 已配置 Systemd 开机自启

💡 进阶优化建议

  1. 域名解析:购买域名并在 DNS 解析到服务器 IP,体验更佳。
  2. HTTPS:使用 Let’s Encrypt (Certbot) 免费申请 SSL 证书,配置 Nginx 开启 HTTPS。
  3. 日志轮转:配置 Logrotate 防止日志文件过大占满磁盘。
  4. 备份策略:定期备份数据库和重要配置文件到腾讯云对象存储 (COS)。
  5. 监控告警:开启腾讯云云监控,对 CPU、内存、带宽设置阈值告警。

按照以上步骤操作,你的 SpringBoot 项目就能稳定地运行在腾讯云 ECS 上了!如果在具体某一步遇到报错,欢迎随时提问。

未经允许不得转载:云服务器 » 腾讯云ECS云服务器部署SpringBoot项目从零到上线全攻略?