维护的 virtualenv 服务的正确位置是什么?

lof*_*ops 7 server python 12.04 virtualenv

我将在 Ubuntu 服务器 (12.04) 上安装和维护基于 Python 2.7 的服务器应用程序。维护模型将是创建一个 virtualenv 并在那里安装应用程序标准库(来自 PyPI)和自定义库(定制),并根据需要更新它们。一个单独的文件夹包含“应用程序”,它由配置文件和特定于应用程序的 Python 文件组成。

据我所知,我需要的唯一由 Ub​​untu 提供的软件包是pythonpython-virtualenv. 我可能会自定义安装pew来管理 venv - 在这种情况下,我会sudo easy_install pew接受并接受无论它走到哪里都是正确的(pew 不在 12.04 存储库中)。

我模糊地意识到应用程序应该位于/opt/srv类似的地方,并且服务器应用程序可能位于与用户应用程序不同的位置。给这一切:

  • virtualenv 应该在哪里?
  • 服务器应用程序文件夹应位于何处?

lof*_*ops 3

对于 Django 应用程序,Adam Bard 建议将您的 virtualenv 放置在/opt/apps/<appname>-env,并将您的应用程序放置在/opt/apps/<appname>-env/site。(非常感谢 don.joey 提供的精彩链接。)

稍微不相关的是,我还发现 Hynek Schlawack 的Python 部署反模式Python 应用程序部署与本机包是有用的读物​​。

基于此,我自己对文件系统层次结构标准的审查以及对我的台式机上的文件夹的检查/opt,我选择了:

  • /opt/virtualenv/<env_name>对于虚拟环境
  • /opt/<vendor_name>/<app_name>对于服务器应用程序文件夹

这允许我为不同的应用程序、版本等创建多个独立的 virtualenvs 和应用程序文件夹,只要我认为合适。