【一条龙】微信小程序Flask后端--部署服务器、域名解析、docker后台、Nginx支持Https
前端:js(微信开发者工具)
后端:python+Flask
服务器:ucloud香港2C2G
域名:腾讯云.top
1. 前期准备
1.1 小程序注册、下载开发工具
小程序管理页面:mp.weixin.qq.com/
1.2 域名注册
A.腾讯云:dnspod.cloud.tencent.com/
B.实名认证 按提示上传身份证
C.SSL认证&证书下载
按提示-选择个人认证
下载SSL证书
1.3 服务器
ucloud官网 www.ucloud.cn/
选个轻量云主机
选择ubuntu系统
1.4 远程连接服务器
FinalShell www.hostbuf.com/
2. 服务器配置
FinalShell连接ubuntu服务器
2.1 安装docker
# 1. 更新软件包
sudo apt update
sudo apt upgrade
# 2. 安装docker依赖
apt-get install ca-certificates curl gnupg lsb-release
# 3. 添加Docker官方GPG密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 4. 添加软件源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 5. 安装docker
apt-get install docker-ce docker-ce-cli containerd.io
# 6. 运行docker
systemctl start docker
常用docker命令
# mynginx为容器名
docker logs -f mynginx
docker start mynginx
docker rm -f mynginx
docker restart mynginx
docker ps -a # 查看所有容器镜像状态
fuser -k 80/tcp # 过滤80端口占用
# 运行容器
# 注:《容器目录》会同步变更《映射目录》的内容,更改《映射目录》配置和html等,再docker restart mynginx更新容器
docker run -d -p 80:80 -p 443:443 --name mynginx \ # 监听端口80 443
-v /mydata/nginx/html:/usr/share/nginx/html \ # -v 挂载《映射目录》《容器目录》
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-v /mydata/nginx/cert:/etc/nginx/cert \
--restart always \
--privileged=true \
nginx
2.2 安装nginx
用docker安装nginx
docker pull nginx
2.3 配置nginx&安装SSL
A. 新建映射目录
mkdir /mydata/nginx/html -p
mkdir /mydata/nginx/log -p
mkdir /mydata/nginx/cert -p
B. 拷贝nginx配置
# 运行一次容器获取默认配置
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-d nginx
# 拷贝配置到指定目录
docker container cp xiliu-nginx:/etc/nginx /mydata/nginx/
# 进入 /mydata/nginx/ 目录,修改配置目录名称为 conf。
mv nginx conf
# 停止容器
docker stop nginx
# 删除容器
docker rm nginx
C. 运行nginx镜像
docker run -d -p 80:80 -p 443:443 --name mynginx \ #https端口
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-v /mydata/nginx/cert:/etc/nginx/cert \
--restart always \ # 配置更新,自动重启
--privileged=true \ # 容器内root权限
nginx
D. 安装SSL,配置域名
# 查看刚运行的nginx镜像
docker ps -a
1)将1.2处下载的证书,上传至/mydata/nginx/cert中
2)新建配置
在/mydata/nginx/conf/conf.d/ 新建文件my_nginx.conf
注:
- /mydata/nginx/conf/nginx.conf 文件为nginx的全局配置文件,不要更改
- nginx启动会加载这个目录下所有配置文件 /mydata/nginx/conf/conf.d
- 只需调整《映射目录》/mydata/nginx/ 下的文件即可
3)my_nginx.conf配置
修改后,手动重启docker
server {
listen 80;
server_name www.yafeiya.top; # 域名
# 强制跳转到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name www.yafeiya.top; # 域名
ssl_certificate /etc/nginx/cert/yafeiya.crt; #证书文件路径 --来自容器目录
ssl_certificate_key /etc/nginx/cert/yafeiya.key; #证书私钥文件路径 --来自容器目录
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://165.154.20.130:8080; # 替换为后端服务地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4)检查配置
docker ps -a # 查看nginx是否正确运行
docker logs -f mynginx # 错误,则查看日志
https验证
- 页面内容访问相同 https://域名 == ip+端口
- http://域名 ==》自动跳转到https://域名
- 利用小程序wx.uploadFile或wx.downloadFile
3. 后端部署
3.1 程序入口
main.py
from flask import Flask, request
app = Flask(__name__)# 声明app
app.secret_key = os.urandom(16)#设置session的密钥
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
pass
# ...路由...
# 启动Flask Web服务
if __name__ == '__main__':
app.run(host=sys.argv[1], port=sys.argv[2])
3.2 服务器部署
A. 上传后端文件至服务器
例:/home/workshop/miniprogram/
//home/workshop/miniprogram/
│
├── main.py
├── requirements.txt
└── Dockerfile
B. dockerfile创建
创建并编辑Dockerfile文件
# 使用 Python 官方镜像
FROM python:3.9-slim
# 设置工作目录
COPY . /app
WORKDIR /app
#requirements.txt 并安装依赖
COPY requirements.txt requirements.txt
RUN pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple \
&& pip config set global.trusted-host mirrors.cloud.tencent.com \
&& pip install --upgrade pip \
&& pip install --user -r requirements.txt
# 端口8080根据实际修改
EXPOSE 8080
CMD ["python3", "main.py", "0.0.0.0", "8080"]
C. Docker 镜像
docker build -t miniprogram .
docker run --name mini -d -p 8080:8080 miniprogram
# 检查后台运行日志
docker logs -f mini
4. 小程序部署
4.1 小程序开发设置
小程序管理页面按流程提示:
开发管理--》实名+程序信息+备案
4.2 开发
进入微信小程序前端开发界面--》选择基础模板--》coding
4.3 小程序--服务器域名
根据实际与服务器通信需求,添加SSL域名
4.4 上传&审核
微信小程序前端开发工具
微信小程序管理页面

浙公网安备 33010602011771号