今日内容
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.confevents {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 重启nginxnginx -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/liuqingzhenghttps://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.comjd.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没有权限去拿这个文件-拿,没有权限,就报4034 我如何解决;1 测试:cp /root/change_face_api/media 到 /home/media1location /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 关闭uwsgipkill -9 uwsgips aux |grep uwsgi # 如果只有一行,表示uwsgi关了-5 修改配置[uwsgi]socket = 127.0.0.1:8000chdir = /home/change_face_api/wsgi-file = change_face_project.wsgiprocesses = 4threads = 2master = truedaemonize = uwsgi.log-6 启动uwsgiuwsgi change_face.ini -7 重启nginxnginx -s reload
5.5 app图标问题
为了适配不同手机屏幕---》有很多文件夹
只要修改如下图的配置:AndroidManifest.xml
我们让trae帮我们生成图片
5.6 app改名字
6 拿我上架好的app测试
# 我把打包好的app给大家
# 大家装到自己手机就可以用了# 但是我的云服务器:按量付费-无法给大家一直开着# 今天下课后,我会停掉到之后这个app用不了会用coze资源# 自己上线自己测即可