在我见过的所有标准django制作设置模板中,gunicorn与主管一起运行,而nginx / postgres未在主管下配置。
有什么原因吗?这是生产系统所必需的吗?如果没有,为什么不呢?
答案 0 :(得分:2)
在这个架构中,Gunicorn作为运行我们的Django代码的应用服务器。 Supervisor只是一个进程管理实用程序,如果它崩溃,它会重启Gunicorn服务器。 Gunicorn服务器可能会由于我们的错误代码而崩溃,但nginx和postgres保持不变。所以在基本配置中我们只通过主管来照顾枪支过程。虽然我们也可以为nginx和postgres做同样的事情。
答案 1 :(得分:2)
你需要supericvisor for gunicorn,因为它是一个简单的服务器,没有任何工具可以重新启动它,在系统启动时运行它,在系统关闭时停止它或在它崩溃时重新加载。
Postgresql和nginx可以在这方面自行处理,因此不需要在主管下运行它们。
实际上,你可以使用init.d,upstart或system.d来启动,停止和重启gunicorn,supervisor只是处理像gunicorn这样的小型服务器的简单方法。
还要考虑在一个系统上运行多个django应用程序是很常见的,这需要多个独立的gunicorn实例。主管将比init,upstart或system.d更好地处理它们。
还有uWSGI服务器不需要管理程序,因为它具有内置功能来处理多个实例,启动,停止以及代码更改时自动重新加载。看看uWSGI emperor系统。