dvadmin-tenants 多租户管理
是 dvadmin的一款租户插件,集成 `tenant-schemas-celery`、`django-tenants`、`django-postgres-extra` 模块,数据库采用 PostgreSQL (mysql无法兼容此插件) ,实现了多租户的saas模式。
预览截图
应用介绍
前端插件:https://gitee.com/huge-dream/dvadmin-tenants-web
或 npm install @great-dream/dvadmin-tenants-web
dvadmin-tenants
介绍
dvadmin-tenants 是 dvadmin的一款租户插件,集成 tenant-schemas-celery
、django-tenants
、django-postgres-extra
模块,数据库采用 PostgreSQL (mysql无法兼容此插件) ,实现了多租户的saas模式,
解决多租户问题通常有三种解决方案。
- 隔离方法:单独的数据库。每个租户都有自己的数据库。
- 半隔离方法:共享数据库,独立模式。所有租户一个数据库,但每个租户一个模式。
- 共享方法:共享数据库、共享模式。所有租户共享相同的数据库和模式。有一个主租户表,所有其他表都有一个指向的外键。
此插件实现了第二种方法,在我们看来,它代表了简单性和性能之间的理想折衷。
重要说明
- 数据库需要从MySQL 换成 PostgreSQL;
- 如果需要使用本插件,建议新建数据库后,再进行迁移旧数据;
- 详细后端文档可阅读 django-tenants 官网文档;
- 多租户需要通过
子域名
的方式进行区分,如需要通过子路径
方式进行区分,请参考 https://django-tenants.readthedocs.io/en/latest/install.html#sub-folder-support (未进行试验,请自行二开) - 数据库迁移时,与正常的dvadmin 迁移、初始化有所区别,请参考下面迁移数据
安装配置说明
安装
使用pip安装软件包(whl 在下载的 dist文件夹下):
pip install dvadmin_tenants-1.0.0-py3-none-any.whl
方式一: 一键导入注册配置
在 application / settings.py 插件配置中下导入默认配置
...
from dvadmin_tenants.settings import * # 租户插件(建议放最后)
方式二: 参考 dvadmin_tenants/settings.py 自行阅读注册
修改数据库配置
修改conf/env.py
下的数据库配置引擎为 psqlextra.backend
# 数据库引擎
DATABASE_ENGINE = "psqlextra.backend"
# 数据库地址 改为自己数据库地址
DATABASE_HOST = "127.0.0.1"
# 数据库端口
DATABASE_PORT = 5432
# 数据库用户名
DATABASE_USER = "postgres"
# 数据库密码
DATABASE_PASSWORD = "123456"
# 数据库名
DATABASE_NAME = "dvadmin"
迁移数据
与正常的dvadmin 迁移有所区别
python3 manage.py pgmakemigrations
python3 manage.py migrate_schemas
# 注意备份初始化信息
python3 manage.py tenant_init
修改host文件
通过修改电脑 hosts (自行百度) ,把域名 public.django-vue-admin.com
(可自行更改数据库配置) 映射成127.0.0.1
ip地址
打开项目
通过修改hosts后,通过浏览器进行打开
后端:http://public.django-vue-admin.com:8000
前端: http://public.django-vue-admin.com:8080
账号密码:dvadmin默认
常用配置
1. 添加共享app
共享:只在超级租户public中建表,表不在普通租户建,读取表默认走public的表
在 settings.py 下,添加如下配置
INSTALLED_APPS = [ # 正常注册app
...
'共享app名'
]
TENANT_SHARED_APPS = [ # 配置独享
...
'共享app名'
]
2. 添加独享app
独享:除超级租户public外的所有模式都会建立对应表(只在普通租户建立表)
在 settings.py 下,添加如下配置
INSTALLED_APPS = [ # 正常配置app
...
'独享app名'
]
TENANT_EXCLUSIVE_APPS = [ # 配置共享
...
'独享app名'
]
3. 添加通用app
通用:正常注册app 即可,默认会在超级租户及普通租户都会建立表
INSTALLED_APPS = [ # 正常配置app
...
'通用app名'
]
4. 配置超级租户
4.1 初始化后通过数据库表中,public
模式下的 sys_tenant_domain
表手动进行修改 domain 字段。
4.2 通过修改电脑 host ,把域名 public.django-vue-admin.com
(可自行更改数据库配置) 映射成127.0.0.1
ip地址
使用说明
通过安装租户前端插件,在页面上进行租户创建建立。
通过修改hosts ,访问子租户域名信息。
©软件著作权归作者所有。本站所有软件均来源于网络,仅供学习使用,请支持正版!
转载请注明出处: django-vue-admin 社区 » dvadmin-tenants 多租户管理
新年快乐,购买租户插件有售后服务不?
token_blacklist_outstandingtoken,token_blacklist_blacklistedtoken 表都没迁移过来我真的服了
添加租户有一堆问题
按照你说的办法迁移的 现在登陆不上去!!!<br /> 错误: 关系 "token_blacklist_outstandingtoken" 不存在 LINE 1: INSERT INTO "token_blacklist_outstandingtoken" ("user_id", "...
AttributeError: partially initialized module 'application.settings' has no attribute 'INSTALLED_APPS' (most likely due to a circular import) 会导致循环引用吗