在轻量应用服务器(如腾讯云轻量应用服务器、阿里云轻量服务器等)上部署 Python 后端服务,使其支持微信小程序访问,通常需要以下几个步骤。以下以使用 Flask + Nginx + Gunicorn 为例,说明完整流程:
✅ 一、环境准备
-
购买并登录轻量应用服务器
- 系统建议选择 Ubuntu 20.04 或 CentOS 7+
- 开放端口:确保防火墙开放
80(HTTP)、443(HTTPS)、5000(可选调试端口)
-
更新系统并安装基础工具
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian # 或 sudo yum update -y # CentOS
安装必要软件:
sudo apt install python3 python3-pip python3-venv nginx git -y
✅ 二、上传或克隆你的 Python 后端项目
假设你有一个基于 Flask 的后端项目,结构如下:
/myproject
├── app.py
├── requirements.txt
└── ...
方式一:通过 Git 克隆
git clone https://github.com/yourname/your-flask-app.git /myproject
cd /myproject
方式二:本地上传(使用 SCP)
scp -r ./myproject ubuntu@your-server-ip:/home/ubuntu/
✅ 三、创建虚拟环境并安装依赖
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
常用包示例(requirements.txt):
Flask==2.3.3
gunicorn==21.2.0
flask-cors==4.0.0
✅ 四、编写 WSGI 启动文件(如 wsgi.py)
# wsgi.py
from app import app # 假设 app.py 中定义了 Flask 实例 app
if __name__ == "__main__":
app.run()
✅ 五、使用 Gunicorn 运行 Flask 应用
测试运行:
gunicorn -w 4 -b 127.0.0.1:8000 wsgi:app
-w 4: 启动 4 个工作进程-b 127.0.0.1:8000: 绑定到本地 8000 端口wsgi:app: 模块名:Flask 实例名
⚠️ 注意:不要直接绑定到 0.0.0.0:80,应由 Nginx 反向X_X。
✅ 六、配置 Nginx 反向X_X
编辑 Nginx 配置:
sudo nano /etc/nginx/sites-available/myapp
内容如下:
server {
listen 80;
server_name your-domain.com; # 或者你的公网 IP
location / {
proxy_pass http://127.0.0.1:8000;
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;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default # 删除默认站点
sudo nginx -t # 测试配置
sudo systemctl reload nginx
✅ 七、使用 Supervisor 守护进程(防止 Gunicorn 挂掉)
安装 Supervisor:
sudo apt install supervisor -y
创建配置文件:
sudo nano /etc/supervisor/conf.d/myapp.conf
内容:
[program:myapp]
command=/myproject/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 wsgi:app
directory=/myproject
user=ubuntu
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/myapp.log
environment=PYTHONPATH="/myproject"
重新加载 Supervisor:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myapp
✅ 八、配置域名与 HTTPS(推荐)
-
绑定域名
- 在 DNS 服务商将域名 A 记录指向服务器公网 IP
-
使用 Let’s Encrypt 免费证书
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your-domain.com
之后 Nginx 自动配置 HTTPS,流量自动跳转 443。
✅ 九、小程序端访问注意事项
-
合法域名配置
- 登录 微信公众平台
- 进入「开发管理」→「开发设置」→「服务器域名」
- 将你的后端域名(如
https://api.your-domain.com)添加到 request 合法域名
-
必须使用 HTTPS
- 小程序只允许 HTTPS 请求
- 所以必须配置 SSL 证书(Let’s Encrypt 即可)
-
CORS 处理(Python 后端)
在 Flask 中启用 CORS:from flask_cors import CORS app = Flask(__name__) CORS(app) # 允许跨域
✅ 十、测试访问
- 浏览器访问:
https://your-domain.com/api/test(确保返回数据) - 小程序中调用:
wx.request({ url: 'https://your-domain.com/api/data', success(res) { console.log(res.data) } })
🔒 安全建议
- 关闭不必要的端口(如 5000)
- 使用防火墙(UFW)限制访问
- 定期更新系统和依赖
- 不要在代码中硬编码密钥
✅ 总结:关键点
| 步骤 | 工具/技术 |
|---|---|
| Python 服务运行 | Gunicorn |
| 反向X_X | Nginx |
| 进程守护 | Supervisor |
| 域名与 HTTPS | Let’s Encrypt + Certbot |
| 小程序通信 | HTTPS + CORS + 合法域名配置 |
如果你使用的是其他框架(如 FastAPI、Django),原理类似,只需调整启动命令即可。
需要我提供 FastAPI 版本 或 一键部署脚本 吗?欢迎继续提问!
CLOUD技术博