在阿里云上部署小程序的 Node.js 后端服务,通常包括以下几个关键步骤。以下是完整的流程说明,适用于大多数微信小程序或支付宝小程序等轻量级前端应用。
一、前期准备
-
注册阿里云账号
- 访问 阿里云官网
- 注册并完成实名认证
-
购买云服务器 ECS
- 推荐配置(根据业务规模):
- 实例类型:ECS 共享型 s6 或通用型 g6
- 操作系统:CentOS 7.9 / Ubuntu 20.04 LTS / Alibaba Cloud Linux
- 带宽:1~5 Mbps(视访问量而定)
- 系统盘:40 GB 高效云盘或 SSD
- 安全组:开放必要的端口(如 22、80、443)
- 推荐配置(根据业务规模):
-
域名备案(国内服务器必须)
- 如果你的服务面向中国大陆用户,需进行 ICP 备案
- 购买域名 → 提交备案申请 → 审核通过后使用
二、服务器环境搭建
1. 登录服务器(SSH)
ssh root@<你的公网IP>
2. 安装 Node.js 和 npm
推荐使用 nvm 安装指定版本:
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
# 安装 Node.js(例如 v18)
nvm install 18
node -v # 验证安装
npm -v
3. 安装 PM2(进程管理工具)
npm install -g pm2
4. 安装 Nginx(反向X_X & HTTPS)
# CentOS
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
# Ubuntu
sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
三、上传和部署 Node.js 项目
1. 上传代码
方式一:使用 Git(推荐)
git clone https://github.com/yourname/your-nodejs-backend.git
cd your-nodejs-backend
npm install
方式二:本地打包上传(使用 SCP)
scp -r ./dist root@<IP>:/root/myapp
2. 配置启动脚本
创建 ecosystem.config.js(PM2 配置文件):
module.exports = {
apps: [
{
name: 'miniapp-api',
script: './app.js', // 入口文件
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}
]
};
3. 使用 PM2 启动服务
pm2 start ecosystem.config.js --env production
pm2 save
pm2 startup # 设置开机自启
4. 配置防火墙(开放端口)
假设你的 Node.js 监听 3000 端口:
# CentOS(firewalld)
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload
# Ubuntu(ufw)
sudo ufw allow 3000
⚠️ 注意:不建议直接暴露 3000 端口给网络,应通过 Nginx 反向X_X。
四、配置 Nginx 反向X_X
编辑 Nginx 配置文件:
sudo vim /etc/nginx/conf.d/api.yourdomain.com.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_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;
proxy_cache_bypass $http_upgrade;
}
}
测试并重载 Nginx:
sudo nginx -t
sudo systemctl reload nginx
五、配置 HTTPS(SSL 证书)
1. 申请免费 SSL 证书(阿里云或 Let's Encrypt)
方式一:阿里云证书服务
- 控制台 → 数字证书管理服务 → 申请免费证书
- 下载 Nginx 版证书,上传到服务器
/etc/nginx/ssl/
方式二:Let's Encrypt(推荐自动化)
使用 Certbot(以 Ubuntu 为例):
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d api.yourdomain.com
Certbot 会自动修改 Nginx 配置并启用 HTTPS。
更新后的 Nginx 配置示例:
server {
listen 443 ssl;
server_name api.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
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;
}
}
# HTTP 强制跳转 HTTPS
server {
listen 80;
server_name api.yourdomain.com;
return 301 https://$server_name$request_uri;
}
六、数据库配置(如 MongoDB / MySQL)
-
选择数据库方案:
- 自建数据库(安装在 ECS 上)
- 使用阿里云 RDS(推荐,更稳定安全)
-
连接数据库
- 在 Node.js 中使用
mongoose(MongoDB)或mysql2(MySQL) - 配置
.env文件管理数据库连接字符串
- 在 Node.js 中使用
DB_URI=mongodb://username:password@dds-xxxx.mongodb.rds.aliyuncs.com:3717/dbname
NODE_ENV=production
PORT=3000
注意:RDS 需要配置白名单(添加 ECS 的内网 IP)
七、小程序端调用接口
在小程序中请求你的 API:
wx.request({
url: 'https://api.yourdomain.com/api/login',
method: 'POST',
data: { code: '...' },
success(res) {
console.log(res.data);
}
})
✅ 确保在小程序管理后台「开发设置」中添加
request合法域名。
八、监控与维护
-
日志查看
pm2 logs miniapp-api -
性能监控
- 使用
pm2 monit - 阿里云云监控服务
- 使用
-
自动重启与更新
- 使用 CI/CD 工具(如 Jenkins、GitHub Actions)
- 示例 GitHub Action 自动部署脚本
-
定期备份
- 数据库备份(RDS 自动备份)
- 代码和配置文件快照
总结:完整流程图
[阿里云 ECS] + [域名备案]
↓
安装 Node.js + PM2 + Nginx
↓
上传 Node.js 后端代码
↓
PM2 启动服务(监听 3000)
↓
Nginx 反向X_X(80/443 → 3000)
↓
配置 SSL 证书(HTTPS)
↓
连接数据库(RDS 或自建)
↓
小程序前端调用 HTTPS 接口
↓
上线 + 监控 + 维护
✅ 最佳实践建议:
- 使用阿里云 RDS、OSS 分离服务
- 开启云防火墙和安全组最小权限
- 使用环境变量管理配置
- 日志集中管理(可接入 SLS)
- 使用负载均衡(SLB)应对高并发
如有需要,可以进一步集成 CI/CD 自动化部署(如 GitHub Actions + SSH 部署)。
如果你提供具体的技术栈(如 Express/Koa/NestJS),我可以给出更具体的部署配置。
CLOUD云计算