首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置服务器,使用django、virtualenv、gunicorn和nginx托管多个域

设置服务器,使用django、virtualenv、gunicorn和nginx托管多个域
EN

Stack Overflow用户
提问于 2016-10-31 09:01:24
回答 3查看 731关注 0票数 1

我正在设置一个新的服务器机器,它将托管多个django网站。

我必须指出,我拥有(开发和绝对控制)所有的网站将运行在服务器上。

我很肯定所有的网站都会使用相同的版本:

  • 姜戈
  • 红角角
  • nginx
  • postgreSQL和psycopg2 (虽然有些网站将使用地理空间和其他扩展)

我知道django应用程序之间唯一不同的地方是:

  • 所使用的python模块(这可能对所需python的版本有影响)

我可以理解如何使用virtualenv来管理项目具有特定python模块(甚至python版本需求)的实例,但对于我来说(就资源而言)、拥有每个项目(通过虚拟化)、分别安装django、nginx、gunicorn似乎是相当浪费的。等。

我的问题是:

是否“可以接受”(或在上述场景中被认为是最佳实践): install、gunicorn、nginx、postgreSQL和psycopg2,而仅仅使用虚拟化来管理不同项目之间不同的部分(例如python模块/版本)?

注意:在这个场景中,将有一个nginx服务器处理多个域。

最后但并非最不重要的一点是,是否可以使用virtualenv来管理不同项目中的不同postgreSQL扩展?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-31 09:06:57

不是的。这可能会奏效,但这将是个坏主意。

首先,我们不清楚你认为什么样的“资源”会被浪费。唯一相关的是磁盘空间,我们谈论的仅仅是几兆字节,甚至不值得考虑。

第二,现在不可能单独升级其中任何一个;对于除了简单的升级之外的任何东西,您都需要一起测试和发布它们,而不仅仅是做您需要的事情并单独部署它。

票数 1
EN

Stack Overflow用户

发布于 2016-10-31 09:06:15

我不认为这是明智的。

通过这样做,您将在项目之间创建一个依赖关系,这意味着您将永远无法在没有所有其他项目的情况下升级其中一个。这将是一个巨大的皮塔。

最终,您将永远无法升级,因为项目A的依赖foo不能与django 1.N一起工作,但是Project B的依赖条至少需要1.N --此时,您将返回到更干净的解决方案,不同的环境。

这适用于django方面的事情,至少,它可能稍微更好地与Postgres和Nginx。

票数 0
EN

Stack Overflow用户

发布于 2016-10-31 10:45:52

我建议使用docker虚拟化,这样每个项目都有自己的范围,并且不会干扰其他项目。

我目前在多台服务器上有这样的配置,我对此非常满意,因为我非常灵活,而且非常重要的是--我很安全,因为如果任何项目中都有关键的bug,其他项目仍然是安全的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40339098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档