云部署问题

若所有程序都在本地部署的情况可无视以下问题。

局限性

本地部署本地使用,可以支持所有功能,但云部署不支持课程章节上传功能

原因: 浏览器安全的机制,导致网页应用无法操作本地的文件系统,以至于无法读取本地某个目录下的视频文件。

当后端服务在本地部署没有局限,网页应用通过获取用户输入目录路径,提交给部署在本地的服务器,本地服务器据此进行间接的文件读取操作。

而后端服务部署到云服务器上,即使获取了前端应用所在的本地文件目录,也没有权限操作该文件目录,故与文件目录操作相关的功能都将无法实现,例如:章节和课程,这种通过根目录批量上传视频的功能。

解决方案

为了解决上述产生的问题,后续单独研发了一个部署在用户端的flask代理应用vs-proxyopen in new window

因为该程序是运行在用户的主机上,所以该程序拥有对用户主机文件系统的操作权限,也就是说,可以通过该程序读取本机的章节课程下的视频文件,然后代理上传到vs-apiopen in new window应用程序,从而实现章节课程的上传功能,从而解决了上述的局限性

故该应用的主要功能:

  • 提供云部署时,视频上传功能,包括:视频章节课程

具体的使用方式见,vs-proxy的使用

vs-proxy的使用

方式1: (推荐)改配置文件+打包

  1. 拉取仓库
git clone https://gitee.com/breath57/vs-proxy vs-proxy

TIP

  1. 我们以 vs-proxy 作为工程名,当然您也可以以任意您喜爱的名字作为工程名。
  2. 如果您想以某个版本,如0.0.1版,作为起始项目,那么请在 github 上的版本页下载相应的版本即可。
  1. 进入工程目录
cd vs-proxy
  1. 安装项目依赖
pip install -r ./requirements.txt
  1. 修改app/config/secure.py文件内容
HOST = '0.0.0.0' # IP地址
PORT = 5001 # 运行后端口号
REMOTE_BASE_URL = 'http://127.0.0.1:5000'  # vs-api服务器地址

TIP

HOSTPORTREMOTE_BASE_URL都需要修改成自己实际项目使用的。
其中REMOTE_BASE_URL一定是vs-apiopen in new window应用部署的url

例如:vs-apiopen in new window部署在域名为breath57.cn服务器上,应用端口为8888, 传输协议为HTTP, 则REMOTE_BASE_URL = http://breath57.cn:8888

  1. 在项目的根目录下运行
pyinstaller vs-proxy.py -F --add-data  "app/models/db/vsearcher.db;./app/models/db" --nowindowed

TIP

若提示未安装pyinstaller
则应运行pip install pyinstaller进行安装

  1. 将得到的dist/vs-proxy.exe,打包入其它应用程序,即可。

方式2: exe程序+nginx

当然,这里也提供打包好的程序,端口号是5001,IP地址为127.0.0.1REMOTE_BASE_URLhttp://127.0.0.1:5000,若需要应对不同的需求,需要配合nginx进行端口转发。
点击下载 vs-proxy.exeopen in new window