【问题标题】:Location of virtualenv in productionvirtualenv 在生产中的位置
【发布时间】:2016-04-14 12:54:58
【问题描述】:

我正在部署一个 Django 站点,并且我正在使用 virtualenv 来保持我的 Python 安装整洁。我试图找出虚拟环境应该位于生产服务器环境中的位置。看起来这应该非常简单,但它让我非常头疼。任何帮助将不胜感激!

我的计划是使用 virtualenvwrapper 来制作我的虚拟环境。默认情况下,这会将 virtualenv 存储在 ~/.virtualenvs 中,在本例中为 /home/james/virtualenvs/。这在开发中很好,当我在本地机器上并在用户james 下运行所有​​内容时。但是,我不相信用户 james 会在生产服务器的 virtualenv 中运行代码;相反,我相信它会是www-datawww-data 是否应该到达 james 以访问 virtualenv,或者有没有办法将 virtualenv 安装到 www-data 中?似乎应该有一种在生产中配置 virtualenvs 的标准化方法,但我似乎找不到任何东西。

提前感谢您的任何帮助!

【问题讨论】:

  • 我会将 virtualenv 安装到项目根目录中的目录“venv”中,而不是安装到用户的主目录中。然后在 prod 和 dev 中的设置可以相同。
  • 这完全取决于个人的喜好。我个人的偏好是在 /usr/local/virtualenv/ 中创建 virtualenv - 这样,无论项目实际驻留在服务器上的哪个位置,它都是一个标准位置。

标签: python django virtualenv virtualenvwrapper


【解决方案1】:

基本上你可以把虚拟环境放在任何适合你的地方,并且可以被运行python进程的用户读取。出于安全原因,您应该考虑将 ve 创建为其他用户,这样该进程就没有对其的写入权限。

【讨论】:

    【解决方案2】:

    我总是这样安排:

    虚拟环境:

    /user/var/www/project/virtualenvs/myapp_env1
    /user/var/www/project/virtualenvs/myapp_env2
    /user/var/www/project/virtualenvs/myapp_env3
    ....
    

    应用:

    /user/var/www/project/applications/myapp1
    /user/var/www/project/applications/myapp2
    /user/var/www/project/applications/myapp3
    ...
    

    其实我知道这些东西不应该在/var/www/下但是我从来没有关注过..

    每个应用都有自己的用户,由 appname 命名。

    【讨论】:

      【解决方案3】:

      我以与您相同的方式设置我的 virtualenv。 您应该做的是将james 添加到www-data 组中,应该没问题。

      sudo adduser james www-data
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-06
        • 2014-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多