# MyBlog **Repository Path**: hu_junjie/my-blog ## Basic Information - **Project Name**: MyBlog - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-04-19 - **Last Updated**: 2022-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, FastAPI, async, Graphql, strawberry-graphql ## README # MyBolg ### 项目简介 - 此项目是一个个人博客,也可以是一个社区,目前仅托管在码云,后续成熟之后会考虑迁移到github - 项目目前主要是由 graphql + Fastapi + tortoise-orm + aioredis 组成,在项目初期迁移了部分个人珍藏的flask公用代码,后续在技术栈的选用时考虑到fastapi 异步的优势,考虑全部选用异步框架,graphql由于本人在工作中使用时,觉得与restful相比的好处就是后端不用太多关注变动的需求,更多地把精力放在处理数据上,而且将多个请求合并的好处显而易见,减少网络io请求,只取需要的数据,当然本身graphql-python的生态还不是很成熟,中间也踩了一点坑。(ps: **在最新的commit中已经将graphene包换成strawberry-graphql,因考虑到fastapi的graphql支持是由starlette支持,在新的issue(`https://github.com/encode/starlette/issues/619`) 中已经将不再内置支持graphql**) - 在开发包括部署的过程中比较烦的一点就是环境了,所以目前采用了docker的部署方案,目前项目支持docker-compose up 一键部署,目前只有mysql-redis-web三个服务,后续还会考虑继续添加 --- ### 安装教程 1. git clone 本项目 2. 进入到项目目录,创建.env 文件 设置以下环境变量 ````.env MYSQL_PATH="path_to_mysql" # 你选择挂载的mysql 目录 MYSQL_HOST="mysql" # 默认为mysql,docker内部host能自动识别 MYSQL_PORT=3306 MYSQL_USER_NAME=root MYSQL_PASSWORD=pass MYSQL_DB_NAME=MyBlog REDIS_PATH="path_to_redis" # 默认redis挂载目录 REDIS_HOST=redis # 默认为redis,docker内部host能自动识别 REDIS_PORT=6379 REDIS_DB=6 HASH_ID_SALT=dafddafsdfasfasfs # 可使用命令获取随机该字符串 openssl rand -hex 32 SECRET_KEY=sdfasdfasdffa # 同上 ```` 3. 执行docker-compose up (执行前记得安装docker 以及 docker-compose) **ps: 此处注意,若mysql和redis在docker中起,但是web在本地起,注意调整host为`127.0.0.1`,三者都在docker中起则为默认host即可链接** --------- ### 本地docker调试(mac或者windows 环境) - 选择project interpreter 添加一个docker-compose interpreter ![img.png](docs_file/img.png) 设置manage启动 ![img.png](docs_file/img1.png) 由于是异步框架,调试时需要添加pycharm设置选项 gevent compatible才能正常debug ![img.png](docs_file/img3.png) 访问 http://localhost:8000 进入到graphiql 进行前端请求调试 ![img.png](docs_file/img4.png) 接下来就可以愉快的玩耍(开发)啦