如何在生产 Web 服务器中设置虚拟环境(用户、位置等)

如何在生产 Web 服务器中设置虚拟环境(用户、位置等)

我正在将生产服务器切换为使用virtualenv,并且我想了解在生产环境中设置虚拟环境的最佳实践。以下问题是我今天在尝试弄清楚这一点时遇到的问题:

  • 我应该使用哪个用户来创建虚拟环境?
  • 用户应该把虚拟环境放在哪里?
  • 我如何使用该用户的权限激活虚拟环境?

Virtualenv 几乎将由 Apache 专门使用,因此我认为正确的用户是www-data,并且 virtualenv 的位置可能是/var/www/.virtualenvs

这似乎没问题,但下一个问题是它www-data实际上没有登录 shell 并且无法写入它自己的主目录(/var/www/),所以当我尝试激活时virtualenv,它不起作用,当我尝试使用 pip 安装东西时,我收到如下错误:

目录“/var/www/.cache/pip/http”或其父目录不属于当前用户,并且缓存已被禁用。请检查该目录的权限和所有者。如果使用 sudo 执行 pip,您可能需要 sudo 的 -H 标志。

(即使我使用-H也会出现这个错误。)

因此,我可以为创建一个登录 shell www-data,但这感觉像是一种安全反模式。

我可以授予www-data其主目录的访问权限(/var/www/),但这显然是一种安全反模式。

这方面有规范吗?我花了太多的时间来解决这个问题,感觉应该简单得多。

答案1

在虚拟环境中运行与在任何其他应用程序中运行没有什么不同。您使用具有执行应用程序所需操作所需的最少权限的用户。

以您自己的身份运行它是不可取的。

相关内容