一、教程目标
二、前置条件
- 阿里云国际站账号准备部署前需拥有状态正常的阿里云国际版账号,国际站注册一般需要国际信用卡、海外手机号。 若注册、资质、支付遇到门槛,翼龙云 / Yilongcloud 作为阿里云国际合作伙伴,可提供开户相关事项咨询。
- 创建并连接 ECS 实例登录控制台完成实例购买:
- 实例规格:测试、轻量项目推荐 1 核 2G;正式业务建议 2 核 4G 及以上。
- 操作系统:推荐 Ubuntu 22.04 / 24.04 LTS。
- 网络配置:勾选分配公网 IPv4 地址。
计费价格以 2026 年阿里云国际控制台实时页面为准。
本地终端 SSH 连接服务器:
ssh root@<您的ECS公网IP>
重要安全提示:
不建议将 Node.js 业务端口(如 3000)直接暴露公网,最佳实践:服务监听内网0.0.0.0,安全组仅开放 80/443,使用 Nginx 反向代理对外提供访问,避免裸端口被全网扫描探测。
pm2 startup执行后会输出一段脚本,需要复制输出命令手动执行,开机自启才会真正生效,仅运行该命令不会自动完成配置。
Node 服务务必监听0.0.0.0;若只监听127.0.0.1,即便安全组放行,外部网络依旧无法访问。
按量付费 ECS 执行【停止实例】不会释放云盘,云盘继续计费;测试完毕需要选择【释放实例】彻底销毁资源。
三、基础环境初始化与 Node.js 安装
更新系统软件包
apt update && apt upgrade -y
使用 NVM(Node Version Manager)管理 Node 版本,方便多版本切换。
提示:nvm 版本会持续更新,可以替换为官方最新脚本链接。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
安装 Node.js LTS 版本(示例 v20)
nvm install 20
验证安装
node -v
npm -v
正常输出版本号即安装成功。
排障:新开 SSH 终端执行 node 提示 command not found:执行source ~/.bashrc加载 nvm 环境变量。
四、项目代码上传与依赖安装
三种常用代码上传方式
- Git(推荐):适合版本仓库项目
- SCP/SFTP:适合少量本地文件上传
- FTP:可视化操作,需要额外部署 FTP 服务
以 Git 方式部署为例:
apt install git -y
git clone <你的项目仓库地址>
cd <项目目录>
npm install
私有仓库注意:服务器需要配置 SSH 密钥,否则无法拉取私有代码仓库。
五、使用 PM2 配置后台常驻进程
SSH 断开连接后程序会终止,使用 PM2 做进程守护、崩溃自动重启、开机自启。
全局安装 PM2
npm install pm2 -g
启动项目,入口文件以app.js举例
pm2 start app.js –name “my-node-app”
执行pm2 status,status 状态显示online代表运行正常。
设置开机自启(Ubuntu systemd 环境)
pm2 save
pm2 startup
重点:执行pm2 startup后终端会输出一条命令,复制输出的命令手动执行,开机自启功能才会真正生效。
常用运维命令
pm2 logs my-node-app # 查看项目运行日志,排查报错
pm2 restart my-node-app
pm2 stop my-node-app
安全建议:生产环境尽量不要直接使用 root 账号运行业务,建议新建普通 Linux 用户运行 Node 服务。
六、网络安全与端口配置最佳实践
❌不推荐:直接安全组放行 3000 端口对 0.0.0.0/0 开放,容易被全网扫描攻击。 ✅推荐方案:Node 服务监听0.0.0.0:3000,安全组只放行 80、443,部署 Nginx 反向代理转发到本地 3000,对外走标准 HTTP/HTTPS 端口。
- ECS 安全组入方向至少放行
- 22(SSH 远程登录,建议限制来源 IP,不要 0.0.0/0)
- 80(HTTP)
- 443(HTTPS)
- 系统防火墙检查,Ubuntu ufw
ufw status
# 如果开启防火墙,放行80/443
ufw allow 80/tcp
ufw allow 443/tcp
Nginx 反向代理简要配置思路
安装 nginx,配置站点,将公网 80/443 请求转发到本地127.0.0.1:3000,同时可配置 SSL 证书实现 HTTPS 访问。
七、访问验证
配置完 Nginx 反向代理后,浏览器访问服务器公网 IP;
若直接测试裸端口,务必确认代码监听0.0.0.0,仅监听127.0.0.1外部无法访问。
八、常见问题排障(FAQ)
Q1:NVM 安装完成,新开 SSH 终端输入 node 提示找不到命令? A:nvm 安装脚本修改.bashrc,执行source ~/.bashrc加载环境变量即可;部分极简镜像需要手动把 nvm 环境变量写入配置文件。
Q2:PM2 设置开机自启,服务器重启后项目不会自动启动? A:pm2 startup输出的脚本命令必须手动复制执行,再执行pm2 save保存进程列表,否则开机自启不生效。
Q3:安全组端口已经放行,外部依旧访问不到 Node 服务? A:依次排查三点:①项目是否监听0.0.0.0,不是127.0.0.1;②Ubuntu 系统 ufw 防火墙是否放行端口;③优先使用 Nginx 反向代理,避免直接暴露业务端口。
Q4:Git 克隆私有仓库失败? A:ECS 服务器需要配置 SSH 密钥并添加到代码仓库,否则无法拉取私有项目代码。
Q5:测试完成,如何清理按量 ECS 资源避免持续扣费? A:仅在系统内关机 / 控制台【停止实例】,云盘依旧会计费;需要控制台选择【释放实例】,勾选随实例释放 EIP、数据盘;另外单独清理快照、未绑定 EIP,避免遗留计费。
九、费用与资源清理
按量付费实例精确到秒计费。测试结束后,请检查并清理以下项:
云盘:确认无遗留的按量付费数据盘。
弹性公网 IP:释放未绑定的独立 EIP。
快照:手动删除不再需要的系统快照。