把微信小程序后端部署到阿里云,核心逻辑其实就三步:环境准备 -> 资源创建与配置 -> 代码上线与调试。
作为过来人,我不喜欢讲那些虚头巴脑的概念,直接上实操步骤。这里假设你使用的是最主流、性价比最高的架构:ECS(云服务器)+ Nginx + Node.js/Java/Python等具体语言运行时。如果你用的是 Serverless(如 FC),逻辑类似但更简单,后面会提一下。
第一阶段:前期准备(别跳过这步,否则后面全是坑)
-
域名备案
- 硬性规定:微信小程序强制要求后端接口必须是 HTTPS,且域名必须经过 ICP 备案。
- 操作:在阿里云控制台提交域名备案。这个过程通常需要 1-3 周。没备案成功前,你的小程序调用接口会报
domain not in whitelist或者网络错误。 - 注意:确保你的服务器 IP 和域名指向一致,且 DNS 解析已生效。
-
安全组配置(防火墙)
- 阿里云 ECS 默认只开放了 SSH (22) 端口。你需要手动添加规则,放行 HTTP (80) 和 HTTPS (443) 端口,以及你后端服务实际运行的端口(比如 Node.js 的 3000,Java 的 8080)。
- 建议:生产环境尽量只开放 80/443,让 Nginx 做反向XX转发到内部端口,这样更安全。
-
SSL 证书
- 微信要求 HTTPS。你可以去阿里云“云解析 DNS”或“SSL 证书”服务申请免费的 DV 证书(每年可续),或者购买付费证书。
- 下载证书文件(通常是
.crt和.key),后续要放到服务器上。
第二阶段:创建资源与基础环境搭建
-
购买 ECS 实例
- 根据业务量选择配置。个人项目或初创团队,
2核4G或4核8G足够起步。系统选Ubuntu 20.04/22.04 LTS或CentOS 7/8(推荐 Ubuntu,软件源更新快,社区支持好)。 - 地域选择离用户近的(如上海、北京),减少延迟。
- 根据业务量选择配置。个人项目或初创团队,
-
远程连接
- 使用 SSH 工具(Mac/Linux 用终端,Windows 用 Xshell 或 MobaXterm)连接服务器。
- 命令示例:
ssh root@<你的公网IP>
-
安装运行环境(以 Node.js 为例,其他语言同理)
# Ubuntu 示例 curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs # 检查版本 node -v npm -v- 如果是 Java,需要安装 JDK;如果是 Python,需要安装 pip/python3。
-
安装 Nginx(反向XX服务器)
- Nginx 的作用是接收前端请求,处理静态资源,并将 API 请求转发给后端应用,同时配置 SSL 实现 HTTPS。
sudo apt-get install nginx sudo systemctl start nginx sudo systemctl enable nginx
- Nginx 的作用是接收前端请求,处理静态资源,并将 API 请求转发给后端应用,同时配置 SSL 实现 HTTPS。
第三阶段:部署代码与配置
-
上传代码
- 推荐使用 Git 拉取,或者通过 SCP/SFTP 工具将本地代码包上传到服务器的
/var/www/html或/home/user/app目录下。 - 进入项目目录,安装依赖:
cd /path/to/your/project npm install --production # 或者 java -jar xxx.jar, python manage.py collectstatic 等
- 推荐使用 Git 拉取,或者通过 SCP/SFTP 工具将本地代码包上传到服务器的
-
配置 PM2(进程管理,Node.js 必备)
- 直接用
node app.js启动,一旦报错或重启就挂了。PM2 可以守护进程,实现开机自启、日志管理。npm install -g pm2 pm2 start app.js --name "my-api" pm2 save pm2 startup
- 直接用
-
配置 Nginx 反向XX与 HTTPS
-
这是最关键的一步。编辑 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/default -
修改内容如下(简化版):
server { listen 443 ssl; server_name your-domain.com; # 替换为你的域名 ssl_certificate /etc/nginx/ssl/cert.crt; # SSL证书路径 ssl_certificate_key /etc/nginx/ssl/cert.key; # SSL私钥路径 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; } } # 可选:HTTP 自动跳转 HTTPS server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } -
测试配置是否正确:
sudo nginx -t -
重启 Nginx:
sudo systemctl restart nginx
-
-
数据库配置
- 如果你的数据存在本地 MySQL/MongoDB,确保它们随系统启动。
- 强烈建议:对于生产环境,直接使用阿里云 RDS(关系型数据库服务)或 MongoDB Atlas。不要自建数据库存生产数据,备份、高可用、性能优化都很麻烦。RDS 有内网地址,ECS 访问速度极快且免费流量。
第四阶段:小程序端配置与测试
-
配置 request 合法域名
- 登录 微信公众平台 -> 开发 -> 开发设置 -> 服务器域名。
- 在
request合法域名中,填入你的https://your-domain.com。 - 注意:必须带
https://,不能带端口号(除非是 443)。
-
真机调试
- 打开微信开发者工具,点击“详情” -> “本地设置”,勾选“不校验合法域名…”。
- 先在不校验的情况下测试接口连通性。
- 确认无误后,取消勾选,进行正式调试。如果报错
request error或not in domain list,检查上述域名配置和安全组。
-
提交审核
- 代码上传并审核通过后,发布版本。
进阶建议(避坑指南)
-
关于 Serverless(函数计算 FC)
- 如果你不想维护服务器、Nginx、PM2,可以考虑阿里云函数计算 FC + API 网关。
- 优点:按量付费,无需运维,自动扩缩容,天然支持 HTTPS。
- 缺点:冷启动延迟(可通过预留实例解决),调试不如本地直观,复杂长连接场景不适合。
- 适合:轻量级 API、定时任务、突发流量大的场景。
-
监控与告警
- 部署完不是结束。开启阿里云“云监控”,设置 CPU、内存、带宽阈值告警。
- 配置日志服务 SLS,收集 Nginx 和应用日志,方便排查问题。
-
数据安全
- 不要在代码里硬编码数据库密码。使用环境变量或阿里云 KMS(密钥管理服务)。
- 定期备份数据库。
-
成本优化
- 初期可以用按量付费试水,稳定后转包年包月。
- 利用阿里云“弹性伸缩”(ESS),在流量低谷时自动降配,高峰时扩容。
总结:
流程就是:备案域名 -> 买 ECS -> 装 Nginx/运行环境 -> 传代码 -> 配 SSL -> 配 Nginx 反向XX -> 小程序后台加域名白名单 -> 上线。
只要按照这个顺序走,基本不会翻车。遇到具体问题,先看 Nginx 错误日志(/var/log/nginx/error.log),90% 的问题都能在那里找到答案。
云技术博客