day15-项目上线
今日内容
1 项目上线架构

# 1 购买云服务---操作系统--》centos9
-上线到公网
# 2 nginx
-转发用户的请求--》到uwsgi的django项目
# 3 mysql8
-后端项目数据存储在mysql中
# 4 上传我们后端项目
-导入项目依赖:requirements.txt
-修改了settings.py配置
-数据库链接
-debug
。。。。
# 5 uwsgi软件--》运行django项目的
-UWSGI 配置文件---》指定django项目跑在了8000
# 6 使用nginx转发请求---》配置文件--》nginx.conf
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80; # 访问后端端口,在浏览器中不写端口,直接访问
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_project.wsgi; # 目录下的uwsgi文件
uwsgi_param UWSGI_CHDIR /root/change_face_api/; # 目录
}
location /static {
alias /home/static;
}
}
}
# 7 导入了假数据
-本地mysql中有数据
-导出成sql文件
-使用Navicate导入到了阿里云服务器的mysql中
# 8 启动后端项目
uwsgi change_face.ini
# 9 浏览器中访问后台管理
-http://47.116.205.67/admin
2 配置admin的访问
# 1 发现 访问:http://47.116.205.67/admin 页面中没有样式
# 2 调试查看原因:
-http://47.116.205.67/static/admin/simpleui-x/elementui/theme-chalk/index.css 不存在这个文件
# 3 后端项目,上线,想性能高,使用uwsgi部署---》uwsgi只能处理动态请求
-登录接口
-换脸接口
-静态请求:访问图片,访问样式文件:css。。。---》无法处理
-python manage.py运行---》是可以处理的---》测试阶段
-原因是:uwsgi部署 为了提高性能,把所有资源都给动态请求使用,静态的请求就不处理了
-假设访问后端10个请求
-2 个请求动态接口:登录,换脸
-8 个请求图片,文件:针对于静态文件---》nginx处理性能会更高--》不使用uwsgi处理
-nginx 主要擅长:请求转发,代理静态资源[部署飞机大战项目]
# 4 动静分离
-动态请求给uwsgi---》uwsgi性能宝贵---》只处理动态--》占用少
-登录功能
-换脸功能
-个人信息
-退出
-静态请求:
-给nginx代理--》这是它擅长的
-css,js,图片
-http://47.116.205.67/static/admin/simpleui-x/fontawesome-free-6.2.0-web/css/all.min.css
# 5 我们配置好了后,访问时,变成了如下
-app登录---》动态请求---》给nginx---》转发给uwsgi---》运行django代码
-后台管理admin--》图片/js/css--->给nginx---》不转发给uwsgi--》直接它自己处理--》速度更快
#6 #########操作步骤如下---》只针对于django################
# 进入到settings.py所在目录
cd /root/change_face_api/change_face_project
# settings.py中加入 把静态资源收集到这个文件夹下
STATIC_ROOT = '/home/static/'
# 6.2 创建文件夹
mkdir /home/static
# 来到项目目录下
cd /root/change_face_api/
python3.11 manage.py collectstatic # 收集完,文件夹下就有很多静态文件
# 上面我们nginx已经配置了代理静态文件
# 6.3 修改nginx配置文件---》之前就写入了
# 新增的配置静态文件
# 以后访问 /static/* 都直接去/home/static 拿
server {
location /static {
alias /home/static;
}
}
# 6.4 重启nginx
nginx -s reload




2.1 补充
# 1 我们同学在上线项目,使用uwsgi运行django时,可能会运行不起来
-原因有很多:多半模块没装好,数据库链接错了。。。
# 2 同学按照如下操作
来到项目目录:执行 python3.11 manage.py runserver 0.0.0.0:8000
如果有错误---》控制台会报错
看到错误后---》自行解决,让ai辅助解决,老师帮解决
3 阿里云证书
# 0 http和https的区别
-https更安全--》加密传输
# 1 绝大部分网站 ,小程序,app,都是部署在https地址上
https://www.cnblogs.com/liuqingzheng
https://www.coze.cn/
微信小程序:强行要求必须在https地址上
app:没有这个强制要求:很多app直接部署在http地址上
网站:也有不少是直接部署在http地址上
# 2 如何把http的项目---》部署到https地址上---》需要使用证书
-证书需要花钱购买,有一些免费的:时效短:1个月,6个月
-阿里云,腾讯云,七牛云:都会提供证书服务---》购买他们的即可
# 3 阿里云证书为例(个人免费版:几个月,到期就不能用了)
-花钱购买收费版本--》很贵
-地址:https://yundun.console.aliyun.com/?spm=5176.12818093_47.top-nav.23.57ea16d02gIoxM&p=cas#/certExtend/free/cn-hangzhou?adSearchParams=%7B%22Keyword%22%3A%22%22%2C%22CurrentPage%22%3A1%7D
# 4 购买证书
-绑定域名: www.liuqingzheng.top [需要购买,需要备案]
# 5 创建证书
# 6 更多--》下载--》下载nginx证书
-有两个文件,如下图
# 7 解压文件:有两个文件
# 8把这俩文件传到服务器:在服务器创建cert文件夹
/usr/local/nginx/cert/ # 这个文件夹之前不存在
cd /usr/local/nginx/
mkdir cert
# 9 改nginx配置--》支持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_project.wsgi; # 目录下的uwsgi文件
uwsgi_param UWSGI_CHDIR /root/change_face_api/; # 目录
}
location /static {
alias /home/static;
}
}
}
# 10 重启Nginx
nginx -s reload
# 11 以后再访问都要写成
https://47.116.205.67/admin/





4 域名-备案-域名解析
# 1 我们正常访问网站,app访问后端,小程序访问后端,都不是直接使用ip地址访问
www.baidu.com # 通过域名访问
# 2 域名需要花钱购买
-阿里云
-腾讯云
-价格不同:
www.360buy.com
jd.com # 很短的非常贵 几千万-->好记好访问
-京东从别人手里买的--》非常高
www.liuqingzheng.top # 便宜
很早之前,很多人提前注册了很多域名---》等着别人来购买
-域名为什么不吵了
-web黄金时代过期了---》www.123.com
-app/小程序---》用户看不域名---》无论多长--》对用户来讲不影响
# 3 购买完域名后---》国家工信部备案---》阿里云协助
-买了域名
-云服务器:不能按量付费,大于3个月以上
-项目部署好
-身份证,手持,拍照
-国家工信部审核---》大约一个月时间
# 4 购买域名:
https://dc.console.aliyun.com/next/index?spm=5176.ecscore_server-lite.console-base_search-panel.dtab-product_domain.521b4df5UkKYJz#/overview
# 我买了:www.liuqingzheng.top
# 5 买好后--》域名列表可以看到
https://dc.console.aliyun.com/next/index?spm=5176.ecscore_server-lite.console-base_search-panel.dtab-product_domain.521b4df5UkKYJz#/domain-list/all
# 6 配置解析
-域名 右边---》解析
-https://www.liuqingzheng.top/
-https://liuqingzheng.top/
# 7 访问我们项目--后台管理
https://www.liuqingzheng.top/admin
# 8 法律要求,网站必须备案,app也要备案

**

##################### 后端上架完成###########################
5 APP上线
app打包好---》直接发送给别人---》安装到手机上即可
app打包好---》自己有个网站--》提供下载地址---》扫码直接下载---》没有上架应用市场
app打包好--》上架到应用市场
-正常安卓需要有谷歌应用市场---》国内访问不了
-国内厂商有各种各样的应用市场:豌豆荚,应用宝,华为应用市场。。
-不同应用市场,上架要求不一样
-用户量大应用市场
-我们只聊到打包,签名---》至于上什么应用市场,大家自行决定
-提供材料不一样:简单聊:豌豆荚如何上架
在 Android Studio 中编译 APK(Android 应用安装包)主要分为两种场景:生成调试版 APK(用于测试)和生成发布版 APK(用于正式发布)
如果装了其中一个,再装另一个---》会报错(签名不一样)---》必须卸载再装
优酷---》带广告的---》大神--》把广告去掉----》反编译app--》改代码--》再打包---》需要签名---》这个大神没有优酷的正式签名---》自己签----》导致 都是优酷,包名也一样---》签名不一样----》手机不允许同时装两个
5.0 app端修改后端访问地址
# AppConstants.java--->
public static final String BASE_URL = "https://www.liuqingzheng.top/";
# 你们改成你们自己上架后端项目的地址
如果没有域名,没有证书:http://47.116.205.67:端口取决于 nginx的配置

5.1 调试版app-Android Studio
# 调试版 APK 用于开发过程中的测试,默认已签名(使用 Android Studio 的调试密钥),无需额外配置。
## 1. 打开项目:在 Android Studio 中打开你的项目
## 2. 生成 APK:
- 点击顶部菜单栏的 Build
- 依次选择 Build Bundle(s) / APK(s) → Build APK(s)
# 3. 等待编译:Android Studio 会自动编译项目,进度在底部状态栏显示
# 4. 获取 APK:
- 编译完成后,右下角会弹出提示,点击 locate 可直接定位到 APK 文件
- 默认路径:`项目根目录/app/build/outputs/apk/debug/app-debug.apk`

5.2 发布版app--上架用
################### 详细版--自己操作一下###############
# 发布版 APK 用于上传到应用商店(如 Google Play、华为应用市场等),需要使用自定义密钥签名。
## 步骤 1:创建签名密钥库(Key Store)
### 1 点击顶部菜单栏 Build → Generate Signed Bundle / APK
### 2 选择 APK,点击 Next
### 3 在 Key store path 处点击 Create new...,填写信息:
-Key store path:选择密钥库保存路径(建议放在项目外安全位置)
-Password:设置密钥库密码(牢记!)
-Key 区域:
Alias:密钥别名(如 "myappkey")
Password:密钥密码(可与密钥库密码相同)
Validity (years):密钥有效期(建议设置 25 年以上)
Certificate:填写开发者信息(至少填一项)
### 4. 点击 OK 生成密钥库(.jks 文件)
## 步骤 2:配置签名信息
## 为避免每次生成 APK 都输入密码,可在build.gradle中配置签名信息:
### 1 打开项目中的 app/build.gradle(Module 级别)
### 2 在android节点下添加签名配置:
signingConfigs {
release {
storeFile file("D:\\a.jks") // 密钥库路径
storePassword "lqz12345"
keyAlias "key0"
keyPassword "lqz12345"
}
}
buildTypes {
release {
signingConfig signingConfigs.release // 关联签名配置
minifyEnabled false // 开启代码混淆(可选)
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
### 3 点击右上角 Sync Now 同步配置
## 步骤 3:生成发布版 APK
### 1 再次点击 Build → Generate Signed Bundle / APK → 选择 APK → Next
### 2 选择已创建的密钥库(Key store path),输入密码和密钥信息
### 3 点击 Next,选择构建类型(默认release)和 Flavor(如无特殊需求保持默认)
### 4 点击 Finish 开始编译
### 5 编译完成后,通过提示的 locate 找到 APK,默认路径:项目根目录/app/build/outputs/apk/release/app-release.apk
################我讲的视频---便捷版--如下图#####################





5.3 如何上架(豌豆荚)
https://app.applebyme.cn/cloud/appshangjia/56323.html
5.4 上架后,图片不显示问题
# 1 uwsgi 不能处理 静态文件--->咱们图片 就是静态文件
https://www.liuqingzheng.top/ media/face_swap/source/f29d634d-64f1-40e8-9b46-6dbbcb17021a_image_20250925_221010.jpg
访问不到
# 2 修改nginx配置
加一句
location /media {
alias /root/change_face_api/media;
}
chmod 777 media/
# 3 重启Nginx
nginx -s reload
# 上架后图片不显示原因
1 静态资源:图片---》使用nginx代理
2 需要加一句配置:只要带media---》都去/root/change_face_api/media 文件夹下拿
location /media {
alias /home/media1;
}
3 nginx启动不是超级用户---》root这个文件夹是超级用户的家目录---》nginx没有权限去拿这个文件
-拿,没有权限,就报403
4 我如何解决;
1 测试:cp /root/change_face_api/media 到 /home/media1
location /media {
alias /home/media1;
}
能拿到了,就是权限问题
5 如何解决
1 后端项目不要放在 root目录下部署,直接放到 home目录下,注意修改nginx的配置路径
2 正常来讲,把目录改成777的权限也可以---》这个大家可以回去试、
# 我带大家解决--换目录
-1 cp -r change_face_api /home/ # 把文件夹复制到home目录下
-2 cd home #看一下在了
-3 改nginx配置
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_project.wsgi; # 目录下的uwsgi文件
uwsgi_param UWSGI_CHDIR /home/change_face_api/; # 目录
}
location /static {
alias /home/static;
}
location /media {
alias /home/change_face_api/media;
}
}
}
-4 关闭uwsgi
pkill -9 uwsgi
ps aux |grep uwsgi # 如果只有一行,表示uwsgi关了
-5 修改配置
[uwsgi]
socket = 127.0.0.1:8000
chdir = /home/change_face_api/
wsgi-file = change_face_project.wsgi
processes = 4
threads = 2
master = true
daemonize = uwsgi.log
-6 启动uwsgi
uwsgi change_face.ini
-7 重启nginx
nginx -s reload
5.5 app图标问题
为了适配不同手机屏幕---》有很多文件夹
只要修改如下图的配置:AndroidManifest.xml
我们让trae帮我们生成图片


5.6 app改名字

6 拿我上架好的app测试
# 我把打包好的app给大家
# 大家装到自己手机就可以用了
# 但是我的云服务器:按量付费
-无法给大家一直开着
# 今天下课后,我会停掉
到之后这个app用不了
会用coze资源
# 自己上线自己测即可

浙公网安备 33010602011771号