在生产环境中使用Django内置的Web服务器

时间:2011-02-01 20:48:47

标签: django

我将在Linux机器上的生产环境中设置一个简单的Django应用程序。该应用程序的流量非常少 - 每天少于100页的负载。是否可以使用内置的Django网络服务器,或者我应该安装Apache和mod_wsgi?如果是这样,原因是什么?安全或许?

更新

确定我不应该使用内置服务器。 Apache的一些替代方案看起来很有趣。有没有一个更流行/更常用于Django?

4 个答案:

答案 0 :(得分:22)

  

是否可以使用内置的Django网络服务器

没有

  

我应该安装Apache和mod_wsgi吗?

  

如果是这样,原因是什么?安全或许?

晴。

更重要的是,小玩具Django服务器是单线程的,代码中的任何挂起都会挂起服务器。这意味着当两个用户几乎同时点击时,用户一个人的查询必须一直通过Django才能开始用户二的查询。

这必须包括非常慢的下载速度到桌面。

Apache(与所有替代方案一样,lighttpd或nginx)是多线程的。事务中最慢的部分是从Apache下载到桌面。您不希望Python代码(和Django)以单线程方式处理它。即使只是少数用户。

另外,你不是Django服务静态媒体(即CSS和JS库文件。)

如果Apache和mod_wsgi到位,应用程序中的单个慢点不会影响整体系统吞吐量。一个请求的输出页面可以与另一个用户的输出并行地缓慢下载到PC桌面。

答案 1 :(得分:15)

  

请勿在生产设置中使用此(内置Django网络服务器)服务器。它没有经过安全审核或性能测试。

http://docs.djangoproject.com/en/dev/ref/django-admin/#runserver-port-or-address-port

但如果你不愿意,你没有使用Apache。您可以直接使用SpawningGunicorn

Cherokee也很容易设置。

答案 2 :(得分:11)

使用nginx + gunicorn。

Nginx:五行配置。 Gunicorn:两行配置。这很简单有效。为了更好地控制,您可以使用supervisord生成gunicorn进程。

可以使用pip安装gunicorn和supervisord,并且nginx几乎可以在默认包池中的任何发行版中使用。

答案 3 :(得分:3)

内置的Django服务器不是为生产而构建的。原因很多,主要是安全性和效率。 建议的方法是使用文档here

中介绍的mod_wsgi