在阿里云上部署 Node.js 应用,通常有以下几种主流方案,你可以根据项目规模、运维能力和成本需求选择:
✅ 推荐方案对比
| 方案 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| ECS + PM2/Nginx | 自定义控制、学习/测试、中小型项目 | 灵活、成本低、完全可控 | 需自行配置运维(安全、监控、备份) |
| Serverless (函数计算 FC) | 事件驱动、API 后端、突发流量 | 免运维、按量付费、自动扩缩容 | 冷启动延迟、调试稍复杂 |
| 容器服务 ACK (K8s) | 微服务、高可用、CI/CD 流水线 | 弹性强、可编排、适合生产级 | 学习曲线陡峭、成本较高 |
| 云托管(Cloud Run / App Engine 替代) | 快速上线、简单 Web 服务 | 极简部署、自动 scaling | 目前阿里云无直接对标产品(可用 EDAS 或 FC 替代) |
💡 新手建议从 ECS + PM2 开始;追求“零运维”可选 函数计算(FC)。
🚀 方案一:ECS + PM2(最常用 & 灵活)
步骤概览:
- 购买 ECS 实例(推荐 Ubuntu 20.04+ 或 CentOS 7.9)
- 安装 Node.js 和 PM2
- 上传代码 → 启动服务 → 配置防火墙 & Nginx(可选)
详细操作:
1️⃣ 创建 ECS 实例
- 登录 阿里云控制台
- 进入 云服务器 ECS → 创建实例
- 地域:选靠近用户的位置(如华东1-杭州)
- 镜像:Ubuntu 22.04 LTS(推荐)或 CentOS 7.9
- 配置:最低
ecs.c6.large(2核4G)即可跑 Node 应用 - 网络:公网 IP 勾选(或绑定 EIP)
- 安全组:放行
22(SSH)、80(HTTP)、3000(你的 Node 端口)等
2️⃣ SSH 登录并安装环境
# 通过终端连接
ssh root@<你的ECS公网IP>
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Node.js(使用 nvm 推荐)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc
nvm install --lts # 安装最新 LTS(如 v20.x)
node -v && npm -v
# 安装 PM2
sudo npm install -g pm2
3️⃣ 部署应用
# 上传代码(用 scp 或 git clone)
git clone <你的仓库地址> ~/my-node-app
cd ~/my-node-app
# 安装依赖
npm install
# 启动(开发模式)
pm2 start app.js --name my-app
# 开机自启 & 保存进程列表
pm2 startup
pm2 save
✅ 访问:http://<ECS公网IP>:3000(假设你的 app.listen(3000))
4️⃣ (进阶)反向X_X + HTTPS(生产必备)
安装 Nginx 并配置域名 + Let’s Encrypt 证书:
sudo apt install nginx certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com
编辑 /etc/nginx/sites-available/default:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost: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;
}
}
重启:sudo systemctl restart nginx
☁️ 方案二:函数计算(FC)—— Serverless 方式
适合 RESTful API、定时任务、文件处理等场景。
快速上手:
- 登录 函数计算控制台
- 创建服务 → 创建函数(Node.js 8/12/14/16/18 runtime)
- 上传代码包(zip)或从 GitHub 同步
- 配置触发器:
- HTTP 触发器(生成 API URL)
- 定时触发器(Cron)
- OSS 事件等
- 发布 → 调用测试
✅ 优势:
- 无需管理服务器
- 按请求次数和时长计费(免费额度充足)
- 自动高可用 & 弹性伸缩
⚠️ 注意:
- 冷启动可能影响首响(可配置预留实例数缓解)
- 本地调试需用
fcli工具或 Docker 模拟
🔗 参考文档:函数计算 Node.js 部署指南
🔐 安全与优化建议(无论哪种方案)
| 项目 | 建议 |
|---|---|
| 密码/密钥 | 使用阿里云 KMS 或环境变量管理,勿硬编码 |
| 日志 | 接入 SLS(日志服务),集中采集分析 |
| 监控 | 启用云监控(CPU/内存/网络告警) |
| 备份 | 定期快照 ECS 磁盘;数据库用 RDS 自动备份 |
| DDoS 防护 | 开启 DDoS 基础防护(免费版 5Gbps);高防需额外购买 |
| 域名解析 | 用阿里云 DNS 解析到 ECS IP 或 SLB |
📌 下一步行动建议
- 🎯 如果是个人项目/学习 → 选 ECS + PM2(今天就能跑起来)
- 🚀 如果要做正式 API 服务且不想运维 → 选函数计算
- 🏢 如果是企业级微服务 → 考虑 ACK + Ingress + CI/CD
需要我帮你:
- 生成一份完整的
Dockerfile+docker-compose.yml? - 写一个 Node.js 示例项目(含 Express + JWT + MongoDB)?
- 提供阿里云 CLI 自动化部署脚本?
欢迎告诉我你的具体场景,我可以定制方案! 😊
CLOUD云枢