Nginx + GUnicorn + Flask + www-data用户 – 文件locking

我有一些关于我在Ubuntu(14.10)的Gunicorn(19.0-1)和Nginx中部署Flask应用程序的基本问题。

由于这个应用程序与Web2Py一起,我遵循了一个指南来lockingWeb2Py生成的网站,并为我的Flask应用程序应用相同的策略。

在这个例子中,Gunicorn工作人员作为www-data用户运行,并且通过将www-data组作为拥有者和www-data组locking在/ var / www中的文件和源文件。

但是,有几点让我困惑:

  1. 尽pipeGunicorn工作人员以www数据运行,但Gunicorn服务器守护程序仍以root身份运行。 这会引起担忧吗?
  2. searchNginx + Gunicorn + Flask会导致推荐通过supervisord运行Gunicorn的站点,而不是init.d服务。 我应该考虑转换吗?
  3. 由于www数据帐户被locking(无shell /无密码),开发人员在哪里使用虚拟机运行其代码,以使环境与生产尽可能接近?

我使用Nginx和Gunicorn自带的Flask,所以我会尽力回答:

1)。 这可能是,但从我自己的研究和经验来看,通常最好不要在守护进程模式下运行Gunicorn,而应该使用某种专门的进程pipe理器(比如Supervisor)。

2)。 主pipe和init.d并不严格达到同样的目的。 Init.d是一个“初始化守护进程”,其目的是作为启动所有其他服务(比如说Gunicorn)的服务。 Supervisor是一个进程控制pipe理器,可以用来启动其他服务,以及在出现问题时监视和重启它们。 然而,主pipe仍然需要init.d(或其后继者Upstart)在启动时启动它。 我更喜欢使用Supervisor,因为它易于使用,并让我快速启动,停止和/或重新启动Gunicorn工作。

3)。 你通常有一些专门的开发环境,这是一个生产副本。 我个人使用3台云服务器,1台用于生产,1台用于升级(也就是确保应用正确部署的testing场),1台用于开发。 分期和发展是生产的副本。