我已经和manage.py runserver
个人一起运行了我的初学者Django项目.我看到了改用gunicorn
的建议.有什么不同呢?
我已经和manage.py runserver
个人一起运行了我的初学者Django项目.我看到了改用gunicorn
的建议.有什么不同呢?
nginx和gunicorn可能是生产部署中最流行的配置.在详细说明为什么建议使用gunicorn而不是runserver之前,让我们快速澄清一下nginx和gunicorn之间的区别,因为两者都表示它们是web服务器.
NGINX应该是您面向公众的入口点,它是监听端口80(Http)和443(Https)的服务器.它的主要用途是handling HTTP requests,即应用重定向、HTTP身份验证(如果需要)、管理TSL/SSL证书以及决定请求的最终目的地等.例如,可能有一个node.js应用程序生活在localhost:3000
号,它等待/foo/api
号的请求,而Gunicorn则在localhost:8000
号等待为你令人惊叹的应用程序提供服务.将传入请求代理到所谓的upstream
服务(在本例中为node.js和genicorn)的这种功能称为反向代理.
GUNICORN是一台translates HTTP requests into Python的服务器.WSGI是实现这一点的接口/实现之一(例如,http头的文本部分被转换为键值dict).
Django's built-in development web server(您在运行manage.py runserver
时得到的)也提供了该功能,但它针对的是开发环境(例如,当代码更改时重新启动),而Gunicorn针对的是生产环境.
Gunicorn有许多Django内置服务器所缺乏的功能:
除了Gunicorn之外,还有其他web服务器,但是Gunicorn(灵感来自ruby的独角兽)非常受欢迎并且易于设置,因此不仅是一个很好的起点,而且是大型项目使用的专业解决方案.