在 CentOS 上部署微信小程序后端 API,通常涉及服务器环境搭建、代码部署、域名与 HTTPS 配置、以及微信接口对接等步骤。以下是一个完整、实用的部署流程(以 Node.js + Express 为例,其他语言类似):
✅ 一、前期准备
1. 系统要求
- CentOS 7/8(推荐最小内存 2GB)
- 已注册微信公众平台账号(测试号或正式号)
- 已购买并备案的域名(必须支持 HTTPS,且域名需解析到服务器 IP)
- 服务器安全组/防火墙开放端口:
80、443、22
⚠️ 注意:微信小程序强制要求后端接口使用 HTTPS,且证书需由可信 CA 颁发(阿里云/腾讯云/AWS 等可免费申请)。
✅ 二、安装基础环境
# 更新系统
sudo yum update -y
# 安装 Git
sudo yum install -y git
# 安装 Node.js(推荐 LTS 版本)
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo yum install -y nodejs
# 验证安装
node -v # 如 v18.x.x
npm -v # 如 9.x.x
💡 若用 Python/Java/Go,可分别安装
python3/openjdk/go,后续逻辑类似。
✅ 三、部署后端代码
假设你的项目位于本地 /my-weapp-api,包含 package.json 和入口文件 server.js:
# 创建远程目录
mkdir -p /opt/weapp-api
cd /opt/weapp-api
# 上传代码(方式任选其一):
# 方式1:Git clone(推荐)
git clone <your-repo-url> .
# 方式2:SCP 上传压缩包后解压
scp my-app.tar.gz root@your-server:/opt/weapp-api/
tar -xzf my-app.tar.gz
# 安装依赖
npm install --production
# 设置环境变量(可选但推荐)
cat > .env << EOF
NODE_ENV=production
PORT=3000
APP_ID=your_appid
APP_SECRET=your_appsecret
DB_HOST=localhost
DB_USER=root
DB_PASS=yourpassword
EOF
✅ 四、配置 HTTPS(关键!)
方案 A:使用 Nginx + Let’s Encrypt(免费自动续期)
# 安装 Nginx & Certbot
sudo yum install -y epel-release
sudo yum install -y nginx certbot python3-certbot-nginx
# 停止 Node 服务监听公网(仅内网暴露)
# 修改 server.js 中 PORT 为 3000,Nginx 反向X_X到它
# 编辑 Nginx 配置
sudo vi /etc/nginx/conf.d/weapp.conf
示例配置 weapp.conf:
server {
listen 80;
server_name api.yourdomain.com;
# 重定向到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
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_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_cache_bypass $http_upgrade;
}
}
✅ 获取证书:
sudo certbot --nginx -d api.yourdomain.com
# 按提示输入邮箱,同意条款 → 自动生成并配置 SSL
✅ 启动 Nginx:
sudo systemctl enable nginx
sudo systemctl start nginx
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
✅ 五、运行后端服务(生产模式)
方案 1:使用 PM2(推荐,进程守护+日志管理)
sudo npm install -g pm2
pm2 start server.js --name weapp-api --env production
pm2 save
pm2 startup systemd # 生成开机自启命令并执行
查看状态:
pm2 status
pm2 logs weapp-api
方案 2:Systemd 服务(更轻量)
创建 /etc/systemd/system/weapp-api.service:
[Unit]
Description=WeChat Mini Program API
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/weapp-api
ExecStart=/usr/bin/node server.js
Restart=on-failure
Environment="NODE_ENV=production"
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl enable weapp-api
sudo systemctl start weapp-api
✅ 六、配置微信公众平台
- 登录 微信公众平台
- 进入「开发」→「开发设置」
- 填写:
- 服务器域名:
https://api.yourdomain.com(需包含协议头) - 业务域名(如需网页授权):
https://www.yourdomain.com - JS 接口安全域名(如有前端调用):同上
- 服务器域名:
- 提交审核(正式号需审核;测试号可直接填)
🔐 注意:首次添加域名需通过
wechat.js中的wx.requestSubscribeMessage等接口触发一次验证,或在后台点击“校验”按钮(部分场景需配合小程序端操作)。
✅ 七、验证与监控
- 用 Postman 测试 HTTPS 接口:
https://api.yourdomain.com/health - 检查微信日志:平台后台 →「开发」→「接口检测」
- 监控资源:
htop,pm2 monit, 或接入 Prometheus + Grafana
📌 常见问题排查
| 问题 | 解决方案 |
|---|---|
ERR_SSL_VERSION_OR_CIPHER_MISMATCH |
确保 Nginx 正确配置了 Let’s Encrypt 证书;检查 ssl_protocols TLSv1.2 TLSv1.3 |
| “非法域名”错误 | 检查是否带 https://;域名是否已在微信公众平台备案并填入;子域名是否被正确解析 |
| 证书过期 | certbot renew 自动续期(建议加 crontab 每日检查) |
| 端口被防火墙拦截 | firewall-cmd --list-all 确认 80/443 开放 |
需要我提供:
- Python(Flask/Django)部署示例?
- Java(Spring Boot)+ Tomcat/Nginx 方案?
- Docker 化部署脚本?
- 自动化 CI/CD(GitHub Actions + SSH 部署)流程?
欢迎告诉我你的技术栈,我可以定制详细步骤!
PHPWP博客