多租户django-tenants与postgresql的安装配置

django下多租户的实现,有一个例子叫django-tenants,但是它的安装和部署方法有点复杂,官方的文档写得不好(顺序不对,数据也不对),如下面的网址。
https://django-tenants.readthedocs.io/en/latest/install.html#
我根据这个网址,一步步摸索,得到了下面的正确部署方式,供大家研究。
(遗憾的是,django-tenants只能与postgresql搭配,我尝试用mysql来实现,是进行不下去的)
第一步,下载代码和库
1 下载代码 
从https://github.com/django-tenants/django-tenants上,fork一个工程到自己的仓库,再用git pull下载代码。
或者,直接用http下载https://github.com/django-tenants/django-tenants/archive/refs/heads/master.zip
2 安装库
用这个命令安装库
pip install django-tenants

3.修改配置
修改examples\tenant_tutorial\settings.py中
DATABASES = {
    'default': {
        'ENGINE': 'django_tenants.postgresql_backend',  
        'NAME': os.environ.get('DATABASE_DB', 'tenant_tutorial'),
        'USER': os.environ.get('DATABASE_USER', 'postgres'),
        'PASSWORD': os.environ.get('DATABASE_PASSWORD', 'postgres.111'),
        'HOST': os.environ.get('DATABASE_HOST', 'localhost'),
        'PORT': os.environ.get('DATABASE_PORT', '5432'),
    }
}
4 安装数据库postgresql
安装postgresql,设置用户名为postgres,密码为postgres.111,创建一个数据库tenant_tutorial
然后执行:
python examples\tenant_tutorial\manage.py makemigrations
python examples\tenant_tutorial\manage.py migrate
成功后可以看到postgresql中,tenant_tutorial数据库的schemas下public用户生成了许多Tables。
执行“启动网站“命令:
python examples\tenant_tutorial\manage.py runserver 127.0.0.1:8088
后,可以点击出现的链接:http://127.0.0.1:8088/
浏览器能正确打开网址,提示第2步:
Second Step: Create a public tenant

第二步:
在终端按CTRL+C停止网站服务器
执行.\examples\tenant_tutorial\manage.py shell
后稍等一会,他会打开manager.py,并进入manager.py文件的编辑状态,复制以下内容到该文件后面:
    from customers.models import Client, Domain
    tenant = Client(schema_name='public',
           name='Trendy SaSS',
           description='Public Tenant')
    tenant.save()

    domain = Domain()
    domain.domain = 'public.yanhexing.com'
    domain.tenant = tenant
    domain.is_primary = True
    domain.save()
    print("create public done")
保存文件后,再次“启动网站“,然后再按CTRL+C停止时,可以看到create public done的打印,并可以在pgAdmin中看到customers_client表和customers_domain表各增加了一条记录。同时也会提示错误:  重复键违反唯一约束等,可以忽略。

再次执行python manage.py runserver然后进入网站,看到网页已经刷新,提示需要进行第三步。

第三步:
1 创建两个租户
用同样的办法,追加以下内容到manager.py,但是要先把前面加的内容先删除。
    from customers.models import Client, Domain
    tenant = Client(schema_name='tenant1',
                    name='Tenant1 - Awesome',
                    description='Our second real tenant, awesome!')
    tenant.save()
    domain = Domain()
    domain.domain = 'tenant1.yanhexing.com'
    domain.tenant = tenant
    domain.is_primary = True
    domain.save()
    print("create tenant1 done")
执行python manage.py runserver然后再按CTRL+C停止。
再把tenant1改成tenant2,再来一遍。这样customers_client表和customers_domain表各增加了两条记录

2 创建假域名测试
编辑hosts文件,弄一个虚假的域名与127.0.0.1对应。windows系统,是这个文件:
C:\Windows\System32\drivers\etc\hosts
在原来的文件内容后面追加如下:
127.0.0.1        leo.com
127.0.0.1        public.yanhexing.com
127.0.0.1        tenant1.yanhexing.com
127.0.0.1        tenant2.yanhexing.com
然后,类似于创建public公共租户的方法,同样创建两个租户:
最后,再次执行启动网站,进入网站后,看到”Tutorial Complete!“
网页里面有域名的链接:http://public.yanhexing.com:8088/ 
http://tenant1.yanhexing.com:8000/和http://tenant2.yanhexing.com:8000/,等,点击不同域名网址,可以看到网页已经可以访问不同的数据。
到此,多租户系统部署成功。
 

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值