【问题标题】:multi-tenancy solution with django使用 django 的多租户解决方案
【发布时间】:2014-12-04 19:15:10
【问题描述】:

我想创建一个多租户应用程序,其中每个租户都有自己的域和数据库。

域将是这样的:store1.saas.com、store2.saas.com .. 并且它们各自的数据库将是 store1 和 store 2..

我决定这样命名它,以便根据 url,我可以使用一些中间件设置数据库。

我已经尝试过https://github.com/bernardopires/django-tenant-schemas 这个,但它不会工作,因为它特别要求创建一个继承自 TenantMixin 的模型,然后在这样的设置中定义它。TENANT_MODEL = 'catalogue.Product'。我有多个 TenantModels,这个方案不允许多个模型(它需要字符串,然后使用“。”分割并基于它做他们的东西)。

我的问题是

  1. 如何创建子域
  2. 如何在本地测试它们,比如 store1.127.0.0.1:8000 不起作用?

【问题讨论】:

    标签: python django multi-tenant


    【解决方案1】:

    您可以尝试通过编辑您的主机文件/etc/hosts 并将其放入其中来尽可能接近地模拟未来的现实世界:

    127.0.0.1 store1.saas.com
    127.0.0.1 store2.saas.com
    ... etc
    

    然后您可以通过 store1.saas.com 等导航到您的本地主机。

    【讨论】:

    • 如何在生产环境中做同样的事情。我每次创建租户时都必须编辑 /etc/hosts 吗?
    • 通常在生产环境中,您需要一个 DNS 服务器为您解析。例如,您设置 DNS 以将 *.saas.com 解析到您的服务器,因此 store1、store2 等将自动转到那里;就像 www.saas.com、www.store1.saas.com 等等。
    • 我必须这样做才能使其工作:store1.saas.com:8000
    • 好吧,如果您的网络服务器在端口 8000 上运行,那么您也必须将其放入 URL 中;-) 但如果您在生产环境中运行您的应用程序,这也适用端口 8000,名称通过 DNS 服务器解析。相同的区别。
    • 但是这样做会阻止我的 postgres 服务器启动! :(
    猜你喜欢
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2019-07-29
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多