Django和nginx。我还需要apache吗?

时间:2012-11-22 06:38:15

标签: django nginx fastcgi wsgi

我已经在这个主题上进行了搜索,并且建议似乎是nginx应该在那里提供静态文件和apache + wsgi来处理Django。很多这些信息已经有几年的历史了,所以我想知道是否有一种方法可以简化这种情况而不会降低性能,只需要依赖Nginx和fastCGI和/或wsgi。

我是非Heroku部署的新手,所以这就是为什么我可能听起来像我不知道我在说什么。

2 个答案:

答案 0 :(得分:5)

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

您应该阅读这些问题的答案[1]以及那里提到的其他相关问题。

[1]。 What is the disadvantage of using Django's fastcgi server

答案 1 :(得分:3)

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

  • nginx - > gunicorn
  • nginx - > uWSGI

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

Apache / mod_wsgi仍然是一个非常可接受的解决方案,它在以下运行时实际上可以用更少的资源执行:

  • nginx - >阿帕奇/ mod_wsgi的

因为瓶颈不会成为网络服务器,所以最终它并不重要,只要你正确设置,大多数人都不会做的事情。无论如何,网站没有足够的流量,或者他们没有监控来知道他们需要改变什么。

总的来说,选择你认为更容易管理的东西是开始时最好的事情。

有关您的实际性能瓶颈以及监控重要性的一些背景信息,请观看:

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