【一条龙】微信小程序Flask后端--部署服务器、域名解析、docker后台、Nginx支持Https

前端:js(微信开发者工具)

后端:python+Flask

服务器:ucloud香港2C2G

域名:腾讯云.top

1. 前期准备

1.1 小程序注册、下载开发工具

小程序管理页面:mp.weixin.qq.com/

1.2 域名注册

A.腾讯云dnspod.cloud.tencent.com/

image.png

B.实名认证 按提示上传身份证

C.SSL认证&证书下载

按提示-选择个人认证

image.png

下载SSL证书

image.png

1.3 服务器

ucloud官网 www.ucloud.cn/

选个轻量云主机

选择ubuntu系统 image.png

1.4 远程连接服务器

FinalShell www.hostbuf.com/

2. 服务器配置

FinalShell连接ubuntu服务器

image.png

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中

image.png

2)新建配置

在/mydata/nginx/conf/conf.d/ 新建文件my_nginx.conf

注:

  1. /mydata/nginx/conf/nginx.conf 文件为nginx的全局配置文件,不要更改
  2. nginx启动会加载这个目录下所有配置文件 /mydata/nginx/conf/conf.d
  3. 只需调整《映射目录》/mydata/nginx/ 下的文件即可
image.png

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验证
  1. 页面内容访问相同 https://域名 == ip+端口
  2. http://域名 ==》自动跳转到https://域名
  3. 利用小程序wx.uploadFile或wx.downloadFile
image.png

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

image.png

4.3 小程序--服务器域名

根据实际与服务器通信需求,添加SSL域名

image.png

4.4 上传&审核

微信小程序前端开发工具

image.png

微信小程序管理页面

image.png
posted @ 2024-07-28 00:10  Jubar  阅读(119)  评论(0)    收藏  举报  来源