部署具有root权限的Flask应用程序

时间:2016-12-19 02:32:41

标签: python apache flask mod-wsgi

我在Raspberry Pi上托管了一个烧瓶网络应用程序,它可以控制我的LED灯条。当我使用python作为root用户运行服务器时,一切都很好,但我很难用Apache mod_wsgi部署它。我想使用htttps,因此部署它似乎是必要的,但Apache似乎不允许运行具有root权限的服务器。 Root是通过在flask服务器中导入的库来控制灯光所必需的。

有没有办法部署具有root权限的烧瓶服务器?如果没有,可以在不部署的情况下使用https(来自letsencrypt.org)吗?有没有其他方法来解决这个问题?

1 个答案:

答案 0 :(得分:2)

出于安全原因,我不会以root身份运行Web服务器。

相反,我建议:

  1. 将网络用户添加到/ etc / sudoers - 无密码。理想情况下,只允许您希望以root身份运行的命令。
  2. 使用sudo [command]
  3. 运行命令

    您提到部署,如果您将其打包到rpm中,我会将sudo定义放在 /etc/sudoers.d/youpackage

    另一个选择是拆分应用程序并使用某种消息传递系统 - 通过在数据库表中使用行或使用消息服务器,如 rabbit mq (还有其他服务器,但我找到它很容易设置)。以root身份运行的单独进程可以实际打开/关闭灯光。您的前端只会发送一条消息,例如“关灯”,而另一个可能以root身份运行的进程会在需要时收到消息。这种方法的优点是Web进程永远不会有任何root权限,即使它有漏洞,损坏也是有限的。