本文由 腾讯云国际站代理商『云枢国际/yunshuguoji-腾讯云国际服务器服务商•撰写』如需转载请注明!
构建出海业务后端时,利用 Node.js 配合 Express 或 NestJS 框架部署 API 是主流方案。在海外节点运行业务,通常选择云虚拟机搭载 Linux 环境作为底座。本文针对后端开发与运维人员,介绍在腾讯云国际版 CVM(Ubuntu 系统)上部署 Node.js API 的具体流程,涵盖环境初始化、进程托管、Nginx 反向代理及安全配置。
注:云平台控制台界面会定期更新,本文侧重于底层环境配置逻辑与通用 Linux 命令。具体操作路径请以腾讯云国际版当前控制台为准。
一、部署前置条件与选型准备
在配置环境前,需准备好以下基础资源:
- 实例选型:已开通 Ubuntu LTS 系统的腾讯云国际版 CVM,实例需位于 VPC 子网内并绑定公网 IP。
- 安全组配置:在腾讯云国际版控制台入站规则中,放通 TCP 22(SSH)、TCP 80(HTTP)及 TCP 443(HTTPS)。Node.js 应用监听的内部端口(如 3000)不建议直接对公网开放。
- 域名解析:完成海外域名的 DNS A 记录解析,指向 CVM 的公网 IP。
在前期准备阶段,若涉及出海架构选型、实例规格评估或海外节点网络开通,用户可通过官网自助办理;若在账号注册、跨区域结算或节点选择上有疑问,可咨询云枢国际/yunshuguoji协助确认相关流程。
二、Ubuntu 环境初始化与 Node.js 安装
登录 CVM 终端后,先更新系统包并安装 Node.js 运行时。
1. 系统包更新
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git build-essential
执行后,系统软件索引将完成刷新,并安装必要的编译与网络工具。
2. 安装 Node.js LTS
建议通过 NodeSource 官方源安装长期支持版本:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
安装完成后,通过 node -v 和 npm -v 确认版本号是否正确。
三、应用部署与 PM2 进程托管
生产环境需避免单进程运行,以防异常崩溃导致服务中断。使用 PM2 可以实现进程守护与多核 CPU 利用。
1. 安装 PM2
sudo npm install -g pm2
2. 应用构建
将代码拉取至服务器目录(如 /var/www/api)并执行构建:
cd /var/www/api
npm install --production=false
# NestJS 项目需执行编译
npm run build
3. 配置 PM2 启动文件
在项目根目录创建 ecosystem.config.js:
module.exports = {
apps: [
{
name: 'oversea-api',
script: './dist/main.js', // 根据实际入口文件修改
instances: 'max', // 开启集群模式利用多核
exec_mode: 'cluster',
env_production: {
NODE_ENV: 'production',
PORT: 3000 // 监听本地端口
}
}
]
};
4. 启动与自启动设置
pm2 start ecosystem.config.js --env production
pm2 save
pm2 startup systemd
使用 pm2 status 检查应用是否处于 online 状态。
四、Nginx 反向代理与 SSL 证书配置
Nginx 负责处理 TLS 握手、Header 透传及流量转发,避免 Node.js 直接暴露在公网。
1. 安装 Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
2. 配置站点
编辑 /etc/nginx/sites-available/api.conf:
server {
listen 80;
server_name api.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
激活配置并重启:
sudo ln -s /etc/nginx/sites-available/api.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
3. 自动化 SSL 证书
使用 Certbot 获取 Let's Encrypt 证书:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d api.yourdomain.com
Certbot 会自动修改 Nginx 配置并设置 301 重定向。可通过 sudo systemctl status certbot.timer 查看自动续期状态。
五、出海 API 部署架构对比
根据业务阶段选择合适的架构:
| 维度 | CVM 独立部署 | 容器服务 (TKE) | 无服务器 (SCF) |
|---|---|---|---|
| 场景 | 中早期业务、单一服务 | 规模化微服务、高并发 | 事件驱动、低频调用 |
| 掌控度 | 完全掌控 OS 与内核 | 掌控镜像与编排 | 仅掌控代码,底层托管 |
| 运维 | 需 Linux 运维经验 | 需容器编排经验 | 无需维护基础设施 |
| 弹性 | 依赖实例横向扩展 | 容器秒级扩容 | 毫秒级自动触发 |
| 成本 | 实例固定费用 + 流量 | 计算资源 + 管理费 + 流量 | 按请求量与时长计费 |
六、验证与排错
1. 连通性测试
curl -I https://api.yourdomain.com/health
返回 200 OK 且证书链完整即为正常。
2. 常见排错
- 连接超时:检查腾讯云安全组是否放通 80/443 端口,以及 Ubuntu 内部
ufw防火墙设置。 - 502 Bad Gateway:通常是 Nginx 无法连接后端。检查
pm2 list确认 Node 进程是否运行,并核对端口号。 - SSL 签发失败:确认域名解析已生效,且 80 端口未被占用。
七、资源清理建议
若环境仅用于测试,完成后请及时处理以避免持续计费:
1. 销毁 CVM:按量计费实例需关机后执行销毁。
2. 释放公网 IP:解绑并释放闲置的弹性公网 IP(EIP)。
3. 删除快照:清理不再需要的磁盘快照。
八、常见问题(FAQ)
1. 腾讯云国际版云服务器适合哪些业务场景,选型时应关注什么?
这取决于业务类型、用户分布及运维能力。选型时应重点关注:目标用户所在地域的访问延迟、应用负载类型(如 API 或数据处理)、内存配额、带宽计费模式以及多可用区容灾能力。建议先通过小规模实例验证链路表现。
2. 在腾讯云国际版 CVM Ubuntu 上部署 Node.js 出海 API,安全组端口与防火墙需要放行哪些规则?
控制台安全组需放通 TCP 22、80 和 443。若开启了系统级 UFW 防火墙,也需执行 sudo ufw allow 放行相应端口。Node.js 监听的 3000 等后端端口应限制在 127.0.0.1,严禁对全网开放。
3. NestJS/Express 生产部署中,PM2 集群模式与 Nginx 反向代理如何分工?
PM2 负责应用内部的进程管理,利用多核 CPU 实现并发处理与崩溃重启;Nginx 处于接入层,负责 SSL 加密、静态资源缓冲及请求转发。两者结合可确保服务的高可用与安全性。