4

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

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

4

2 回答 2

5

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

您应该阅读此问题[1] 的答案以及此处提到的其他相关问题。

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

于 2012-11-22T09:34:34.113 回答
3

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

  • nginx -> gunicorn
  • nginx -> uWSGI

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

Apache/mod_wsgi 仍然是一个超出可接受的解决方案,并且在运行时它实际上会以更少的资源更好地执行:

  • nginx -> Apache/mod_wsgi

因为瓶颈不会是网络服务器,所以最终你选择哪个并不重要,只要你正确设置它,大多数人不会这样做,因为那里的网站无论如何都没有获得足够的流量,或者他们没有适当的监控来知道他们需要改变什么。

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

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

话虽如此,你提到了 Heroku。现在,Heroku 确实只有一次选择,那就是使用 gunicorn,您无需担心 nginx。不过,这本身就是一个问题,因为仅使用 gunicorn 并不是提供静态媒体资产的好选择,因此 Heroku 几乎被迫在其他地方提供静态资产。

于 2012-11-22T09:12:35.100 回答