Django 当我们希望在同一个aws EC2实例上部署两个网站时,哪种方法是最好的?

Django 当我们希望在同一个aws EC2实例上部署两个网站时,哪种方法是最好的?,django,amazon-web-services,Django,Amazon Web Services,当我们希望在同一个aws EC2实例上部署两个网站时,哪种方法是最好的 两个独立的Docker容器,每个容器包含一个django项目 一个Docker容器由两个单独的django项目组成 如果这两个都是基本的django cms项目,并且我们知道它们将来不会扩展(也不是python包,也不是垂直或水平扩展) 我的目的是在同一个aws ec2实例上部署10个低流量django cms网站 附言。 我正在使用Elastic Beanstalk我确信答案是“视情况而定”,但我相信使用Docker的

当我们希望在同一个aws EC2实例上部署两个网站时,哪种方法是最好的

  • 两个独立的Docker容器,每个容器包含一个django项目
  • 一个Docker容器由两个单独的django项目组成
如果这两个都是基本的django cms项目,并且我们知道它们将来不会扩展(也不是python包,也不是垂直或水平扩展)

我的目的是在同一个aws ec2实例上部署10个低流量django cms网站

附言。 我正在使用Elastic Beanstalk

我确信答案是“视情况而定”,但我相信使用Docker的全部原因是隔离您的环境,并获得灵活性

那么,如果一个项目使用一组python包,而另一个项目使用一组其他包,会发生什么呢。更糟糕的是,如果它们中的任何一个相互冲突怎么办。忘记包可能需要对操作系统进行一些更改的情况

如果需要扩展并移动到两个单独的EC2实例,会发生什么

我还认为,在修复另一个项目时,您希望隔离对一个项目的更改,而不是被迫将两个项目一起重新部署

在这两种情况下,使用两个单独的docker容器更安全、更灵活/更强大。

我确信答案是“视情况而定”,但我相信使用docker的全部原因是隔离您的环境,并获得灵活性

那么,如果一个项目使用一组python包,而另一个项目使用一组其他包,会发生什么呢。更糟糕的是,如果它们中的任何一个相互冲突怎么办。忘记包可能需要对操作系统进行一些更改的情况

如果需要扩展并移动到两个单独的EC2实例,会发生什么

我还认为,在修复另一个项目时,您希望隔离对一个项目的更改,而不是被迫将两个项目一起重新部署


在这两种情况下,使用两个单独的docker容器更安全、更灵活/功能更强大。

什么更容易维护

  • 处理软件更新
  • 重新部署资源
  • 重新配置每个应用程序
我喜欢分离,因此我将定义两个单独的Docker容器,但您需要前面的负载平衡器,因为两个容器都需要一个单独的端口。负载平衡器本身需要子域或域来分离每个容器的请求

示例:

  • www.app1.com->container1
  • www.app2.com->container2
子域的示例:

  • app1.example.com->container1
  • app2.example.com->container2
可能的负载平衡器:

  • Apache在同一个EC2实例上
  • 同一EC2实例上的Nginx。我这里有一个示例容器:
  • EC2中包含的AmazonWS负载平衡器
得益于前面的负载平衡器:

  • 最小化停机时间->两个应用程序都可以进行更新,而另一个应用程序不会停机
  • 启用一个应用程序的高可用性->可能的蓝白部署。取决于你的应用程序

您可以通过使用示例教程来规避这种复杂性,其中所有内容都在同一个容器中。您还将在同一位置拥有所有配置详细信息

什么对你来说更容易维护

  • 处理软件更新
  • 重新部署资源
  • 重新配置每个应用程序
我喜欢分离,因此我将定义两个单独的Docker容器,但您需要前面的负载平衡器,因为两个容器都需要一个单独的端口。负载平衡器本身需要子域或域来分离每个容器的请求

示例:

  • www.app1.com->container1
  • www.app2.com->container2
子域的示例:

  • app1.example.com->container1
  • app2.example.com->container2
可能的负载平衡器:

  • Apache在同一个EC2实例上
  • 同一EC2实例上的Nginx。我这里有一个示例容器:
  • EC2中包含的AmazonWS负载平衡器
得益于前面的负载平衡器:

  • 最小化停机时间->两个应用程序都可以进行更新,而另一个应用程序不会停机
  • 启用一个应用程序的高可用性->可能的蓝白部署。取决于你的应用程序

您可以通过使用示例教程来规避这种复杂性,其中所有内容都在同一个容器中。您还将在同一位置拥有所有配置详细信息

我不知道您为什么不选择更简单的选项:

  • 2个Python虚拟环境;每个django应用程序一个
  • 2个uwsgi主进程,每个django应用程序一个
  • 1个管理uwsgi线程的主管进程
  • 为两个应用程序正确映射了1个nginx

  • 在docker成为大家最喜欢的玩具之前,这就是事情的设置方式,并且已经运行了多年。

    我不知道为什么您不选择更简单的选项:

  • 2个Python虚拟环境;每个django应用程序一个
  • 2个uwsgi主进程,每个django应用程序一个
  • 1个管理uwsgi线程的主管进程
  • 为两个应用程序正确映射了1个nginx
  • 在docker成为大家最喜欢的玩具之前,事情就是这样设置的,并且已经工作了很多年