我开始尝试为 Django 使用 buildout。我想使用 buildout 作为部署项目和应用程序的主要安装方法。在这种情况下,每个应用程序都包含一个构建以及项目是最好的吗?您应该在什么级别应用构建?
谢谢,
托德
我通常设置它的方式是这样的:
buildout_dir/
+ bootstrap.py
+ buildout.cfg
+ ...
+ <project_name>/
+ settings.py
+ templates/
+ media/
+ ...
由于构建(在我的情况下)通常与单个项目相关联,因此我将直接将 django 项目存储在构建中。顺便说一句:我在构建配置中使用djangorecipe。
我写的应用程序是简单的鸡蛋,有这样的布局:
django-<app_name>/
+ setup.py
+ <app_name>/
+ __init__.py
+ models.py
+ ...
但我也看到了自包含构建的应用程序。Jacob Kaplan-Moss 甚至写了一篇关于它的文章。
对我来说,我给每个应用程序和每个项目一个扩展。该项目的扩建是为了设置站点。包含:
生成一个 apache/nginx 配置文件(collective.recipe.template)
也许是一个 cronjob
如果你想运行一个单独的 gunicorn 左右,也许是主管。
每个应用程序也有一个扩展。这里的目标是使设置隔离环境变得容易,特别是用于测试。您永远不需要部署应用程序,您只需要对其进行足够的设置以运行开发服务器并运行测试。
对我来说,构建是隔离(如 virtualenv)加上安装(如 pip)加上项目自动化。您将主要将前两个用于应用程序。并且所有三个都用于该站点。
我总是为每个项目创建一个构建,以获取所有必需的依赖项。这可以是简单的鸡蛋,也可以是使用 mr.developer 的 git(hub) 的内部依赖项
我认为不需要针对每个应用进行构建。为每个 django 设置配置(例如开发、生产等)有一个匹配的 buildout.cfg 可能会很好
构建只是在项目文件夹中应用,将自动包含依赖项(并且在使用 mr.developer 时可自定义)。
另外,在我看来,包括 bootstrap.py 有点过时;我总是运行 virtualenv + pip install zc.buildout。这也可以在项目文件夹本身或外部完成(例如 ~/virtualenvs/myproject-123)
我总是在项目(网站)根目录下至少有两个/三个构建配置:
/
|- buildout.cfg # contains bas configuration used by other cfg files
|- development.cfg # adds ton of eggs used only in development and generates manage script using djangorecipe
|- production.cfg # most of the time it contains versions and generates django script using djangorecipe