django - 根据用户创建在 Heroku 上自动部署应用
问题描述
我有一个在 Heroku 上使用 Postgres 的多租户 Django 应用程序。有没有办法根据在我的应用程序上创建新用户的时间实际实例化一个新的 dyno/db/subdomain?
解决方案
这在很大程度上取决于您的多租户是如何实现的。
如果您尚未在应用程序中构建多租户,我鼓励您查看类似的东西django-tenants
,它添加了基于子域和 PostgreSQL 模式的多租户支持。如果这不合适,您可以探索其他类似的库。
一旦你设置好了django-tenants
,在 Django 方面就没有什么可做的了。这一切都是配置。对已配置子域的请求将被路由到适当的共享或租户数据库架构。
但是这些请求必须提交到您的应用程序中。这就是 DNS 的用武之地,理想情况下使用通配符子域。
首先,在 Heroku 端添加*.your-domain.tld
到您应用的域:
heroku domains:add "*.your-domain.tld"
接下来,为您的 DNS 提供商添加通配符 CNAME 条目¹。如何做到这一点的确切机制因供应商而异。您已经说过您正在迁移到 DNSimple,并且看起来他们支持使用*
.
¹不幸的是, GoDaddy 等一些 DNS 提供商不支持通配符 CNAME 条目。在这种情况下,您必须单独创建每个 CNAME 记录。
推荐阅读
- javascript - 在Angular中,我想将nativeElement投影到另一个组件而不使用innerHTML
- python - 不带空格分割字符串
- python - 从网络路径移动特定文件(有例外)
- c++ - C++ 内联初始化成员变量的正确方法
- c# - C# BlockingCollection 处置方法
- python - WTF Form SelectField ValueError:解压的值太多
- python - 在 matplotlib 中使用 Debye+Einstein 模型进行比热拟合
- c# - 如何将 UInt 和其他类型转换为 String Hex 以将数据发送到服务器?C#
- r - 如何在 R 中将整数 123033 转换为时间 12:30:33 格式
- laravel - 我想让我的项目在其他浏览器中运行