别整那些虚头巴脑的开场白,直接上干货。在腾讯云 ECS 上跑 Spring Boot,本质就是一场“环境搭建 + 代码打包 + 进程守护”的流水线作业。很多人卡在第一步,其实只要按步骤来,半小时就能上线。
第一步:选对“地基”(实例与系统)
别一上来就买最贵的配置。对于测试或中小型项目,2 核 4G 足够起步,甚至 1 核 2G 都能跑起来(如果内存紧张记得调 JVM 参数)。
- 镜像选择:
- 推荐选
Ubuntu 20.04或CentOS 7/8。这两个生态最稳,文档最多。 - 注意:如果你不懂 Linux,尽量避开最小化安装,选带图形界面或者基础开发环境的镜像,省得后续装工具抓瞎。
- 推荐选
- 安全组(防火墙):
- 这是新手最容易翻车的地方。登录腾讯云控制台 -> 云服务器 -> 安全组。
- 必须放行: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:本地打包上传(推荐)
- 在本地 IDE 执行
mvn clean package,生成 target 目录下的.jar文件。 - 使用
scp命令或 FTP 工具(如 FileZilla)把 jar 包传到服务器指定目录(比如/home/ubuntu/my-app)。 - 进入该目录。
方式 B:Git 拉取
- 在服务器上
git clone你的仓库。 - 执行
mvn package编译。
缺点:每次修改都要重新编译,慢且容易出错,不推荐频繁迭代时使用。
第四步:让服务跑起来(关键!)
很多人写完脚本发现重启服务器后服务就挂了,或者关掉终端服务就停了。你需要一个进程守护方案。
方案一:Nohup(简单粗暴,适合临时调试)
nohup java -jar my-app.jar > app.log 2>&1 &
优点:简单。
缺点:日志混在一起,难以管理,无法优雅重启。
方案二:Systemd(生产环境标配,强烈建议)
创建一个服务文件,让 Linux 帮你管着这个 Java 进程。
-
创建文件:
sudo nano /etc/systemd/system/spring-boot.service -
填入以下内容(根据实际路径修改):
[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。 -
启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable spring-boot.service sudo systemctl start spring-boot.service -
验证状态:
sudo systemctl status spring-boot.service journalctl -u spring-boot.service -f # 实时查看日志现在,无论你怎么重启服务器、怎么断开 SSH,它都会自动复活。这才是正经的上线姿势。
第五步:域名解析与 HTTPS(可选但必要)
如果你的项目要对外提供服务,光有 IP 不行,还得有个好记的域名。
- 备案:国内服务器必须备案。去腾讯云备案中心提交资料,大概等 10-20 天。没备案的域名会被拦截。
- DNS 解析:备案通过后,在云解析 DNS 里把域名 A 记录指向你的 ECS 公网 IP。
-
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
- 安装:
- HTTPS:申请 Let’s Encrypt 免费证书,配合 Certbot 一键配置。这一步能提升用户信任度,也能避免浏览器报红。
第六步:避坑指南(血泪经验)
- 内存溢出:Spring Boot 默认可能尝试占用大量内存。务必在启动参数里限制
-Xmx,否则高并发下服务器直接卡死。 - 数据库连接:别用内网 IP 连数据库除非你在同一个 VPC。如果用公网 MySQL,一定要设强密码,并且只允许特定 IP 访问。
- 日志轮转:别让
app.log无限增长撑爆磁盘。配置 logback 的滚动策略,或者直接用 Nginx 接管日志输出。 - 监控:上线不是结束。装个 Prometheus + Grafana,或者直接看云监控的 CPU、内存曲线。一旦流量突增,及时扩容。
总结
从买机器到上线,核心逻辑就是:选环境 -> 配网络 -> 传代码 -> 管进程 -> 接域名。
别被各种复杂的架构吓住,先把最简单的流程跑通。遇到问题先看日志(journalctl 或 tail -f),90% 的问题都在日志里写着答案。剩下的 10%,才是技术挑战。
CLOUD云计算