2016-02-26 68 views
6

我已经做了使用manage.py的初学者项目,现在移至sqllite后的postgres。许多人建议gunicorn?有什么不同 ?Django:通过manage.py使用服务器和像gunicorn等其他服务器之间的区别哪个更好?

+0

这是你现在不应该考虑的东西,因为你是非常新的。让你的项目继续下去,然后当你准备推动它的生活,然后专注于此。您可以使用Heroku,这仍然允许您使用manage.py文件轻松进行部署。祝你好运。 –

+4

文档中有一个巨大的警告,说不要使用runserver进行生产 – Sayse

回答

15

最受欢迎的设置是nginx和gunicorn。因此,我们谈谈为什么推荐过的runserver gunicorn之前,让我们快速澄清的nginx的区别 - 因为都声称他们是Web服务器:)

NGINX应该是你的入口点向公众开放,这是服务器侦听端口80(http)和443(https)。主要原因是处理HTTP请求,即应用重定向,HTTP Auth(如果需要),管理TSL/SSL证书以及 - 确定您的请求最终要到达的位置。例如。可能有一个node.js应用程序生活在localhost:3000上,等待/foo/api的请求,而gunicorn正在等待localhost:8000来为您的应用程序提供服务。将传入请求代理到所谓的upstream服务(在本例中为node.js和gunicorn)的这种功能称为反向代理。

GUNICORN将HTTP请求转换为python的服务器。有一些称为WSGI的规格。 Django在web服务器中的构建也是如此。 manage.py runserver是针对开发(例如通过自动重新启动更改)。 Gunicorn瞄准生产。它具有很多功能,缺少构建服务器。例如。它可以产生多个工作进程以并行传入的请求到多个CPU核心,它具有适当的日志记录,通常针对速度进行了优化,可以根据您的设置配置为非常好的等级,并且非常主动地检查安全问题。

还有其他的网络服务器与gunicorn竞争,但gunicorn(最初受ruby的独角兽启发)非常流行,易于设置,因此不仅是一个非常好的起点,而且是一个非常专业的解决方案,被大型项目。

+0

感谢您的回复。那么我应该作为一名初学者在runserver上开发并慢慢转移到gunicorn。 :) –

6

manage.py runserver只是一个开发服务器,它不适用于任何情况下的生产。您需要使用Apache,uWSGI,NGINX或其他某些服务器来为您的django项目提供部署服务。