# uuap-back **Repository Path**: RandolphCYG/uuap-back ## Basic Information - **Project Name**: uuap-back - **Description**: UUAP管理平台后端代码,django2.2、celery5、ldap3、eventlet、django-redis、djangorestframework、mysqlclient、pandas、python-dateutil、pywinrm - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-11-13 - **Last Updated**: 2021-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UUAP统一用户认证平台说明文档 @[toc] ----- ## 1. 架构说明 1. 主要工具 | 工具 | 版本 | 说明 | |--|--|--| | python | 3.6 | windows [python3.6.8](https://www.python.org/ftp/python/3.6.9/python-3.6.9-amd64.exe) \| MAC/Linux [python3.6.13](https://www.python.org/downloads/release/python-3613/) | | [django](https://www.djangoproject.com/download/) | 2.2 | web后端框架 | | [react](https://react.docschina.org/docs/getting-started.html) | 16.13.1 | 前端框架(spa应用) | | [ant design pro](https://pro.ant.design/index-cn) | v5 | 组件式ui库(阿里) | | mysql | 5.7 | 数据持久化 | | redis | 3.2.100 | [数据库、缓存和消息中间件](http://www.redis.cn/) ; 用来作为celery的消息队列,替代中间件为rabbitMQ | | [celery](http://docs.jinkan.org/docs/celery/) | 5.0.2 | 分布式任务队列,提供异步和定时任务支持 在django配置好celery后生成数据库表 | | eventlet | 0.30.2 | 对celery的并发支持补充(uuap目录下) `celery -A uuap worker -l info -P eventlet -E` 异步任务 定时/周期任务支持(uuap目录下)`celery -A uuap beat -l info` | | flower | 0.9.5 | 对celery任务进行监控 运行命令(uuap目录下)`celery flower -A uuap`管理地址`http://127.0.0.1:5555/` | | [ldap3](https://ldap3.readthedocs.io/en/latest/) | 2.9 | 用来管理LDAP服务器 | 2. 辅助工具 | 辅助工具 | 版本 | 说明 | |--|--|--| |npm|6|最新版本| |pip|20|安装python第三方依赖| `注意1`——celery需要配python3.6,因为高版本的python中异步`aync`关键词会和celery中的`kombu`库中的定义的变量冲突! `注意2`——celery在windows中应该由`eventlet`处理异步并发任务 `部署中在centos中需要注意python3.6.12,然后celery不需要eventlet也可以支持异步并发` 3. 项目仓库 后端仓库:[uuap-back](https://gitee.com/RandolphCYG/uuap-back) 前端仓库:uuap-front](https://gitee.com/RandolphCYG/uuap-front) ## 2. 开发环境安装步骤 ### 2.1. 后端环境(vscode) 1. 开发环境安装[python3.8.5](https://www.python.org/downloads/release/python-385/) 安装很简单,参考[python3.8 下载安装 | pip 配置国内源 | python各种工具介绍](https://blog.csdn.net/qq_33997198/article/details/107420579)下载安装python部分,注意`勾选将python加到环境变量`中 2. 安装后端项目依赖 ```python # 拉项目源码 git clone git@gitee.com:RandolphCYG/uuap-back.git # 进入项目目录 cd /uuap-back/uuap # 升级pip python -m pip install --upgrade pip # 安装后端项目依赖 若没有为pip配置全局的国内源可选择带-i http://pypi.douban.com/simple --trusted-host pypi.douban.com参数 pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com ``` 3. 跑项目用全局python环境 vscode跑django项目可参考 [【Youtobe trydjango】Django2.2教程和React实战系列一【项目简介 | 搭建 | 工具】](https://blog.csdn.net/qq_33997198/article/details/103972513)最后一节 ### 2.2. 安装前配置好后端mysql、redis ```python # 打开一个终端,进入后端项目 uuap cd /uuap-back/uuap # 执行数据库迁移语句 python manage.py makemigrations python manage.py migrate # 创建超级用户 python manage.py createsuperuser # 然后会让你输入邮箱(可不输入)、密码(admin即可、强制同意) # 修改django配置文件 ...\uuap-back\uuap\uuap\settings.py 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'uuap', # 数据库名 'USER': 'root', # 用户名 'PASSWORD': 'adqwe123', # 密码 'HOST': '127.0.0.1', # mysql服务主机ip 'PORT': '3306', # mysql服务端口 }, # redis缓存服务器 ...\uuap-back\uuap\uuap\settings.py CACHES = { # 默认缓存库 "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", # "PASSWORD": "V%xw1xZqDK", # 密码 } }, # 配置信息缓存库 "configs_cache": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", # "PASSWORD": "V%xw1xZqDK", # 密码 } }, } # 然后就可以启动后端项目 ``` ### 2.3. 前端环境 ```python # 安装nodejs np yarn 略 # 进入项目目录 cd /uuap-front # 下载前端依赖 yarn # 等待完成后可以启动前端项目 yarn start no-mock ``` ### 2.4. 启动项目 后端: ```python # 打开一个终端,进入后端项目 uuap cd /uuap-back/uuap # 启动后端django项目 python manage.py runserver 0.0.0.0:3033 ``` 前端: ```python # 拉项目源码 git clone git@gitee.com:RandolphCYG/uuap-front.git # 进入项目目录 cd /uuap-front # 不使用mock数据启动前端项目 yarn run start:no-mock # 从前端项目进入网页即可(根据实际启动项目端口为准) http://localhost:8001 ``` ## 3. 生产部署 找一台装有docker和docker-compose的centos7打镜像并推送到远程仓库 ### 3.1. 前端 ```python # 进入项目目录 cd /uuap-front # 打包前端项目 yarn build # 用xhsell的sftp将除去node-module文件夹下的前端项目文件同步到centos7虚拟机 # centos7打nginx镜像【改】 docker build -f Dockerfile -t local/uuap:0.0.1 . # 改标签【改】 docker tag local/uuap:0.0.1 xxxxx/uuap:0.0.1 # 登录远程仓库【改】 docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} ${DOCKER_REGISTRY} # 将镜像推到远程仓库【改】 docker push xxxxx/uuap:0.0.1 # 执行k8s命令【改】 kubectl apply -f Deployment.yaml -n uuap kubectl apply -f Service.yaml -n uuap ``` ### 3.2后端 ```python # 与前端项目除了打包不同,其他相同 @@@@下一步需要些gitlab-ci,达成一键打包前端项目、打前后端镜像并推送的过程@@@ ``` ## 4. 开发规划 - 完善企业微信工单 - 工单尽量自动化 - 用户权限点餐制 ## 5. 功能演示 - 登录 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201127174829818.png) - 首页dashboard ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201127174939181.png) - 个人中心 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201207201820469.png) - 配置中心——AD域服务器配置 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201207202058811.png) - 配置中心——邮件服务器配置 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201207201946604.png) - AD域管理——AD域账户 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201207202255433.png) ## 6. 常见报错处理 ### 6.1. Ran out of input celery的beat运行不起来报错时,需要删除不一致`uuap`中的`celerybeat-schedule`几个文件; ## 7. 参考文章 1. [Django项目使用Celery](https://zhuanlan.zhihu.com/p/162039762)