使用扩建截面扩展切换到 2 个 Plone 实例时,"instance"零件不会被增建删除



我们正在为我们的productoin-Plone部署从一个Zope实例切换到两个。我定义了以下构建结构:

buildout.cfg

[buildout]
extends = app.cfg
... some environment specific stuff

app.cfg

[buildout]
extends = base.cfg
parts =
    zope2
    productdistros
    instance1
    instance2
    zopepy
    supervisor
[instance1]
<= instance
http-address = 18081
[instance2]
<= instance
http-address = 18082

基本.cg

[buildout]
parts =
    zope2
    productdistros
    instance
    zopepy
... bulk of buildout configuration suitable for both server and development

在测试这一点时,我希望这个构建配置会导致现有的实例部分被删除,并用instance1和instance2替换。然而,实例部分并没有被删除——它仍然可以在bin和parts目录中找到。

[zopetest@dev home]$ bin/buildout
Updating zope2.
Updating fake eggs
Updating productdistros.
Updating instance1.
Updating instance2.
Updating instance.
Updating zopepy.
Updating supervisor.

我在一个不同的zope实例上有一个非常相似的设置,从一开始就是这样配置的,它没有"实例"部分。

我们正在运行zc.buildout 1.4.4,Python 2.4.6构建Plone 3.3.6。

我尝试了以下内容,但没有更改:*升级到buildout 1.5.2*从base.cfg 中删除零件分配

这是plone.recipe.zope2instance的一个"特性"。传统上,该配方避免删除它为运行plone创建的实例和脚本(无论出于何种原因:要么是糟糕的设计,要么是深思熟虑的决定,我不确定)。

不管它有什么价值,从4.2.0版本开始,它支持生成非plone脚本(类似于zc.recipe.egg),并且这些脚本得到了正确的管理。参见:

  • https://github.com/plone/plone.recipe.zope2instance/blob/master/src/plone/recipe/zope2instance/init.py#L119

所有血腥的细节。(我认为"特性"是安装方法不会返回元组,除非您使用脚本,在这种情况下会返回包含脚本的元组。)

这实际上是由于zc.buildout自动零件选择功能

当通过变量替换或初始化配方引用带有配方的部分时,该部分被视为一个零件,并在引用零件之前添加到零件列表中

我有以下部分

[zopepy]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/zc.recipe.egg
recipe = zc.recipe.egg
eggs = ${instance:eggs}

由于它引用了"实例"部分,"实例"包含在零件列表中。

为了修复,我将其更改为复制粘贴实例的鸡蛋值

eggs =
    Plone
    ${buildout:eggs}

然后运行bin/buildout

最新更新