最干净,最快的Django服务器设置
我将部署一个由Django驱动的中型站点。我有专用的Ubuntu服务器。
我对使用哪种服务器软件感到非常困惑。所以我对自己想:为什么不问。
我正在寻找的是:
- 易于设置
- 快速便捷的资源
- 可以提供媒体文件
- 能够在同一服务器上服务多个djangosites
- 我宁愿不安装PHP或其他任何会占用资源的东西,而我对此毫无用处。
我听说过Apache,nginx和lighty上的mod_wsgi和mod_python。这些利弊有哪些,我想念某人吗?
@Barry :不知何故我觉得Apache对我来说是肿的。那替代品呢?
@BrianLy
:好的,我会再检查一下mod_wsgi。但是,如果我随便提供静态文件,为什么还需要Apache?我也设法轻松地为django应用提供服务。无论如何,这很糟糕吗?对不起,蜜蜂如此愚蠢:-)
更新 :lighty和nginx怎么样?当它们是最佳选择时,它们是用例?
-
由于我一直在寻找一些更深入的答案,因此我决定自己进行深入研究。如果我有误解,请告诉我。
一些一般性建议是使用单独的Web服务器来处理媒体。单独来说,我指的是未运行Django的网络服务器。该服务器可以是例如:
- Lighttpd(浅色)
- Nginx(EngineX)
- 或其他轻量级服务器
然后,对于Django,您可以走不同的道路。您可以:
-
通过 Apache 服务Django,并:
- mod_python
这是稳定且推荐/充分记录的方式。缺点:占用大量内存。
* **mod_wsgi**
据我了解,mod_wsgi是一个较新的替代方案。在资源上似乎更快,更容易。
* **mod_fastcgi**
使用FastCGI时,您将Django的服务委托给另一个进程。由于mod_python在每个请求中都包含python解释器,因此它会占用大量内存。这是绕过该问题的一种方法。此外,还有一些安全问题。
您要做的是,在一个单独的进程中启动Django FastCGI服务器,然后通过重写配置apache以在需要时调用此进程。
或者您可以:
- 在 不使用Apache的情况下为 Django提供服务,但在另一台本地支持FastCGI的服务器上进行服务:
(文档中提到,如果您没有Apache的特定需求,则可以执行此操作。我想原因一定是为了节省内存。)
* **Lighttpd**
这是运行Youtube的服务器。它似乎快速且易于使用,但是我见过有关内存泄漏的报告。
* **Nginx的**
我见过一些基准测试声称该服务器比lighttpd还要快。虽然它主要是用俄语记录的。
另一件事,由于Python的限制,您的服务器应以分叉模式而不是线程模式运行。
所以这是我目前的研究,但我需要更多的见解和经验。