day19-微信小程序上线
今日内容
1 阿里云机器购买
# 1 为什么要买云服务器?
-第一:没服务器--》linux环境
-第二:没有公网ip--》所有互联网用户都可以访问
# 2 阿里云
-https://ecs.console.aliyun.com/server/-/detail?regionId=cn-hangzhou
# 3 包年包月:贵--》工信部备案:服务器必须是包年包月的
-不能用按量付费
# 4 选择型号购买,安装 centos9
# 5 购买成功
ip地址:47.116.196.83
用户:root
密码:LiuQingzheng1
# 6 远程连接:finallshell
-连接到云服务器上了
2 上线架构图
# 注意:
一键换脸微信小程序前后端代码,练习上线,先用我的代码练习---》等你练会后--》再换成你自己使用Trae开发的项目
上线需要很细致:路径,文件名 很严格,错一点都会产生问题

3 安装python3.11
之前大家都在win上装过python解释器了--》很简单--》一路下一步即可
# 1 补充,注意 #####
linux服务器操作系统是centos9---》默认会有python解释器环境 Python 3.9.25--》因为linux上很多软件,是基于python写的,必须要有python解释器,这些软件才能运行
我们写的项目是运行在python3.11上,如果使用 Python 3.9.25,可能就会有问题--》我们再在centos9上安装一个python3.11解释器
装完后,centos9上,会有俩 python解释器,跟pip成对出现
一对:python/python3----》python3.9.25--》pip/pip3
新装一对:python3.11----》python3.11.9--》pip3.11
#1 源码安装python,依赖一些第三方zlib* libffi-devel
dnf install openssl-devel bzip2-devel expat-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel -y
# 2 前往用户根目录
cd
#2 下载 3.11.9 源码 服务器终端
# https://registry.npmmirror.com/binary.html?path=python/
wget https://registry.npmmirror.com/-/binary/python/3.11.9/Python-3.11.9.tgz # 阿里云提供的
# wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz # 官方的,国外,慢
#3 解压安装包
tar -xf Python-3.11.9.tgz
#4 进入目标文件
cd Python-3.11.9
#5 配置安装路径:/usr/local/python3
# 把3.11.9 编译安装到/usr/local/python311路径下
./configure --prefix=/usr/local/python311
# 6 编译并安装,如果报错,说明缺依赖
# yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel -y
# make只是编译----》可执行文件,没有安装
# 类似于在win上下载了安装包,但是没安装
# make install 安装---》类似于在win上下了安装包,一路下一步安装了,指定安装位置---》/usr/local/python39
make && make install
# 7 建立软连接:/usr/local/python311路径不在环境变量,终端命令 python3,pip3
ln -s /usr/local/python311/bin/python3 /usr/bin/python3.11
ln -s /usr/local/python311/bin/pip3 /usr/bin/pip3.11
# 机器上有多个python和pip命令,对应关系如下
python/python3 3.9 pip/pip3
python3.11 3.11 pip3.11 # 自己装的
#8 删除安装包与文件:[可以留着不删]
rm -rf /root/Python-3.11.9
rm -rf /root/Python-3.11.9.tgz

4 安装nginx
# 1 nginx 软件:反向代理软件
1 请求转发:用户的http请求--》转发给别的软件--》我们使用这个功能
-用户从浏览器中访问我们地址--》被nginx接受---》转发给django项目
2 代理静态资源:浏览器中直接访问 图片,html,css,静态资源--》nginx直接返回,速度特别快
-飞机大战项目:index.html xx.css ,xx.js
-放在服务器上,使用nginx转发
-用户通过ip地址访问我们服务器---》直接返回 index.html --》就看到飞机大战游戏了
3 负载均衡
-提高项目的并发量
-假设1000 个并发--》访问我们的项目--》nginx是能顶住的--》但是 uwsgi是顶不住的
-nginx--》转发给多个uwsgi
# 1 前往用户根目录
cd ~
# 2 下载nginx 1.28.0
wget https://nginx.org/download/nginx-1.28.0.tar.gz
#3 解压安装包
tar -xf nginx-1.28.0.tar.gz
#4 进入目标文件
cd nginx-1.28.0
# 5 配置安装路径:/usr/local/nginx
# 安装 PCRE 开发包的名称是 pcre-devel,支持https访问
#zlib-devel:用于 gzip 压缩模块。openssl-devel:用于 SSL/TLS 模块(如启用 HTTPS) gcc 和 make:编译工具链
dnf install -y pcre-devel gcc make zlib-devel openssl-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module
#6 编译并安装
make && make install
# 7 建立软连接:终端命令 nginx
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
#8 删除安装包与文件:
cd ~
rm -rf nginx-1.28.0
rm -rf nginx-1.28.0.tar.xz
########### 到此就装好了######################
# 部署飞机大战---》把飞机大战源码--》放在了/usr/local/nginx/html 目录下,重启nginx,浏览器访问,就能看到了
# 测试Nginx环境,服务器运行nginx,本地访问服务器ip
nginx # 启动nginx服务,监听80端口----》公网ip 80 端口就能看到页面了
服务器绑定的域名 或 ip:80
# 静态文件放的路径
/usr/local/nginx/html
# 查看进程
ps aux | grep nginx
# 关闭和启动
关闭:nginx -s stop
启动: nginx
5 安装mysql8
### 1 官方yum源
https://dev.mysql.com/downloads/repo/yum/
### 2 下载对应版本mysql源到本地,如果系统是centos9,这里选择el9版本
# no architecture的缩写,说明这个包可以在各个不同的cpu上使用
我们选择 mysql84-community-release-el9-1.noarch.rpm
### 3 或者直接来到:https://repo.mysql.com/
找到相应版本下载,我们下载
https://dev.mysql.com/downloads/file/?id=528548
#############从这里开始执行###############
### 4 下载rpm包
wget https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
### 5 安装rpm包
dnf install -y mysql84-community-release-el9-1.noarch.rpm
### 6 开始安装
dnf install -y mysql-community-server --nogpgcheck # 会自动把客户端装上
### 7 启动,查看状态
systemctl start mysqld
systemctl status mysqld
### 8 查看默认密码并登录
grep "password" /var/log/mysqld.log # N+lfshCwl6q<
### 9 修改密码
mysql -uroot -p
# SELECT user, host, plugin FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lqz12345?';
#10 创建用户[企业中都是用其他用户操作--root用户权限太高了,泄露后很危险]--》创建lqz用户,操作mysql,不使用root用户操作mysql
CREATE USER 'lqz'@'localhost' IDENTIFIED BY 'Lqz12345?';
CREATE USER 'lqz'@'%' IDENTIFIED BY 'Lqz12345?';
GRANT ALL PRIVILEGES ON *.* TO 'lqz'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'lqz'@'%' WITH GRANT OPTION;
#### 创建一个lqz用户,密码是:Lqz12345?,以后用这个用户登录和操作mysql
quit # 退出
### 11 查看mysql版本
mysql -V
# 12 远程链接
win机器---》连阿里云机器
Navicate:以这个为例
Trae的插件
5.1 创建数据库
# 创建change_face 数据库

5.2 Trae或navicat 连接不上mysql
# 1 安全组端口没开---》防火墙
3306没开--》不允许外部通过3306访问
# 2 安全组打开几个端口--》我全开了
-80 已经开了
-3306
-8000
-8888
-443
如果同学没全打开,就最起码把这四个打开
6 安装uwsgi和配置文件
# 1 uwsig 是运行django的服务器:软件
# 2 原来本地,没有装这个东西,也可以运行djagno项目?
-对,因为之前本地只是测试,对性能要求不高,只能一个人用,django自带服务器就够了
-现在我们上线,要并发很多人使用--》必须要用uwsig,高性能django服务器--》并发更多的用户
-几百并发量
#1 安装uwsgi
dnf install -y python3-devel gcc libxml2-devel
pip3.11 install uwsgi
ln -s /usr/local/python311/bin/uwsgi /usr/bin/uwsgi # 以后在任意路径下敲uwsgi都能找到
# 2 敲 uwsgi 有反应,就是装好了
7 上传项目到服务器
需要修改代码
7.1 写一个uwsgi的配置文件
# 1 我们要用uwsgi运行django了,不是本地测试了,所以要有个配置文件
# 2 后端项目根路径下:change_face.ini
[uwsgi]
socket = 127.0.0.1:8000 # django运行在本地8000端口上
chdir = /home/pro/change_face_api/ # 项目代码所在路径,可能会改
wsgi-file = change_face_api.wsgi # wsgi配置文件,找到你项目中的wsgi.py
processes = 4
threads = 2
master = true
daemonize = uwsgi.log
7.2 修改后端 settings.py 文件
# 改这个文件:change_face_aip/settings.py
# 1 上线,不用调试模式,开发用调试模式
DEBUG = False
# 2 运行部署的服务器ip地址,运行所有
ALLOWED_HOSTS = ['*']
# 3 数据库--》连阿里云上的mysql了
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "change_face",
"USER": "lqz", # 用户
"PASSWORD": "Lqz12345?", # 密码
"HOST": "127.0.0.1", # 项目和mysql在同一台机器
"PORT": "3306",
"OPTIONS": {
"charset": "utf8mb4",
"use_unicode": True,
},
}
}
7.3 生成项目依赖
# 1 django 后端项目依赖了很多第三方模块:
-django
-drf
-pymysql
。。。。
# 2 声明在requirements.txt中--》传到服务器,也按同样的模块名安装
# 3 trae帮我们生成了,如果没生成
-输入提示词:帮我生成:requirements.txt
# 4 我的内容是:
django==5.2.9
djangorestframework==3.16.1
django-cors-headers==4.9.0
mysqlclient==2.2.7
django-simpleui==2025.6.24
djangorestframework-simplejwt==5.3.1
requests==2.32.3
pillow==11.0.0
7.4 压缩-上传
# 1 必须是zip,不能是rar,linux解压不了rar
# 2 放在桌面上:change_face_api.zip
# 3 上传到阿里云服务器:
home下新建文件夹 pro
/home/pro/change_face_api # 都是代码
使用Finallshell上传zip --》/home/pro/change_face.zip
# 4 解压
dnf install unzip -y # 安装解压软件
cd /home/pro
unzip change_face_api.zip# 解压
/home/pro/change_face_api # 文件夹中就是代码了
7.5 安装依赖
# 1 本地运行django项目,trae帮我们装好了依赖了
# 2 服务器上没有装呢--》安装-->装在我们安装的python3.11 解释器上
cd /home/pro/change_face_api
pip3.11 install -r requirements.txt
# 3 mysqlclient安装失败
-1 先注释掉它--》先装别的,然后最后在装mysqlclient
-2 直接解决调失败的问题,再执行安装
yum install python3-devel -y
yum install mysql-devel --nogpgcheck -y
pip3.11 install -r requirements.txt
# 3 检测一下是否装好
pip3.11 list


8 nginx配置
8.1 使用uwsgi运行django
# 1 启动uwsgi:注意目录,项目目录下
uwsgi change_face.ini # django项目跑在 8000端口了
# 2 查看
ps aux |grep uwsgi
# 3 停止
pkill -9 uwsgi


8.2 nginx把请求转发给uwsgi
# 1 配置nginx转发
cd /usr/local/nginx/conf
mv nginx.conf nginx.conf.bak # 把原来的配置文件备份一下
vi nginx.conf # 创建一个新的
# 新增的server
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 8080;
server_name 127.0.0.1;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT change_face_api.wsgi;
uwsgi_param UWSGI_CHDIR /home/pro/change_face_api/;
}
location /static {
alias /home/static;
}
}
}
# 2 重启nginx
nginx -s reload # 报错:因为之前没有启动nginx
# 所以直接启动:nginx
8.3 导入数据库价数据
# 1 从原来本地导出【本地当时开发的数据】
-在本地的数据库上--》右键--》转储成sql--》选数据和结构
# 2 导入到云服务器的mysql中
-右键---》运行sql文件--》导入
# 3 以后我们的数据是从后台管理系统录入
-增删查改数据,都ok
9 配置admin访问
# 0 如下图,有些静态文件 没访问到
# 1 后端项目,使用uwsgi部署完成,可以访问动态接口,但不能访问静态资源
# 2 uwsgi为了提高效 率,只处理动态请求,静态资源的获取,不管
-静态资源就是在从服务器把文件,图片,js,css,直接返回
-如果静态资源也走uwsgi,会影响uwsgi的性能
# 3 动静分离
-动态请求给uwsgi---》让它处理---》uwsgi资源宝贵,尽量少用
动态请求地址: /api/v1....
-静态请求,使用nginx,直接处理---》nginx来讲,最擅长处理静态资源
静态资源地址:http://47.116.196.83:8080/static/admin/simpleui-x/fontawesome-free-6.2.0-web/css/all.min.css
# 4 请求发送到nginx监听的 8080 端口上的时候,判断 如果是 / --->转发给uwsgi ,如果是 /static--->直接去固定的位置,把静态资源直接返回,不走uwsgi了,节约uwsgi的性能
# 5 配置nginx,做静态文件代理---》收集静态资源
-simpleui
-drf
-都在自己app中,我们需要把他们单独收集到某个位置
#### 按如下步骤操作##############
# 6 操作步骤
#6.1 收集静态资源,使用nginx代理
# settings.py中加入 把静态资源收集到这个文件夹下
# STATIC_ROOT = '/home/static/'
# 项目根目录下创建
mkdir /home/static/
# 6.2 创建文件夹:
cd /home/pro/change_face_api/
python3.11 manage.py collectstatic # 收集完,文件夹下就有很多静态文件
# 上面我们nginx已经配置了代理静态文件
# 6.3 修改nginx配置文件---》之前就写入了
# 新增的配置静态文件
cd /usr/local/nginx/conf/
vi nginx.conf
server {
location /static {
alias /home/static;
}
location /media {
alias /home/pro/change_face_api/media;
}
}
# 6.4 重启nginx
nginx -s reload

11 阿里云证书
# 1 目前我们部署在http上,微信小程序要求,必须是https的地址才可
http://47.116.196.83:8080/admin
# 2 要部署https地址,需要使用证书
-证书是花钱购买,有些免费的
-阿里云,腾讯云,七牛云,都会卖证书--》不便宜
# 3 阿里云有免费的,但只有90天
https://yundun.console.aliyun.com/?spm=5176.12818093_47.top-nav.23.57ea16d02gIoxM&p=cas#/certExtend/free/cn-hangzhou
# 4 购买证书
# 5 创建证书
# 6 更多--下载--》下载nginx证书
# 7 解压后有两个文件
# 8 把这俩东西传到服务器:服务器创建cert文件夹
/usr/local/nginx/cert/
cd /usr/local/nginx/
mkdir cert
# 9 修改nginx配置--》nginx.conf 文件
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
client_max_body_size 20M;
server {
listen 443 ssl;
ssl_certificate /usr/local/nginx/cert/www.liuqingzheng.top.pem;
ssl_certificate_key /usr/local/nginx/cert/www.liuqingzheng.top.key;
server_name liuqingzheng.top;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT change_face_api.wsgi;
uwsgi_param UWSGI_CHDIR /root/change_face_api/;
}
location /static {
alias /home/static;
}
location /media {
alias /home/pro/change_face_api/media;
}
}
}
# 10 重启Nginx
nginx -s reload






12 域名-备案-域名解析
# 1 我们正常都是通过
www.zzz.com # 域名访问
不是通过ip地址访问:https://47.116.196.83:8080/admin/
# 2 域名需要购买--》花钱
www.jd.com
www.短.com # 贵
www.liuqingzheng.top # 便宜,好多年前买的--》49一年
# 3 需要备案--》工信部备案--》阿里云协助
-域名
-云服务器:3个月以上
-项目部署好
-身份证拍照
-整体时间要一个月左右审核--》工信部审核
-阿里云协助
# 3 购买地址
https://dc.console.aliyun.com/next/index?spm=5176.2020520154.console-base_search-panel.dtab-product_domain.2c1bAU57AU5717#/overview
# 4 买好后--》域名列表可以看到
http://dc.console.aliyun.com/next/index?spm=5176.2020520154.console-base_search-panel.dtab-product_domain.2c1bAU57AU5717#/domain-list/all
# 5 配置解析:域名和ip地址做映射
# 6 互联网用户访问--》后台管理
https://www.liuqingzheng.top/admin



13 小程序上线
# 1 小程序后台
https://mp.weixin.qq.com/wxamp/home/guide?lang=zh_CN&token=1879741752
#2 修改小程序地址
const rootUrl = 'https://www.liuqingzheng.top'
# 3 上传,设为体验版,配置体验成员--测试
-传到腾讯服务器
# 4 开发管理--》域名管理--》把我们的域名添加进去
-如果不添加,我们使用我们小程序时,微信不允许访问:https://www.liuqingzheng.top
# 4 备案,提交审核,等待审核通过
-微信协助你在工信部备案
-微信小程序也要备案,上面备案的是网站【域名】
# 5 所有用户就可以使用了
根据名字搜索到,就可以用了
--------------我们微信小程序没备案,只能用测试版-------------------
# 6 设为体验版,配置体验成员--测试
-https://mp.weixin.qq.com/wxamp/user/managev2?action=index&use_role=1&token=1799998928&lang=zh_CN
-最多15个人,目前小程序不能被非体验人使用
-只要不下线,可以一直体验





浙公网安备 33010602011771号