如何在Django上托管多租户软件?

时间:2011-09-26 11:02:31

标签: django url-rewriting multi-tenant

想象一下,你有一个主要的django项目,它为不同的租户提供软件 - >

该软件将托管在 - >的 www.tenantdomain.com

主要项目托管在 - >的 www.ourdomain.com

支持通过此网址访问该软件 - >的 www.ourdomain.com/tenant_id/home /
这应该转换为 - >的 www.tenantdomain.com/home /

How can one do that ?

还有一件事,www.tenantdomain.com和www.ourdomain.com我们都托管在一台服务器上,并且他们都访问一个数据库

1 个答案:

答案 0 :(得分:1)

Django方式为您提供了两种选择。

快速的方法是将所有租户的应用程序托管在Django sites framework的同一个项目中。如果应用程序共享数据,这很有用。如果不是这种情况,您应该澄清访问一个数据库的应用程序的含义。 Django中的“一个数据库”意味着一个项目。这样做基本上意味着从tenant.com/{whatever}yourapp.com/tenant/5/{whatever}进行网址代理。

更复杂的方式是将租户的应用程序完全分离为单独的Django项目实例。这意味着手动(或以编程方式)部署每个实例。此选项需要在后台执行更多sys-admin任务,但允许您获得最大的灵活性。更重要的是,每个应用程序都与其他应用程序完全分离,因此这在安全性方面是最好的。