【问题标题】:Automatically Deploy App on Heroku Based on User Creation根据用户创建在 Heroku 上自动部署应用
【发布时间】:2018-04-25 00:02:11
【问题描述】:

我有一个在 Heroku 上使用 Postgres 的多租户 Django 应用程序。有没有办法根据在我的应用程序上创建新用户的时间实际实例化新的 dyno/db/subdomain?

【问题讨论】:

  • 多租户的情况如何?
  • 好吧,我要么计划做我上面描述的事情,我基本上将应用程序(每个租户的单独数据库)复制到不同的子域上,或者我将通过映射人为地隔离每个租户Postgres 中的表,而仅使用 1 个数据库。
  • 你看过django-tenants吗?它使用 PostgreSQL 模式进行数据隔离,使用子域来区分租户。有other libraries to explore, too
  • 哇,克里斯太棒了。我不知道 django 已经有了这么复杂的东西!
  • @Chris 你知道如何在我的域名托管服务商端生成子域吗?我了解如何在heroku上做通配符域,但我不需要实际建立子域吗?

标签: django heroku heroku-postgres


【解决方案1】:

这在很大程度上取决于您的多租户是如何实现的。

如果您尚未在应用程序中构建多租户,我建议您查看类似 django-tenants 的内容,它添加了基于子域和 PostgreSQL 模式的多租户支持。如果这不合适,您可以探索other similar libraries

一旦您设置了django-tenants,在 Django 方面就没有什么可做的了。这一切都是配置。对已配置子域的请求将被路由到适当的共享或租户数据库架构。

但这些请求必须发送到您的应用程序。这就是 DNS 的用武之地,理想情况下使用通配符子域。

首先,add *.your-domain.tld to your app's domains 在 Heroku 方面:

heroku domains:add "*.your-domain.tld"

接下来,为您的 DNS 提供商添加通配符 CNAME 条目¹。如何做到这一点的确切机制因供应商而异。你说过你要迁移到 DNSimple,它是looks like they support wildcard CNAME records using *


¹很遗憾,some DNS providers like GoDaddy don't support wildcard CNAME entries。在这种情况下,您必须单独创建每个 CNAME 记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2023-03-30
    • 1970-01-01
    • 2012-04-17
    • 2013-10-26
    • 1970-01-01
    相关资源
    最近更新 更多