在轻量应用服务器(如腾讯云 Lighthouse、阿里云轻量等)上部署 Python 后端以支持微信小程序访问,核心是搭建可公网访问的 API 服务。以下是完整、安全、可落地的部署方案:
✅ 一、前置准备
- 小程序配置
- 已在 微信公众平台 注册小程序。
- 获取
AppID和AppSecret。 - 在「开发设置」中配置合法域名(需 HTTPS + ICP 备案,或测试环境用本地X_X)。
- 服务器要求
- 已购买轻量应用服务器(推荐 Ubuntu 20.04+ / CentOS 7+)。
- 开放必要端口(默认 80/443,若用 Nginx 反向X_X则无需直接暴露 Flask/Django 端口)。
- 已完成 ICP 备案(生产环境必须;测试可用临时域名 + 微信开发工具模拟)。
✅ 二、后端代码示例(Flask + Gunicorn)
# app.py
from flask import Flask, request, jsonify
import json
app = Flask(__name__)
@app.route('/api/user/login', methods=['POST'])
def login():
data = request.get_json()
code = data.get('code')
# 调用微信登录接口换取 openid/session_key
# 注意:实际项目中应使用 requests 库并发请求,并缓存 session_key
wx_url = f"https://api.weixin.qq.com/sns/jscode2session?appid=YOUR_APPID&secret=YOUR_SECRET&js_code={code}&grant_type=authorization_code"
# ... 实现逻辑略
return jsonify({"openid": "xxx", "session_key": "yyy"}), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
💡 建议:生产环境使用
gunicorn替代flask run,并配合nginx反向X_X。
✅ 三、部署步骤(Ubuntu 为例)
1️⃣ 安装依赖
sudo apt update
sudo apt install python3-pip python3-venv nginx -y
# 创建虚拟环境
cd /opt/myapp
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install flask gunicorn requests
2️⃣ 启动服务(Gunicorn)
# 后台运行(生产推荐 systemd 管理,此处简化演示)
gunicorn --bind 127.0.0.1:5000 --workers 2 app:app
⚠️ 不要直接让 Flask 监听
0.0.0.0!仅通过 Nginx 反向X_X暴露。
3️⃣ 配置 Nginx 反向X_X + HTTPS
# /etc/nginx/sites-available/myapp
server {
listen 80;
server_name your-domain.com; # 替换为你的域名
location / {
proxy_pass http://127.0.0.1:5000;
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;
}
# 强制 HTTPS(可选但推荐)
if ($scheme != https) {
return 301 https://$host$request_uri;
}
}
启用站点并重启:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx
4️⃣ 申请 SSL 证书(Let’s Encrypt 免费)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
# 自动配置 HTTPS + 续期
✅ 此时你的 API 可通过 https://your-domain.com/api/... 访问。
✅ 四、小程序端对接要点
- 请求地址:必须为 HTTPS + 已备案域名(或测试环境用「开发设置」中的临时域名)。
- 登录流程:
- 前端调用
wx.login()获取code - 发送
code到你的后端/api/user/login - 后端用
code + AppID + Secret调用微信接口换openid - 返回自定义 token(如 JWT)给前端存储
- 前端调用
- 注意事项:
- ❌ 禁止将
AppSecret写在小程序前端代码中! - ✅ 所有敏感操作(登录、支付)必须在服务端完成。
- ❌ 禁止将
🔒 安全加固建议
| 项目 | 措施 |
|---|---|
| 防火墙 | 仅开放 80/443,关闭 SSH 非标准端口(改用密钥登录) |
| 防暴力破解 | Nginx 限流 + Fail2Ban 拦截异常 IP |
| 数据加密 | 全站 HTTPS;敏感字段 AES 加密存储 |
| 日志审计 | 记录登录/IP/操作行为,定期清理 |
🧪 测试验证
- 使用微信开发者工具 → 真机调试 → 输入你的域名
- 检查浏览器 Network 面板:请求头是否带
User-Agent: MicroMessenger? - 验证
wx.request能否成功收到 JSON 响应?
需要我提供:
- Django 版本部署脚本?
- Docker Compose 一键部署模板?
- 微信小程序登录完整流程图?
- 如何绕过 ICP 备案进行本地开发调试(wxs X_X方案)?
欢迎告诉我你的技术栈偏好,我可定制详细方案 👇
云服务器