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.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

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/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/

image-20250925205834478

image-20250925205856651image-20250925205925062

image-20250925205943961

image-20250925210033852

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

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没有权限去拿这个文件
    	-拿,没有权限,就报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帮我们生成图片

image-20250925223811992

image-20250925223939343

5.6 app改名字

image-20250925224152059

6 拿我上架好的app测试

# 我把打包好的app给大家
# 大家装到自己手机就可以用了

# 但是我的云服务器:按量付费
	-无法给大家一直开着
    
# 今天下课后,我会停掉
	到之后这个app用不了
    会用coze资源
    
    
# 自己上线自己测即可
posted @ 2025-09-29 17:26  凫弥  阅读(42)  评论(0)    收藏  举报