我正在创建一个对许多小公司有用的Django项目。如果他们可以点击我公共页面上的“创建演示”按钮,为Django项目创建一个空数据库,我希望如此。
所以,我希望能够转到http://example.com/demo_a或http://example.com/demo_b,但在Apache配置文件中只有一个条目。
<VirtualHost *:80>
ServerName example.com
WSGIScriptAlias / /var/www/example/mysite.wsgi
<Directory var/www/example>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
每次我想创建一个演示站点时,我真的不想进入http.conf文件。所以,如果他们必须去http://example.com/demo_a(例如),我就没事了。
我不清楚如何将“demo_a”与数据库关联起来。有数据库路由器的东西和网站的东西,但我不知道如何根据URL的某些部分选择数据库(或“网站”)(例如,“demo_a”)。
另一方面,我将S3中的静态文件存储在动态确定的目录中,以便我认为我可以处理静态文件。
这一切对于进行负载平衡也很有用。
我是Django这个级别的新手。有任何想法吗?它似乎应该工作,只是不确定如何实现它。
答案 0 :(得分:0)
您遇到的问题不是新问题,而是任何人创建任何多租户软件的常见问题;或开发软件即服务应用程序。
有关与此类架构相关的数据挑战的更详细分析,我强烈建议您阅读this excellent article from 2006 from MSDN。
django-tenant-schemas
application提供了视图路由,以便将域正确路由到各自的数据库:
通过主机名(即tenant.domain.com)识别租户。 此信息存储在公共模式的表中。每当一个 请求发出后,主机名用于匹配租户 数据库。如果匹配,则更新搜索路径以使用此选项 租户的架构。因此,从现在开始,所有查询都将在 租户的架构。例如,假设您有一个租户客户 http://customer.example.com。来自的任何请求 customer.example.com将自动使用客户的架构并制作 租户可应要求提供。如果没有找到租户,则为404 提出错误。这也意味着你应该有一个房客 主域,通常使用公共架构。