CMF门户升级助手
项目描述
collective.upgrade
本软件包提供用于升级CMF门户(如Plone站点)的辅助工具,支持增量提交、一次升级多个门户,以及用于在浏览器外升级脚本并带有错误事后调试的命令行脚本。这些特性大大减少了开发升级步骤所需的时间。
还包括在升级过程中清理混乱门户的升级步骤,包括清理损坏的对象、组件和注册信息。
注意
使用此软件包将立即将更改提交到您的ZODB。没有“dry run”选项,因为这与其目的相违背。因此,它绝对不能用于未备份的ZODB,包括BLOBs,即在使用之前立即备份。也不应直接在生产环境中作为升级门户的第一次尝试。
快速入门
在buildout中使用
[instance1] recipe = plone.recipe.zope2instance eggs = ...
添加另一个部分,如下所示
parts = ... upgrade ... [instance1] ... eggs = ... collective.upgrade http-address = localhost:8080 ... [upgrade] recipe = zc.recipe.egg eggs = ${instance1:eggs} scripts = upgrade-portals arguments = args=[ '--zope-conf', '${instance1:location}/etc/zope.conf', '--log-file', '${buildout:directory}/var/log/upgrade.log'] ...
然后,运行buildout后,您可以升级所有Plone门户及其插件,并通过以下命令监控进度 var/log/upgrade.log
$ bin/upgrade-portals
或者,您可以在浏览器中打开以下URL以升级所有门户,进度日志将流式传输到您的浏览器
https://#:8080/@@collective.upgrade.form?submitted=1
使用 --help 选项获取更多信息
$ bin/upgrade-portals --help usage: upgrade-portals [-h] [-l FILE] [-z FILE] [-d] [-U] [-G PROFILE_ID] [-A] [PATH [PATH ...]] Upgrade CMF portals in a Zope 2 application using GenericSetup upgrade steps positional arguments: PATH Run upgrades for the portals at the given paths only (default: upgrade all CMF portals in the Zope app) optional arguments: -h, --help show this help message and exit -l FILE, --log-file FILE Log upgrade messages, filtered for duplicates, to FILE -z FILE, --zope-conf FILE The "zope.conf" FILE to use when starting the Zope2 app. Can be omitted when used as a zopectl "run" script. -d, --disable-link-integrity When upgrading a portal using plone.app.linkintegrity, disable it during the upgrade. -u, --username Specify username to use during the upgrade (if not provided, a special user will run the upgrade). -D, --pdb When upgrading a portal enable post-mortem debugging. upgrades: -U, --skip-portal-upgrade Skip running the upgrade steps for the core Plone baseline profile. -G PROFILE_ID, --upgrade-profile PROFILE_ID Run all upgrade steps for the given profile (default: upgrade all installed extension profiles) -A, --skip-all-profiles-upgrade Skip running all upgrade steps for all installed extension profiles.
增量提交
由于升级通常需要很长时间,每次出现错误就重启升级会使故障排除和调试非常耗时。然而,如果升级中途失败,提交升级结果也是不安全的,因为没有保证可以清理升级步骤的部分执行。
幸运的是,对 Products.GenericSetup 配置文件提供升级步骤的支持,为增量提交升级进度提供了良好的方法,这样风险较低,并且可以在升级故障排除和调试过程中节省大量时间。
collective.upgrade 的核心是升级类,它支持使用通用配置文件对门户进行增量升级。升级从门户的基本配置文件开始,然后升级所有其他已安装的配置文件。在处理每个配置文件时,它将提交到达的最后成功的配置文件版本,但会中止任何失败的升级步骤。
换句话说,每次 collective.upgrade 升级器运行时,它将从未成功的配置文件版本开始,无需重复已成功的内容。
要使用此升级器,您可以直接访问门户上的 @@collective.upgrade.form?submitted=1 视图进行升级。或者,您可以使用 快速入门 部分中描述的 upgrade-portals 控制台脚本。
多个门户
另一个表单支持一次升级多个门户。默认情况下,表单将从表上下文开始,遍历Zope OFS对象树,将升级应用于找到的每个CMF门户。也可以指定要升级的门户路径。
它使用上面描述的相同增量提交支持为每个门户,并在每个门户之后提交,也可以使用 @@collective.upgrade.form?submitted=1 视图在要升级的门户容器中运行,或使用 快速入门 部分中描述的控制台脚本。
命令行脚本
本包还提供了一个可运行的脚本,可以安装并使用它来运行多个门户升级过程,而无需使用浏览器。该脚本将升级消息记录到单独的日志文件中,过滤重复项,使升级过程更容易监控和审查任何意外问题。如果升级引发异常,升级器将中止事务,控制台脚本将调用 pdb.post_mortem() 允许检查错误。这些功能使得控制台脚本成为迭代升级过程的一种更快的方式。
使用脚本的 --help 选项或查看快速入门部分以获取详细信息。
用户和组的一致性
在两个 PluggableAuthService 插件之间协调用户和组。例如,可用于将用户和组从本地存储插件迁移到稍后添加的 LDAP 插件。
导出步骤在目标插件中搜索与源插件中相应的用户和组。在无法找到精确匹配的 ID 时,请使用真实名称进行搜索。
导出步骤将创建一个 CSV 文件,列出源插件中的所有用户和组,包括那些在 ID 上完全匹配的、在真实名称上找到匹配的以及那些找不到匹配的。
此 CSV 可以编辑以添加手动匹配,并可作为通知用户其登录名或密码可能在源插件和目标插件之间更改的用户列表。
导入步骤读取相同的 CSV 文件以更新
OFS 所有者
CMF 创建者
本地角色
组成员资格
要使用这些步骤,请确保目标 PAS 插件是第一个激活的 IUserEnumerationPlugin、IGroupEnumerationPlugin 和 IPropertiesPlugin 插件,然后运行 reconcile_users 和 reconcile_groups 导出步骤。导出中生成的 CSV 文件可以编辑和调整,直到它们代表应应用的变化,此时可以将它们放入 GS 导入配置文件中并导入以应用这些变化。
升级步骤
此包还注册了 Plone 3.* 到 4.0 升级的附加升级步骤,执行以下操作
清理损坏的 OFS 对象
清理损坏的 TextIndexes 对象
清理损坏的组件注册
清理损坏的设置注册
清理损坏的 cmfeditions 版本
将 cmfeditions 文件夹版本迁移到 btrees
清理重复的 UIDs
默认情况下注册为 3.* 到 4.0 升级,这些步骤可以注册为可能需要的任何升级。如果您发现特定的 Plone 升级可以通过注册现有的步骤或新步骤来帮助,请告诉我,我可能会将其添加到此包的注册中。
在运行升级步骤以清理损坏的对象时包括 experimental.broken 可能比不这样做更好。如果您需要 collective.upgrade [steps] 扩展,它将自动包含在内。
可以在 ZCML 中注册未注册的升级步骤函数 collective.upgrade.steps.setDefaultEditor,以设置所有用户的默认编辑器。它需要 collective.setdefaulteditor,如果您需要 collective.upgrade [steps] 扩展,它将自动包含在内。
在 collective.upgrade.steps 模块中也有辅助函数。这些辅助函数的所有用途都是在编写自己的升级步骤时使用。有关详细信息,请参阅 collective.upgrade.steps 源代码。
将站点重置到基线 GenericSetup 配置文件加默认扩展
删除自定义皮肤对象
清理缺失的皮肤/主题层
卸载插件
打包 ZODB,修剪旧版本历史记录
在Plone 5切换到使用plone.app.registry之前,BBB资源注册表的导入/导出步骤
变更日志
1.7 (2022-03-01)
添加选项以在异常时启用PDB后置分析。[thokas]
1.6 (2020-03-10)
在Plone附加组件控制面板中隐藏升级配置文件。[rpatterson]
1.5 (2019-05-06)
修复:当没有源匹配第一步时,修复增量提交。[rpatterson]
1.4 (2019-03-31)
修复:修复升级所有配置文件,之前正在运行所有配置文件注册的升级步骤。[rpatterson]
修复:修复Zope实例运行脚本参数处理。[rpatterson]
修复:portal_languages不再是一个持久工具。见:[链接](https://docs.plone.org/manage/upgrading/version_specific_migration/p4x_to_p5x_upgrade.html#portal-languages-is-now-a-utility) [bsuttor]
1.3 (2018-04-18)
将Zope全局请求添加到PortalUpgrader。[bsuttor]
1.2 (2017-03-23)
添加一个升级步骤以将网站重置为基线GenericSetup配置文件加上默认扩展。[rpatterson]
在Plone 5切换到使用plone.app.registry之前,BBB资源注册表的导入/导出步骤。[rpatterson]
添加定义要使用的Zope用户ID的参数。[gbastien]
完成门户设置:portal_skins、portal_languages、BrowserLayer。[gbastien]
1.1 - 2014-05-08
恢复Python 2.6兼容性。[rpatterson]
1.0 - 2014-04-21
添加一个升级步骤以烹饪资源注册表。在升级后遇到资源注册表视让错误时很有用。[@rpatterson]
1.0rc1 - 2014-04-08
添加选项以控制升级哪些配置文件。[@rpatterson]
从optparse迁移到argparse,并将门户路径从选项移到位置参数。[@rpatterson]
添加一个升级步骤函数,用于打包ZODB。[@rpatterson]
通过将一些移动到“steps”extra_require中减少依赖。[@rpatterson]
修复当事务注释变得过大时的事务错误。[@rpatterson]
0.4 - 2014-02-28
修复在将Plone网站安装到新的Zope实例时导入步骤的bug。修复#3。感谢@href的报告。[@rpatterson]
0.3 - 2014-01-30
添加在两个PluggableAuthService插件之间(如现有Plone仅用户和新建的LDAP插件之间)协调用户和组的导出和导入步骤。[rpatterson]
支持Plone 4.3,容忍已删除的KSS工具。[rpatterson]
0.2 - 2012-11-14
修复升级“Products”命名空间配置文件而没有先前版本号的bug。[rpatterson]
修复升级步骤处理,之前正在跳过步骤。[rpatterson]
修复重复UUID清理。[rpatterson]
将损坏的对象步骤移入单独的ZCML文件,应该是可选的并且应谨慎使用。[rpatterson]
Plone 4.2兼容性。[rpatterson]
0.1 - 2012-11-05
初始发布。[rpatterson]
项目详情
collective.upgrade-1.7.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 453a73906649363fb91b7358f5d24a1740b69096102693fa2b906716fd5ee686 |
|
MD5 | 092aa0dd51bf70628af68c1715a447fc |
|
BLAKE2b-256 | ff34eba839305b232ae30d6c7d834ae692b52b714ee0fc08e4e0f2a87a40fc82 |