走啊走
奋斗

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

服务器价格表

别整那些虚头巴脑的开场白,直接上干货。在腾讯云 ECS 上跑 Spring Boot,本质就是一场“环境搭建 + 代码打包 + 进程守护”的流水线作业。很多人卡在第一步,其实只要按步骤来,半小时就能上线。

第一步:选对“地基”(实例与系统)

别一上来就买最贵的配置。对于测试或中小型项目,2 核 4G 足够起步,甚至 1 核 2G 都能跑起来(如果内存紧张记得调 JVM 参数)。

  1. 镜像选择
    • 推荐选 Ubuntu 20.04CentOS 7/8。这两个生态最稳,文档最多。
    • 注意:如果你不懂 Linux,尽量避开最小化安装,选带图形界面或者基础开发环境的镜像,省得后续装工具抓瞎。
  2. 安全组(防火墙)
    • 这是新手最容易翻车的地方。登录腾讯云控制台 -> 云服务器 -> 安全组。
    • 必须放行:SSH 端口(默认 22,建议改个非标准端口防扫描)、Spring Boot 运行端口(默认 8080,生产环境建议改成 80 或 8080+)。
    • 策略:入站规则里,8080 和 22 号端口来源 IP 限制为“我的 IP"最安全,或者干脆全开(仅限测试),千万别只留 22 却忘了放业务端口,否则连都连不上。

第二步:远程连接与环境初始化

用终端工具(Mac/Linux 自带 Terminal,Windows 用 Xshell 或 PuTTY)连上去。

# 更新源(以 Ubuntu 为例)
sudo apt update && sudo apt upgrade -y

# 安装 Java JDK 1.8 或 17(看你的项目要求)
sudo apt install openjdk-17-jdk -y
java -version # 验证是否安装成功

# 安装 Maven(如果本地没打好包,服务器上也得有)
sudo apt install maven -y
mvn -v

# 安装 Git(可选,用于拉取代码)
sudo apt install git -y

注:如果项目依赖复杂,建议在本地打好 jar 包再传上去,这样服务器压力小,启动快。

第三步:代码搬运与部署

有两种主流方式:

方式 A:本地打包上传(推荐)

  1. 在本地 IDE 执行 mvn clean package,生成 target 目录下的 .jar 文件。
  2. 使用 scp 命令或 FTP 工具(如 FileZilla)把 jar 包传到服务器指定目录(比如 /home/ubuntu/my-app)。
  3. 进入该目录。

方式 B:Git 拉取

  1. 在服务器上 git clone 你的仓库。
  2. 执行 mvn package 编译。
    缺点:每次修改都要重新编译,慢且容易出错,不推荐频繁迭代时使用。

第四步:让服务跑起来(关键!)

很多人写完脚本发现重启服务器后服务就挂了,或者关掉终端服务就停了。你需要一个进程守护方案。

方案一:Nohup(简单粗暴,适合临时调试)

nohup java -jar my-app.jar > app.log 2>&1 &

优点:简单。
缺点:日志混在一起,难以管理,无法优雅重启。

方案二:Systemd(生产环境标配,强烈建议)
创建一个服务文件,让 Linux 帮你管着这个 Java 进程。

  1. 创建文件:sudo nano /etc/systemd/system/spring-boot.service

  2. 填入以下内容(根据实际路径修改):

    [Unit]
    Description=My Spring Boot Application
    After=syslog.target network.target
    
    [Service]
    User=root
    WorkingDirectory=/home/ubuntu/my-app
    ExecStart=/usr/bin/java -Xms512m -Xmx512m -jar my-app.jar
    Restart=always
    SuccessExitStatus=0
    
    [Install]
    WantedBy=multi-user.target

    注意:-Xms-Xmx 要匹配你服务器的内存大小,别写大了导致 OOM。

  3. 启用并启动服务:

    sudo systemctl daemon-reload
    sudo systemctl enable spring-boot.service
    sudo systemctl start spring-boot.service
  4. 验证状态

    sudo systemctl status spring-boot.service
    journalctl -u spring-boot.service -f # 实时查看日志

    现在,无论你怎么重启服务器、怎么断开 SSH,它都会自动复活。这才是正经的上线姿势。

第五步:域名解析与 HTTPS(可选但必要)

如果你的项目要对外提供服务,光有 IP 不行,还得有个好记的域名。

  1. 备案:国内服务器必须备案。去腾讯云备案中心提交资料,大概等 10-20 天。没备案的域名会被拦截。
  2. DNS 解析:备案通过后,在云解析 DNS 里把域名 A 记录指向你的 ECS 公网 IP。
  3. Nginx 反向X_X
    直接在 Java 里监听 80 端口需要 root 权限,不安全也不规范。装个 Nginx 做网关。

    • 安装:sudo apt install 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;
          }
      }
    • 重载:sudo nginx -t && sudo systemctl reload nginx
  4. HTTPS:申请 Let’s Encrypt 免费证书,配合 Certbot 一键配置。这一步能提升用户信任度,也能避免浏览器报红。

第六步:避坑指南(血泪经验)

  1. 内存溢出:Spring Boot 默认可能尝试占用大量内存。务必在启动参数里限制 -Xmx,否则高并发下服务器直接卡死。
  2. 数据库连接:别用内网 IP 连数据库除非你在同一个 VPC。如果用公网 MySQL,一定要设强密码,并且只允许特定 IP 访问。
  3. 日志轮转:别让 app.log 无限增长撑爆磁盘。配置 logback 的滚动策略,或者直接用 Nginx 接管日志输出。
  4. 监控:上线不是结束。装个 Prometheus + Grafana,或者直接看云监控的 CPU、内存曲线。一旦流量突增,及时扩容。

总结

从买机器到上线,核心逻辑就是:选环境 -> 配网络 -> 传代码 -> 管进程 -> 接域名

别被各种复杂的架构吓住,先把最简单的流程跑通。遇到问题先看日志(journalctltail -f),90% 的问题都在日志里写着答案。剩下的 10%,才是技术挑战。