用supervisord运行nginx / postgres - 必需吗?

时间:2015-12-11 04:50:35

标签: django postgresql nginx gunicorn supervisord

在我见过的所有标准django制作设置模板中,gunicorn与主管一起运行,而nginx / postgres未在主管下配置。

有什么原因吗?这是生产系统所必需的吗?如果没有,为什么不呢?

2 个答案:

答案 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系统。