6

我对如何进行有点困惑。我正在设置 Django 在 Mediatemple DV 服务器上运行。我正在尝试找出提供图像/视频/等内容的适当设置。

我不太明白这在http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/上意味着什么

我们建议使用单独的 Web 服务器——即不运行 Django 的服务器——来提供媒体服务。这里有一些不错的选择:

lighttpd、Nginx、TUX、Apache、Cherokee 的精简版

这是否意味着我应该在一个 Apache 实例(通过 mod_wsgi)上提供 Django,然后在另一个 Apache 实例或上述替代方案之一上提供其内容?我可以在同一个专用虚拟服务器上执行此操作,对吗?如果是这样,关于我应该如何做的任何建议?

谢谢!

4

3 回答 3

7

对于大多数人来说,不需要单独的媒体服务器。人们越来越多地批评 Django 文档在不需要时过于自由地推动人们朝那个方向发展。

所以,不要一开始就打扰,如果使用 mod_wsgi,也可以使用 Apache Web 服务器作为静态媒体。建议您确保在 mod_wsgi 的守护程序模式下运行 WSGI 应用程序,因为这样提供静态文件的进程将很精简,并且不会产生实际动态 Web 应用程序的开销。

如果过度担心内存使用情况,还请阅读:

http://blog.dscpl.com.au/2009/11/save-on-memory-with-modwsgi-30.html

看看这一切是如何进行的,只有当 Apache 本身看起来不够用时,然后再考虑使用另一台服务器来处理媒体,首选的安排是使用 nginx 来处理静态媒体,nginx 还充当 Apache/mod_wsgi 的代理。在前面使用 nginx 实际上可以让 Apache/mod_wsgi 性能更好,而在单独的域上使用 nginx 则不会。

于 2011-04-06T00:06:27.370 回答
2

基本上它的意思是您应该使用 apache 使用 mod_wsgi 来为您的 django 应用程序提供服务,并使用更轻量级的 Web 服务器(如 nginx)来提供您的静态内容。

例如。

www.yourapp.com -> apache -> mod_wsgi -> 你的 django 应用

static.yourapp.com -> nginx

通过分离您的关注点,您可以将您的 apache 实例配置为处理繁重处理的自卸卡车,并将您的 nginx 服务器配置为轻巧快速,就像提供大量小静态文件的赛车一样。

如果您将 nginx 配置为处理所有 Web 流量,您可以将所有 django 请求反向代理到其背后的 apache,并拦截所有静态文件并从 nginx 服务这些海峡。

有关更多信息,请参阅这些链接。

http://codepatter.com/2009/04/23/how-to-speed-up-your-django-sites/

django:通过 nginx 提供静态文件

https://serverfault.com/questions/122809/django-serving-static-files-through-nginx

https://serverfault.com/questions/199038/serving-static-files-fails-nginx

于 2011-04-05T19:59:20.433 回答
-1

Ken 的评估是正确的,他建议在 NGINX 代理后面提供所有服务。这就是要走的路。

您可以将应用程序和媒体服务器放在同一台服务器或不同的服务器上。对于大多数应用程序来说,这无关紧要,并且可以从同一台机器上同时提供媒体和应用程序。

如果您正在查看大量用户和繁重的流量,将媒体服务器分成自己的机器将防止两者相互崩溃并为您提供更多的灵活性。

如果您还没有,请查看Gunicorn,因为它是闪电般快速、易于部署的应用程序服务器,并且是新的热点。

于 2011-04-05T23:31:46.940 回答