Skip to content

Latest commit

 

History

History
108 lines (82 loc) · 3.33 KB

README.md

File metadata and controls

108 lines (82 loc) · 3.33 KB

自用简单云盘服务器后端模板

使用说明

数据库使用PostgreSQL 对象存储采用 minio ,支持存储在本地或者minio服务器

  • app.py为ASGI应用实例,里面可以配置中间件等
  • main.py为API路由定义
  • models.py为数据库模型定义
  • schemas.py为Pydantic模型定义
  • crud.py为数据库操作函数
  • /config为配置文件
  • utility.py为工具函数
  • dep.py为依赖注入
  • auth.py为认证函数
  • test_files.py为测试文件
  • env.py 生成.env文件
  • start.py自用部署脚本
  • storage_.py 为封装的文件存储函数
  • ./tools 为一些测试工具函数

修改.env文件中的数据库连接信息为自己的数据库连接信息, 需要赋予数据库用户数据库的权限和public schema的权限

# .env

# 上传文件存储路径  相对于项目根目录 会自动创建文件夹
UPLOAD_PATH=uploads 
# 用于生成token的密钥
SECRET_KEY=b1f974fc-c181-4d1e-99ce-37d3c7c43551 
# token加密算法
ALGORITHM=HS256
# token过期时间
ACCESS_TOKEN_EXPIRE_MINUTES=30
# 管理员用户名 现在没用 只写了一个删库的接口🥲
ROOT_USER=whysiki
# 管理员密码
ROOT_PASSWORD=180cfgadd88-e429-40db-f9edfg49-c080cd629af1 
# 数据库连接信息 数据库必须要支持Column, String, Table, ForeignKey, ARRAY 类型
# DATABASE_URL=postgresql://username:password@localhost:port/database
DATABASE_URL=postgresql://postgres:whysiki@localhost:61111/filecloud
# 启动端口 测试时使用 实际服务启动端口还是看gunicorn或者uvicorn的启动端口
START_PORT=8000
# 存储类型 minio / local , local为本地存储, minio为minio服务器存储
STORE_TYPE=minio
# minio服务器地址 不需要http://
MINIO_ENDPOINT=localhost:9000
# minio服务器访问密钥
MINIO_ACCESS_KEY=minioadmin
# minio服务器
MINIO_SECRET_KEY=minioadmin
# minio服务器是否启用https
MINIO_SECURE=False
# minio服务器存储桶
MINIO_BUCKET=filecloud

由于未做分页处理,所以不能处理过多数据,具体看服务器配置。

依赖安装

  • python 安装 (建议使用python3.10+)虚拟环境启动 略

  • 基础依赖 pip install -r requirements.txt

  • 数据库安装和配置

    • 下载 配置环境变量
    • 登录 psql -U postgres -p 61111 -p 61111 是端口号 -U postgres 用户名
    • 创建数据库 CREATE DATABASE filecloud;
  • ffmpeg 安装 配置环境变量 略

    • ubuntu sudo apt install ffmpeg
  • minio 安装 配置环境变量 略

  • opencv 依赖 ubuntu

    • sudo apt-get install -y python3-opencv libopencv-dev
  • 数据库驱动

    • pip install psycopg2 in windows
    • sudo apt install python3-psycopg2, sudo apt install libpq-dev in ubuntu
  • 运行env.py 生成.env文件

调试启动

cdfastapi_backend目录下,运行以下命令启动ASGI应用,

示例: python3 -m uvicorn main:app --reload or python3 -m hypercorn main:app --reload

默认启动端口为8000。

部署

示例:监听8000端口,使用4个进程,使用uvicorn工作进程,后台运行,监听所有地址

gunicorn -w 4 -k uvicorn.workers.UvicornWorker -b :8000 -D main:app

实际部署时,配置域名、SSL证书、反向代理等

api document

view in http://127.0.0.1:8000/redoc or http://127.0.0.1:8000/docs

or

view in http://yourapiserveraddress/redoc or http://yourapiserveraddress/docs