Skip to content

2412322029/mixlog

Folders and files

NameName
Last commit message
Last commit date
May 17, 2023
May 30, 2023
Mar 8, 2025
May 18, 2023
Mar 8, 2025
Apr 3, 2023
Mar 8, 2025
May 27, 2023
Jun 24, 2023
May 27, 2023
May 30, 2023
Mar 8, 2025
Mar 8, 2025
Mar 8, 2025
Mar 8, 2025

Repository files navigation

快速开始 https://github.com/2412322029/fastapi_test/releases/tag/bulid

pip install --no-index --find-links=packages -r requirements.txt

python app.py
  • server

    • fastapi sqlalchemy aiomysql实现 RESTful API与api文档自动生成,pydantic数据校验
    • 前后端鉴权使用OAuth2 实现 Bearer JWT 令牌
    • slowapi限制api速率
    • Pillow库生成简单验证码,文本文件缓存验证码
  • client

    • vite + ts

    • vue3 + vue-router + navie-ui

    • openapi-generate-typescript自动生成axios请求代码

    • markdown解析和高亮使用highlight.js,编辑器v-md-editor

  • feature

    • 访问统计
    • 导出excel
    • 图片压缩上传
    • 暗色模式
    • 有用的命令行参数python app.py -h查看
    • optional(main.ts文件中可选开启)
      • 基于websocket 显示在线用户及其所在路径
      • 服务器监控(psutil库)
      • websocket聊天室

docker部署nginx,mysql,python3.10,nginx反向代理/api路径(api都以/api开头)单独代理/docs,/openapi.json路径的api文档,/uploads路径挂载文件上传的目录其他路径匹配回退路由

目录结构

├─static // vite构建目录
|   ├─dist //nginx静态文件挂载
├─data/mysql //mysql数据,docker挂载目录
├─uploads //文件上传目录
├─utill //验证码生成/校验,cpu监控
├─api //fastapi子路由,数据校验模型
├─sql //数据库连接,crud代码,orm模型
├─config //读取配置文件,环境变量
|   ├─config.yaml //主要是mysql信息,fasapi配置
├─app.py //fastapi主文件
├─...如其名

后端

  1. 安装pdm
pip install --user pdm
  1. 创建虚拟环境
pdm venv create 3.11
  1. 安装依赖库
pdm install --prod --no-lock --no-editable
  1. 配置

修改config.yaml

修改数据库用户名密码,创建数据库,数据库名填入dbname

修改默认用户名密码,

环境变量的mysql 数据库信息优先级更高

  1. 启动
python app.py

前端

在 static 目录

  1. 安装依赖
npm install
  1. openapi生成代码
npm run generate-client
  1. api url 和 img baseurl

docker部署

git clone https://github.com/2412322029/fastapi_test

编译前端代码,git clone 后上传覆盖dist目录

docker-compose up -d

前后端分离部署

后端填写mysql数据库信息到配置文件,或通过环境变量(覆盖前者),配置跨域,pip安装依赖,启动app.py

在main.ts中,修改后端api的url, 图片baseurl

前端代码静态部署(处理回退路由)

其他

修改config.yaml中的密钥,compose.yaml的mysql密码,保持mysql容器和python容器密码一致

nginx反向代理ws:

location /{
            proxy_pass   http://0.0.0.0:8000;
        }
        location /api/websocket/ {
            proxy_hide_header X-Frame-Options;
            proxy_pass  http://0.0.0.0:8000;

            #代理ws
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Origin ""; 
        }

最大文件上传限制:config.yaml中的是python代码中写的限制,还取决于nginx配置文件中client_max_body_size(10m)

TODO

  • tag -添加-删除 -(修改)
  • 用户管理

image-20230506225558239

image-20230506225922997

image-20230506225902139

image-20230517165643460

image-20230517165217549

image-20230517165507761