单独的服务器为django应用程序及其内容提供服务?

时间:2011-04-05 19:41:51

标签: django apache mod-wsgi mediatemple serving

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

我不太明白这对http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

的意义
  

我们建议使用单独的Web服务器(即,也不运行Django的服务器)来提供媒体服务。以下是一些不错的选择:

     

lighttpd的,   Nginx的,   TUX,   Apache的简化版本,   切诺基

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

谢谢!

3 个答案:

答案 0 :(得分: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不会。

答案 1 :(得分:2)

基本上它说的是你应该使用apache使用mod_wsgi来为你的django应用程序提供服务,并使用像nginx这样更轻量级的web服务器来提供你的静态内容。

例如。

www.yourapp.com - > apache - > mod_wsgi - >你的django app

static.yourapp.com - > nginx

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

如果您配置nginx以便它处理所有网络流量,您可以将所有django请求反向代理到它后面的apache,并拦截所有静态文件并从nginx服务那些海峡。

请参阅这些链接以获取更多信息。

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

django : Serving static files through nginx

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

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

答案 2 :(得分:-1)

肯在他的评估中是正确的,并建议在NGINX代理后面提供服务。这是要走的路。

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

如果您正在查看大量用户和大量流量,将介质服务器拆分到自己的计算机中可以防止这两者相互崩溃并让您更灵活。

如果你还没有,请查看Gunicorn,因为它是一个快速,易于部署的应用服务器,并且是新的热点。