当前位置: 首页 > news >正文

day15-项目上线

今日内容

1 项目上线架构

image-20250921210506250

# 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

image-20250925203334495

image-20250925204335125

image-20250925204508541

image-20250925204631921

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/

image-20250925205834478

image-20250925205856651image-20250925205925062

image-20250925205943961

image-20250925210033852

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也要备案

image-20250925211654972

image-20250925211917744**

image-20250925212108351

##################### 后端上架完成###########################

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的配置

image-20250925215440794

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`

image-20250925215141760

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################我讲的视频---便捷版--如下图#####################

image-20250925215720233

image-20250925215731960

image-20250925215913985

image-20250925215929846

image-20250925220032091

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帮我们生成图片

image-20250925223811992

image-20250925223939343

5.6 app改名字

image-20250925224152059

6 拿我上架好的app测试

# 我把打包好的app给大家
# 大家装到自己手机就可以用了# 但是我的云服务器:按量付费-无法给大家一直开着# 今天下课后,我会停掉到之后这个app用不了会用coze资源# 自己上线自己测即可
http://www.hskmm.com/?act=detail&tid=20968

相关文章:

  • opencv学习记录6
  • 努力的轨迹,通往成长的旅程——赵欣彤的自我介绍
  • 第2章 day02 requests基础
  • 线性代数_工程实践-计算实现numpy
  • 在HAL库使用printf打印串口信息
  • 第4章 day04 防盗链
  • 第3章 day03 xpath+反爬虫
  • 002- 学习环境搭建
  • 第10章 day10 DrissionPage详细教程
  • 求局部最小值
  • Element-UI的transfer穿梭框组件数据量大解决方案
  • 第9章 day09 hook插件
  • nginx 一致性hash和流量检查模块
  • 深入解析:10月底实习准备-Mysql(按面试频率准备)
  • 机器学习概述 - -一叶知秋
  • CEXE的%你赛5-题解
  • C++语言(1)
  • Windows多人共享文件夹全流程,附2025新共享文件快90%
  • 第11章 day11-day12关于json请求体/逆向爬虫实战
  • 容斥与二项式反演
  • react useCallback Hook详解
  • 从Docker构建失败到CRA被淘汰:一个React项目的ES模块探索记录
  • 充气泵PCBA方案中数字传感器和模拟传感器的差异
  • 实用指南:小米17手机的上市公司供应商
  • CDN + WAF + CLB + Higress 架构下的 TLS 加解密详细解析(适用阿里云)
  • react useMemo Hook详解
  • react useContext 详解
  • Python技能大赛-备赛建议
  • 【软件系统架构】系列七:系统性能——操作系统性能深入解析 - 实践
  • 你的下一款定位神器,何必是GPS?Nordic带你解锁Wi-Fi SSID的隐藏潜能