【问题标题】:How to host 50 domains/sites with common Django code base如何使用通用 Django 代码库托管 50 个域/站点
【发布时间】:2011-02-08 23:28:23
【问题描述】:

我有 50 个不同的网站,它们使用相同的布局和代码库,但大多是不重叠的数据(区域支持网站,而不是链接农场)。有没有办法一次安装代码并同时运行所有 50 个代码?

当我有要修复的错误(或部署新功能)时,我想部署 ONE time + 1 restart 并完成它。

还有:

代码需要知道请求来自哪个域,以便显示适当的数据。

【问题讨论】:

    标签: django deployment hosting


    【解决方案1】:

    想到了Sites framework

    除此之外,我们通过将 Django 符号链接到各种 docroot 来为多个站点运行 Django。也可以像魅力一样工作。

    【讨论】:

    • 在前端使用 Apache? FastCGI 还是什么?有多少线程?
    【解决方案2】:

    我可以看到两种截然不同的方法:

    1. 使用一个数据库和站点框架。每个帖子/图片/任何模型都连接到一个站点,并且您始终在站点上进行过滤。这需要每个数据库都有一个单独的设置文件。
    2. 为每个站点使用一个数据库。这允许每个站点使用不同的用户,但需要复制存储在数据库中的所有内容。它还需要一个指向正确数据库的单独设置文件。

    无论哪种方式,您都不会复制任何代码,只会复制数据。

    --

    如果您需要对 ie 进行特定于站点或特定于后期的更改。一个模板,你应该阅读 Django 如何加载模板。它允许您指定一个列表,即 ["story_%d.html", "story_site_%d.html", "story.html"] 并且 django 将按此顺序查找模板。

    【讨论】:

      【解决方案3】:

      我刚刚遇到这个问题并最终使用了一个自定义中间件类:

      1. 获取 HTTP_HOST
      2. 清理 HTTP_HOST(删除 www、端口等)
      3. 在与每个帐户相关联的网站表中查找域。
      4. 在 HTTPRequest 对象上设置帐户实例。

      在我的整个视图代码中,我会根据存储在 HTTPRequest 对象中的帐户进行查找。

      希望将来能对某人有所帮助。

      【讨论】:

      • 谢谢。我正在做类似的事情,只是使用缓存层来减少对数据库的访问。但是,如果缓存层被设置为使用数据库,最好直接发出请求,就像你正在做的那样。
      猜你喜欢
      • 2021-05-06
      • 2010-12-10
      • 2014-11-29
      • 2022-01-25
      • 2012-05-10
      • 1970-01-01
      • 2019-12-01
      • 2018-06-23
      • 2010-09-18
      相关资源
      最近更新 更多