我将生产服务器切换到使用virtualenv ,我想了解在生产环境中设置virtualenv的最佳实践。 下面的问题是我今天试图解决的问题:
Virtualenv将被几乎完全由Apache使用,所以我认为正确的用户是www-data ,并且virtualenv的位置可以是/var/www/.virtualenvs 。
这似乎是好的,但接下来的问题是, www-data实际上并没有一个loginshell,不能写入自己的主目录(/ var / www /),所以当我尝试激活virtualenv ,它doesn不起作用,当我尝试使用pip安装东西时,出现如下错误:
目录'/var/www/.cache/pip/http'或其父目录不属于当前用户,并且caching已被禁用。 请检查该目录的权限和所有者。 如果用sudo执行pip,你可能需要sudo的-H标志。
(即使我使用-H我得到这个错误。)
所以,我可以创build一个www-dataloginshell,但感觉就像一个安全反模式。
我可以将www-data访问到它的主目录( /var/www/ ),但这显然是一种安全反模式。
这有没有规范? 我已经烧了太多周期试图弄清楚这一点,感觉应该是更简单。
在virtualenv中运行与其他应用程序没有区别。 您使用具有执行应用程序所需操作所需的最less权限的用户。
将它作为自己来运行是不明智的。