Django和nginx。 我还需要Apache吗?

我已经围绕这个话题进行了search,而且这个build议似乎是nginx应该在那里提供静态文件和apache + wsgi来处理Django。 很多这些信息都是几年前的,所以我想知道是否有一种方法可以简化这个过程,而不会降低性能,只需要依赖Nginx和fastCGI和/或wsgi。

我是非英雄部署的新手,所以这可能是因为我不知道我在说什么。

不,你不需要Apache + wsgi和Nginx + fCGI / wsgi。 Nginx可以非常快速地为静态文件提供服务,它将使用fCGI / wsgi来处理其余的请求。

您应该阅读这个问题的答案[1]和其他相关的问题。

[1]。 使用Django的fastcgi服务器有什么缺点?

如果你想去nginx路线,最好的选择是:

  • nginx – > gunicorn
  • nginx – > uWSGI

在FASTCGI之上运行Python WSGI应用程序通常不是一个好的体验,因为FASTCGI / WSGI适配器的问题以及它们如何与服务器一起部署。

Apache / mod_wsgi仍然是一个比可以接受的解决方案,它运行时会用更少的资源实际执行得更好:

  • nginx – > Apache / mod_wsgi

因为瓶颈不会成为网络服务器,所以最终选择哪个并不重要,只要你设置得当,大多数人不会这样做,因为网站没有足够的流量或者他们没有监控到位以知道他们需要改变什么。

总的来说,选择你认为更容易管理的东西是最好的做法,当开始。

有关您的真实性能瓶颈将会发生的一些背景以及监控的重要性,请观看:

这一切都说,你提到Heroku。 现在真的只有Heroku有一次选择,那就是使用gunicorn,而不需要担心nginx。 然而,这本身就是一个问题,因为单独使用gunicorn并不是提供静态媒体资产的好选择,因此几乎被Heroku迫使在其他地方提供静态资产。