Skip to content
This repository was archived by the owner on Aug 19, 2022. It is now read-only.

randolphcyg/husky

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

用户身份认证平台(AD域-LDAP管理)[python版本]说明文档


最后更新时间 2021/9

1. 背景

1.1. 发展阶段

  • 最初目标:单位很多平台都需要账号,人多平台多就会难记住、难管理,因而需要统一为一个账号;因为LDAP是较为通用的认证协议,因此通过选型,装上了Windows Active Directory Domain 即AD域服务;(这时候未考虑管理成本、只求有);
  • 初具规模:但是Windows Server中的管理端实在难以满足对流动性高、人员组成复杂的单位进行手动管理,因而需要快速开发出管理平台;(这时候不在乎架构、只求快);
  • 完善流程:当一件不是特别有意义的事情占据越来越多的时间,当那个又要做管理员又要开发东西的人心累的时候,不得不考虑后路,不得不审视自己的能力,不得不进行重构和完善整合企业管理的其他工具;(例如企业微信)

1.2. 开发阶段

  1. 最开始的全体用户的LDAP信息初始化用的powershell脚本,将当时所有的用户信息整理到文件,批量生成有组织的用户,并保存复杂密码;账号和密码下发是写的python脚本;
  2. 后面突然发现自己为什么要写psl脚本,于是找到py的ldap3包,完完整整的把各种api安排了一遍;
  3. 再来发现执行脚本也很累哦,能不能有个前端,这样增改查都能方便很多,然后选型了前端框架antd pro v5,写了前端;
  4. 后面前端写熟悉了,发现不能总在自己机器跑,于是考虑部署方案,从在centos7机器部署到docker、k8s都部署了一遍,然后将前后端打两个镜像部署上去了;
  5. 紧接着是完善迭代——web平台的登录登出、AD域、消息通知模块的可配置可测试;企业微信的接入,开始做自动化工单,并加了一些celery定时任务;
  6. 因为这个python版本硬编码比较多、且在用redis作缓存的时候,都只是大str存储、且心烦于python的依赖和发版速度之慢,并不想像另一个项目一样docker打一个基础的镜像,而是决定用Golang重构。当满足现有管理需求后,发现可以舍弃前端,只保留后端服务就足够了,于是这篇博客主要记录下弃用的antd pro+python的版本的前后端和部分页面。

2. 架构说明

  1. 主要工具
工具 版本 说明
python 3.6 windows python3.6.8 | MAC/Linux python3.6.12
django 2.2.15 web后端框架
react 16.13.1 前端框架(spa应用)
ant design pro v5 组件式ui库(阿里)
mysql 5.7 数据持久化
redis 3.2.100 数据库、缓存和消息中间件 ; 用来作为celery的消息队列,替代中间件为rabbitMQ
celery 4.4.7 分布式任务队列,提供异步和定时任务支持 在django配置好celery后生成数据库表
eventlet 0.28.0 对celery的并发支持补充(husky目录下) celery -A husky worker -l info -P eventlet -E 异步任务
django-celery-beat 2.0.0 celery的定时/周期任务支持(husky目录下) celery -A husky beat -l info
ldap3 2.8.1 用来管理LDAP服务器
  1. 辅助工具
辅助工具 版本 说明
npm 6.14.7 最新版本
pip 20.2.1 安装python包
pipenv 2020.6.2 python虚拟环境版本管理

注意1——celery需要配python3.6,因为高版本的python中异步aync关键词会和celery中的kombu库中的定义的变量冲突! 注意2——celery在windows中应该由eventlet处理异步并发任务

部署中在centos中需要注意python3.6.12,然后celery不需要eventlet也可以支持异步并发

  1. 项目仓库

后端仓库:husky-back

前端仓库:husky-front](https://github.com/RandolphCYG/husky-front)

3. 开发环境安装步骤

3.1. 后端环境(vscode)

  1. 开发环境安装python3.8.5 安装很简单,参考python3.8 下载安装 | pip 配置国内源 | python各种工具介绍下载安装python部分,注意勾选将python加到环境变量

  2. 安装后端项目依赖

    # 拉项目源码
    git clone git@github.com:RandolphCYG/husky-back.git
    # 进入项目目录
    cd /husky-back/husky
    # 升级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实战系列一【项目简介 | 搭建 | 工具】最后一节

3.2. 安装前配置好后端mysql、redis

# 打开一个终端,进入后端项目 husky
cd /husky-back/husky
# 执行数据库迁移语句
python manage.py makemigrations
python manage.py migrate
# 创建超级用户
python manage.py createsuperuser
# 然后会让你输入邮箱(可不输入)、密码(admin即可、强制同意)

# 修改django配置文件 ...\husky-back\husky\husky\settings.py
'default': {
    'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
    'NAME': 'husky',                        # 数据库名
    'USER': 'root',                         # 用户名
    'PASSWORD': 'adqwe123',                 # 密码
    'HOST': '127.0.0.1',                    # mysql服务主机ip
    'PORT': '3306',                         # mysql服务端口
    },
    
# redis缓存服务器 ...\husky-back\husky\husky\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",   # 密码
        }
    },
    # AD域账号信息缓存库
    "ad_accounts_cache": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/2",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            # "PASSWORD": "V%xw1xZqDK",   # 密码
        }
    }
}
# 然后就可以启动后端项目

3.3. 前端环境

# 安装nodejs np yarn

# 进入项目目录
cd /husky-front
# 下载前端依赖
yarn
# 等待完成后可以启动前端项目

3.4. 启动项目

后端:

# 打开一个终端,进入后端项目 husky
cd /husky-back/husky
# 启动后端django项目
python manage.py runserver 0.0.0.0:3033

前端:

# 拉项目源码
git clone git@github.com:RandolphCYG/husky-front.git
# 进入项目目录
cd /husky-front
# 不使用mock数据启动前端项目
yarn run start:no-mock
# 从前端项目进入网页即可(根据实际启动项目端口为准)
http://localhost:8001

4. 生产部署

找一台装有dockercentos7打镜像并推送到远程仓库

4.1. 前端

# 进入项目目录
cd /husky-front
# 打包前端项目
yarn build
# 用xhsell的sftp将除去node-module文件夹下的前端项目文件同步到centos7虚拟机

# centos7打nginx镜像【改】 
docker build -f Dockerfile -t local/husky:0.0.1 .
# 改标签【改】 
docker tag local/husky:0.0.1 xxxxx/husky:0.0.1
# 登录远程仓库【改】 
docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} ${DOCKER_REGISTRY}
# 将镜像推到远程仓库【改】 
docker push xxxxx/husky:0.0.1
# 执行k8s命令【改】 
kubectl apply -f Deployment.yaml -n husky
kubectl apply -f Service.yaml -n husky

4.2后端

# 与前端项目除了打包不同,其他相同
@@@@下一步需要些gitlab-ci达成一键打包前端项目打前后端镜像并推送的过程@@@

5. 功能演示

  • 登录

  • 首页dashboard

  • 个人中心

  • 配置中心——AD域服务器配置

  • 配置中心——邮件服务器配置

  • AD域管理——AD域账户

6. 常见报错处理

6.1. Ran out of input

celery的beat运行不起来报错时,需要删除不一致husky中的celerybeat-schedule几个文件;

7. 参考文章

  1. Django项目使用Celery

About

[disabled]前后端综合管理平台,支持对AD域用户的管理,支持拓展

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy