我要部署一个由Django提供支持的中等规模的站点。我有一个专用的Ubuntu服务器。
我真的很困惑该使用哪种服务器软件。所以我想:为什么不问问斯塔克弗洛夫。
我要找的是:
我听说过Apache、nginx和lighty上的mod_wsgi和mod_python。哪些是正反两方面的,我是否错过了某个人?
@Barry:不知怎的,我觉得Apache对我来说太臃肿了。其他选择呢?
@BrianLy:好的,我再去看看mod wsgi。但是,如果我用lighty提供静态文件,为什么我需要Apache?我还设法为django应用程序本身提供了lighty。那是不是很糟糕?对不起,我喝啤酒太蠢了
更新:lighty和nginx是什么样的用例?它们是完美的选择?
因为我在寻找更深入的答案,所以我决定亲自深入研究这个问题。如果我误解了什么,请告诉我。
一些一般的建议是使用一个单独的web服务器来处理媒体。我所说的单独,是指一个不运行Django的web服务器。例如,此服务器可以是:
然后,对Django来说,你可以走不同的路。您可以:
通过阿帕奇为Django提供服务:
修改python
这是一种稳定的、推荐的/记录良好的方法。缺点:占用大量内存。
模块wsgi
据我所知,mod_wsgi是一个新的选择。它在资源上似乎更快更容易。
mod_fastcgi
使用FastCGI时,您将Django的服务委托给另一个进程。由于mod_python在每个请求中都包含一个python解释器,因此它使用了大量内存。这是一种绕过这个问题的方法。还有一些安全问题。
您要做的是在单独的进程中启动Django FastCGI服务器,然后通过rewrites配置apache,以便在需要时调用此进程。
或者你可以:
在不使用Apache的情况下为Django提供服务,但使用另一台本机支持FastCGI的服务器:
(文档中提到,如果没有任何特定于Apache的需求,可以这样做。我想原因一定是为了节省记忆。)
这是运行Youtube的服务器。它看起来又快又好用,不过我看过关于记事本的报道。
我见过一些基准测试声称这个服务器甚至比lighttpd还要快。不过,大部分是用俄语记录的。
另外,由于Python中的限制,服务器应该以分叉模式运行,而不是线程模式。
所以这是我目前的研究,但我想要更多的意见和经验。
我在用Cherokee。
根据their benchmarks(含盐颗粒),它比Lighttpd和nginx都能更好地处理负载。。。但这不是我用它的原因。
我使用它是因为如果您键入
cherokee-admin
,它会启动一个新的服务器,您可以登录(使用一次性密码)并通过一个完成得非常漂亮的webmin配置整个服务器。这是一个杀手级的功能。它已经为我节省了不少时间。它节省了我的服务器很多资源!至于django,我将它作为一个线程SCGI进程运行。效果很好。切罗基也能保持它的运转。同样,非常好的功能。
当前的Ubuntu repo版本很旧,所以我建议您使用their PPA。祝你好运。
相关问题 更多 >
编程相关推荐