day18-微信小程序上线

今日内容

1 项目本地运行【跑我的项目,按这个步骤做】

你自己使用Trae开发好的项目,后端,前端,数据库都是通的--》直接测即可,不需要这么麻烦

​ -Trae表结构,Trae生成了

唯一的问题是:使用微信开发者工具运行没问题

使用手机测试:必须修改: baseUrl: 'http://你的ip地址:8000'

# 1 老师经过半天多的时间,把前后端按照老师讲的方式调通了
# 2 老师把调通的程序,给大家
	1 使用你们调通的程序上架 :动手能力强
    2 使用老师的程序:按照老师步骤一步步操作即可
# 3 老师给的程序---》先本地运行

########## 操作步骤#############
# 1 使用pycharm打开 :change_face_api
	-1 创建虚拟环境安装依赖:pip install -r requirements.txt
    	- 项目要运行,需要有环境,有第三方包,我们要安装
    -2 修改数据库连接地址:如下图
    	-我之前写的项目,数据库连接跟你们不一样
        	-用户名,密码,数据库名字,端口号,都可能不一样--》你要改成你们的
    -3 使用Navicat导入数据库文件
    	-老师的假数据:导入后就有表了,后端程序就能操作它了
        
    -4 修改coze地址:如下图
    	-后端调用了coze工作流:工作流id和api_key【重新创建一下】
    	-https://www.coze.cn/open/oauth/pats
    -5 启动项目
    	python manage.py runserver 0.0.0.0:8000
            
# 2 使用微信开发者工具打开:ChangeFaceFront
	-1 修改跟后端的连接地址
    
    
# 3 【真机调试】手机投屏

image-20260507192927225

image-20260507192828935

image-20260507201947299

image-20260507202148099

image-20260507202323796

image-20260507194004663

image-20260507202524508

image-20251221202029430

image-20251221202722356

2 上线架构图

#  1 那你教我们怎么让trea生成符合项目的数据表啊
让Trae生成---》库是我们创建的,Trae创建的表,符合我们项目的表--》你们做的,就是符合要求的
	-Trae开发完了,就有表结构
	-注册了用户,就有数据
    
我让Trae生成的--》字段跟你们的是不一样的--》你要跑我的项目,能使用你之前的库和表吗?
	-不行
    -重新创建了一个库:change_face02
    -把我的数据:表结构,数据,导入进去了---》我之前的让Trae生成的表和注册的数据
    -这样你们可以直接测试

# 1 你们自己使用Trae把项目调好了

# 2 或者使用老师的项目
	

2.1 上线架构图

# 1 购买运服务器【阿里云】
	-公网ip:所有人都能访问--》所以人的手机都能联通
    -把我们的后端项目--》django--》部署到公网ip,阿里云机器上--》所有互联网用户都可以使用手机访问
    
# 2 购买阿里云机器
	-https://ecs.console.aliyun.com/server/-/detail?regionId=cn-hangzhou
    -ip:47.116.189.221
    -用户:root
    -密码:不告诉你们
    
 # 3 远程连接:finallshell

# 4 上线架构图

image-20260507205503057

3 安装python3.11

# 0 补充:
	默认centos的操作系统中,有 3.9.25的环境--》因为linux上很多软件是基于python写的--》必须有python解释器环境---》wget命令 下载文件的软件--》基于python写的
	我们的项目跑在python3.11上
    由此:等我们python3.11装完后:centos9机器上,有两个python解释器环境
    python---》python3.9.25---》pip---》是跟python3.9.25配对的
    python、pip   是 3.9.25
    -------------------------
    python3.11---》python3.11--》pip3.11--》装第三方软件的
    python3.11、pip3.11【安装依赖的】 是我们自己装的
    -----千问不要混了,以后我们都用 python3.11、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       3.9      pip 
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 前往用户根目录
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

image-20260507211431073

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包
cd # 回家
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  #    pn>OQmoGe2=:

### 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 远程链接【阿里云服务器的mysql】
win机器命令:不讲了,麻烦,你也不会用---》连阿里云机器
Trae的插件
Navicate:以这个为例


# 13 如果navicat连接不上,打开安全组
	# 1 安全组端口没开---》防火墙
	3306没开--》不允许外部通过3306访问
    # 2 安全组打开几个端口--》我全开了
        -80 已经开了
        -3306
        -8000
        -8888
        如果同学没全打开,就最起码把这四个打开
	# 3 我们打开了所有端口





image-20260507213914505

image-20260507214337519

image-20260507214436281

5.1 创建数据库

# 1 数据库名字 :没有表--》表哪里来?导入进来
	change_face
# 2 你们如何导出你的表和数据
	-Trae开发完的项目,数据表和数据,都在本地mysql中
    -我们可以通过navicat导出一个sql文件:包含所有表和数据
	-导入到运服务器的mysql中

	- 在navicat中,右键数据库--》转储sql文件--》数据和结构--》xx.sql 文件
    
    - 暂存--》后续导入到线上库中
    
    
 
# 3 服务器上执行:安装依赖--django项目链接数据库需要
dnf install python3-devel mysql-devel --nogpgcheck -y
pip3.11 install mysqlclient

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配置文件

我们要用uwsgi运行django了,不是本地测试了,所以要有个配置文件

change_face.ini 放在后端项目目录下

[uwsgi]
socket = 127.0.0.1:8000
chdir = /home/pro/change_face_api/
wsgi-file = change_face_api.wsgi
processes = 4
threads = 2
master = true
daemonize = uwsgi.log
[uwsgi]
socket = 127.0.0.1:8000  # 运行在本地的8000端口:python manage.py runserver 127.0.0.1:800
chdir = /home/pro/change_face_api/ # 项目的目录--》到时候,传到服务器,必须放在这个目录下
wsgi-file = change_face_api.wsgi # wsgi 文件相对于项目目录,所在位置【你们的项目可能需要改】
processes = 4  # 4个进程
threads = 2    # 2个线程跑项目
master = true  # 是否有主进程
daemonize = uwsgi.log # 产生日志,放在这个文件中

image-20260507220542331

7.2 修改配置settings.py

#########change_face/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 生成requirements.txt---trae生成了

#1 这里面放了当前django项目所有的依赖--》使用的第三方包

# 2 trae帮我们生成了,如果没生成
	-输入提示词:帮我生成该项目的:requirements.txt
    
    
    
# 3 里面内容【我的跟你们的可能会不一样:我用trae写跟你们用Trae写的代码有区别,使用了不同的第三方模块,导致,里面可能会不一样】
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 压缩上传代码

########必须是zip,rar在linux上解压不了#############
# 1 压缩后端项目成zip
# 2 放到桌面上:change_face_api.zip

# 3 上传到阿里云服务器的固定位置/home/pro/
	创建文件夹:mkdir /home/pro
    使用Finallshell上传zip  --》/home/pro/change_face.zip
    
# 4 解压
	cd /home/pro/
	dnf install unzip -y # 安装解压软件
    unzip change_face_api.zip# 解压
	/home/pro/change_face_api	# 文件夹中就是代码了

7.5 在服务器上安装项目依赖

# 1 本地运行django项目,trae帮我们装好了依赖了
	-上面讲的 运行我的项目:创建虚拟环境: pip install -r requirements.txt
    
# 2 服务器上没有装呢--》安装
	cd /home/pro/change_face_api
	pip3.11 install -r requirements.txt
    
# 3 检测一下是否装好
 pip3.11 list

image-20260507221842675

8 nginx配置

8.1 uwsgi运行Django

# 1 启动uwsgi:注意目录,项目目录下
cd /home/pro/change_face_api  # change_face.ini 在这个目录下
uwsgi change_face.ini  # django项目跑在 8000端口了

# 2 查看--》django项目运行了--》等同于本地  python manage.py runserver 127.0.0.1:8000
ps aux |grep uwsgi

# 3 停止[我们不停]
pkill -9 uwsgi

image-20260507222029243

8.2 请求通过nginx转发给uwsgi

# 1 配置nginx转发
cd /usr/local/nginx/conf
mv nginx.conf nginx.conf.bak  # 把原来的配置文件备份一下
vi nginx.conf  # 创建一个新的
# 保存退出:先按一下 esc,再按:shift + :  ,再输入  wq 敲回车---》保存退出    
# 新增的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/;
            }
        }
}


# 2 重启nginx 
nginx -s reload

8.3 导入测试sql数据

# 1 从原来本地导出【本地当时开发的数据】
	-在本地的数据库上--》右键--》转储成sql--》选数据和结构
    -change_face01.sql
    
#2 导入到云服务器的mysql中
	-右键---》运行sql文件--》导入
    
# 3 以后我们的数据是从后台管理系统录入
	-增删查改数据,都ok

image-20260507223015867

8.4 浏览器访问:admin

http://47.116.189.221:8080/admin

image-20260507223225969

9 配置admin访问

# 0 能访问到服务器的admin后端了,但是没有样式

# 1 admin 没有样式
# 2 原因:
	uwsgi运行django项目,是不能访问到静态文件的--》之前本地测试环境是可以的
    下面报错:向http://47.116.189.221:8080/static/admin/simpleui-x/elementui/theme-chalk/index.css 访问不到
    index.css是静态文件,访问不到
    
# 3 解决--》使用nginx转发静态文件
# 1  django中收集静态资源,使用nginx代理
# settings.py中加入   把静态资源收集到这个文件夹下

# STATIC_ROOT = BASE_DIR / "staticfiles"  # 这句话有了,不用动了 BASE_DIR:change_face_api

# 2 项目根目录下创建
cd /home/pro/change_face_api
mkdir staticfiles 

# 3 执行命令,收集静态问题---》把所有js,css图片,收集到staticfiles 文件夹下 
cd /home/pro/change_face_api
python3.11 manage.py collectstatic  # 收集完,文件夹下就有很多静态文件

# 4 上面我们nginx已经配置了代理静态文件

# 新增的配置静态文件
	vi /usr/local/nginx/conf/nginx.conf
	# 加入这两句---》把 nginx.conf 删除--》新建一个nginx.conf,粘贴进下面
      location /static {
            alias /home/pro/change_face_api/staticfiles;
       }
      location /media {
            alias /home/pro/change_face_api/media;
       }

 
 # 5 重启nginx
	nginx -s reload

完整的nginx.conf配置

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/pro/change_face_api/staticfiles;
       }
      location /media {
            alias /home/pro/change_face_api/media;
       }
   }
}

——————到此:我们项目可以给运营或管理员使用了--------

http://47.116.189.221:8080/admin

10 阿里云证书

# 1 目前我们部署在http上,微信小程序要求,必须是https的地址才可
	# 浏览器可以访问
	http://106.15.54.205:8080/admin/login/
    # 微信小程序访问不了
    
# 2 要部署https地址,需要使用证书
	-证书是双向认证,更安全
    	http访问地址--》可能会被截获
        https=http+ssl证书--》更安全了
	-证书是花钱购买,有些免费的--》以阿里云免费证书为例--》有申请个数限制
    -阿里云,腾讯云,七牛云,都会卖证书--》不便宜
    
    
# 3  阿里云有免费的,一个只有90天
https://yundunnext.console.aliyun.com/?spm=5176.2020520163.console-base_help.8.1c20sXRtsXRtFn&p=cas#/overview/cn-hangzhou
# 4 购买证书


# 5 申请证书--》绑定你的域名:需要填入--》需要购买域名
	www.liuqingzheng.top  

# 6 下载--》下载nginx证书

# 7 解压后有两个文件
	xx.key
    xx.pem

# 8 把这俩东西传到服务器:服务器创建cert文件夹
	# /usr/local/nginx/cert/
    cd /usr/local/nginx/
    mkdir cert

    
# 9 修改nginx配置--》nginx.conf 文件-->变成了https访问了
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 /home/pro/change_face_api/;
            }

       location /static {
            alias /home/pro/change_face_api/staticfiles;
       }
      location /media {
            alias /home/pro/change_face_api/media;
       }
    }
}

# 10 重启Nginx
nginx -s reload

# 11 访问

image-20260507224307904

image-20260507224455038

image-20260507224531896

image-20251221225704783

image-20251221225731944

image-20260507194312894

image-20260507224921250

image-20260507225050540

11 备案-域名解析

# 1 购买的域名
	www.xxoo.com # 都是买的,如果别人没买,你可以买
    www.jd.com--->之前京东域名是:www.360buy.com-->后来花了几千万从个人手上买了 www.jd.com
    www.liuqingzheng.top # 我的域名
    
# 2 地址
https://dc.console.aliyun.com/next/index?spm=5176.2020520154.console-base_search-panel.dtab-product_domain.2c1bAU57AU5717#/overview
    
# 3 com和cn的贵,top的便宜


# 4 购买后就是你们自己的域名


# 5 工信部备案--》阿里云会协助我们备案
	-一个月时间,提交材料--》工信部审核
    
# 6 配置域名解析
https://dnsnext.console.aliyun.com/authoritative?spm=5176.100251.console-base_search-panel.dtab-product_dns.52834f15NF2R4V&scm=20140722.S_dns._.ID_dns-RL_%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90-LOC_console_console-OR_ser-V_4-P0_0
    
# 7 如下图,配置两个
    https://www.liuqingzheng.top
    https://liuqingzheng.top
        
        
# 8 等10分钟访问: 进后台管理
https://www.liuqingzheng.top/admin

image-20260507225538547

image-20260507225624384

--------后端才真正上线完成---

所有管理员,在任意电脑上【能上网】--》访问https://www.liuqingzheng.top/admin 就能管理我们程序了

12 小程序上线

# 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/wacodepage/getcodepage?token=19959889&lang=zh_CN
	-最多15个人,目前小程序不能被非体验人使用
    -只要不下线,可以一直体验
    
    
    
# 7 按量付费服务器
	-15个同学,体验10分钟--》剔除
    -明天就会把服务器释放掉--》就用不了了

image-20260507230042748

image-20260507230336264

image-20260507230457821

image-20260507230511064

13 最后

#  你们上线我的代码,把后端-settings.py中的密钥改成你们的
	

image-20260507231208662

posted @ 2026-05-08 19:43  凫弥  阅读(49)  评论(0)    收藏  举报