我将在Linux机器上的生产环境中设置一个简单的Django应用程序。该应用程序的流量非常少 - 每天少于100页的负载。是否可以使用内置的Django网络服务器,或者我应该安装Apache和mod_wsgi?如果是这样,原因是什么?安全或许?
更新
确定我不应该使用内置服务器。 Apache的一些替代方案看起来很有趣。有没有一个更流行/更常用于Django?
答案 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。您可以直接使用Spawning,Gunicorn等
Cherokee也很容易设置。
答案 2 :(得分:11)
使用nginx + gunicorn。
Nginx:五行配置。 Gunicorn:两行配置。这很简单有效。为了更好地控制,您可以使用supervisord生成gunicorn进程。
可以使用pip安装gunicorn和supervisord,并且nginx几乎可以在默认包池中的任何发行版中使用。
答案 3 :(得分:3)
内置的Django服务器不是为生产而构建的。原因很多,主要是安全性和效率。 建议的方法是使用文档here
中介绍的mod_wsgi