从Plone'我要我'到'我爱您'——Plone之5.1.5升级到5.2.0

从Plone'我要我'到'我爱您'——Plone之5.1.5升级到5.2.0

本文纪实从 “Plone'我要我'到'我爱您'——Plone之5.1.5升级到5.2.0”之升级过程。
一、准备工作
1、准备Plone5.1.5stage Server,配置必须和Product Server完全一致(但只启用单个开发实例)
2、准备Plone5.2.0测试环境注意:一定选用Python2.7.x系列来构建5.2.0的virtualenv
二、准备插件(非Plone系统核心包)迁移
1、检测插件兼容性
逐个将自己开发或其他三方开发的插件加载到Plone5.2.0测试环境,运行buildout ,bin/instance fg
2、不兼容插件处理
处理不兼容插件有两种方式:

  • 给插件新建一个名为python3的branch,更改代码,以兼容python2.7.x及python3.7.x,并且能正常在Plone5.2.0安装使用
  • 标记出该不兼容插件,在原Plone5.1.5 stage Server环境中卸载该插件

三、准备stage server新的buildout环境
由于Plone5.1.5和 Plone5.2.0有不同的setuptools及zc.buildout版本要求,所以要更新buildout环境:
1、激活stage server的virtualenv环境
[align=left][indent]

source bin/active

[backcolor=rgb(247, 247, 247)]检测该virtenv中python ,确保是python2.7.x系列。[/backcolor]
[/indent][/align]
2、卸载原5.1.5的requirements

pip uninstall  -r requirements_515.txt

3、安装5.2.0的requirements,建立新的buildout环境

pip install -r requirements_520.txt

[backcolor=rgb(247, 247, 247)]四、卸载不兼容插件(可选,如在二.2中,有要卸载的插件,则执行该步骤)[/backcolor]

完全卸载[backcolor=rgb(247, 247, 247)]在二.2中查找出来的不兼容插件,注意:程序和相关数据都必须完全清除![/backcolor]

五、更新Plone版本主配置文件
此Plone主版本配置文件和插件配置文件是packages.cfg,注意在四中卸载的插件要拿掉(清除掉)。
1、Plone主版本配置文件部分更新到5.2.0

[buildout]
extensions = mr.developer
show-picked-versions = true
update-versions-file = versionslastprod3.cfg
#overwrite-picked-versions-file = true
extends =
# Known good sets of eggs we may be using
#               http://dist.plone.org/release/5-latest/versions.cfg
#    http://dist.plone.org/release/5.1.5/versions.cfg
#    5.1.1-versions.cfg
    http://dist.plone.org/release/5.2.0/versions.cfg
    pins52.cfg

注意上图中最后两行,一个取用5.2.0配置文件,另一个pins52.cfg 为版本调整文件。
2、更新插件配置部分

eggs]
main =
    Plone
#    Products.PloneFormGen
#    Products.ContentWellPortlets
#    my315ok.socialorgnization
    quintagroup.seoptimizer
    my315ok.products
    collective.diazotheme.bootstrap
#    dexterity.membrane
#    xtshzz.policy
    xtcs.policy
    xtcs.theme
    qyxycjh.policy
    qyxycjh.theme
    qidejt.theme
    qidejt.policy
    xsgs.policy
    xsgs.theme
    hjzgb.theme

注意上图中#号注释的插件为不兼容的,已拿掉。

六、更新开发实例配置文件

extends =
    packages.cfg

# Development Zope instance. Installs the ``bin/instance`` script
[instance]
recipe = plone.recipe.zope2instance
http-address = 8080
user = admin:admin
debug-mode = on
verbose-security = on
wsgi = off
eggs =
    Zserver
#    plone.app.blob
#    Products.ATContentTypes
#    Products.contentmigration
    ${eggs:main}
    ${eggs:devtools}
    plone.app.robotframework

注意:在instance段添加了“[backcolor=rgb(247, 247, 247)]wsgi = off[/backcolor]”;"eggs = "部分添加了ZServer

七、运行buildout建立开发实例

bin/buildout -Nv -c buildout_dev.cfg

解决buildout过程中发现的各种问题。

八、调试模式启动开发实例
1、启动调试

bin/instance fg

2、解决调试模式启动中发现的各种问题

九、备份stage server

cp -a Data.fs Data.fs.bk

十、启动开发实例,开始升级
1、启动实例
2、在浏览器地址栏中输入http://localhost:8080/,进入ZMI:
[attach]40[/attach]

在“站点-Plone”,点击“升级……”:[attach]41[/attach]
[attach]43[/attach]
勾选“模拟执行模式”,点击“升级”:
[attach]44[/attach]
如果模拟升级过程没有问题,则执行下一步的实际升级。否则,退回,查错,处理。
[attach]45[/attach]
实际的升级过程做了如下事情:

Starting the migration from version: 5112
Role / permission map imported.
Removed record plone.resources/resource-plone-app-event-js.deps.
Removed record plone.resources/resource-plone-app-event-js.url.
Removed record plone.resources/resource-plone-app-event-js.js.
Removed record plone.resources/resource-plone-app-event-js.init.
Removed record plone.resources/resource-plone-app-event-js.export.
Removed record plone.resources/resource-plone-app-event-js.conf.
Removed record plone.resources/resource-plone-app-event-js.css.
Removed record plone.resources/resource-plone-app-event-css.deps.
Removed record plone.resources/resource-plone-app-event-css.url.
Removed record plone.resources/resource-plone-app-event-css.js.
Removed record plone.resources/resource-plone-app-event-css.init.
Removed record plone.resources/resource-plone-app-event-css.export.
Removed record plone.resources/resource-plone-app-event-css.conf.
Removed record plone.resources/resource-plone-app-event-css.css.
Ran upgrade step: Run to513 upgrade profile.
Ran upgrade step: Force remove old p.a.event resources
Role / permission map imported.
Removed record plone.resources/jquery-highlightsearchterms.deps.
Removed record plone.resources/jquery-highlightsearchterms.url.
Removed record plone.resources/jquery-highlightsearchterms.js.
Removed record plone.resources/jquery-highlightsearchterms.init.
Removed record plone.resources/jquery-highlightsearchterms.export.
Removed record plone.resources/jquery-highlightsearchterms.conf.
Removed record plone.resources/jquery-highlightsearchterms.css.
Ran upgrade step: Run to514 upgrade profile.
Ran upgrade step: Miscellaneous
Role / permission map imported.
Ran upgrade step: Run to515 upgrade profile.
Ran upgrade step: Miscellaneous
Role / permission map imported.
Adapters registered.
The object None was not found, while trying to register an utility. The provided object definition was portal_metadata. The site used was: <PloneSite at /Plone>
The object None was not found, while trying to register an utility. The provided object definition was portal_syndication. The site used was: <PloneSite at /Plone>
The object None was not found, while trying to register an utility. The provided object definition was portal_undo. The site used was: <PloneSite at /Plone>
Utilities registered.
Skins tool imported.
Removed record plone.resources/jquery-highlightsearchterms.deps.
Removed record plone.resources/jquery-highlightsearchterms.url.
Removed record plone.resources/jquery-highlightsearchterms.js.
Removed record plone.resources/jquery-highlightsearchterms.init.
Removed record plone.resources/jquery-highlightsearchterms.export.
Removed record plone.resources/jquery-highlightsearchterms.conf.
Removed record plone.resources/jquery-highlightsearchterms.css.
Rebuilding member data information. This step can take a while if your site has many users.
Ran upgrade step: Run to52alpha1 upgrade profile.
Ran upgrade step: Miscellaneous
Role / permission map imported.
Not creating required tool portal_css, because class Products.ResourceRegistries.tools.CSSRegistry.CSSRegistryTool is not found.
Not creating required tool portal_javascripts, because class Products.ResourceRegistries.tools.JSRegistry.JSRegistryTool is not found.
Toolset imported.
Actions tool imported.
Control panel imported.
RepositoryTool settings imported.
Removed record plone.resources/expect.deps.
Removed record plone.resources/expect.url.
Removed record plone.resources/expect.js.
Removed record plone.resources/expect.init.
Removed record plone.resources/expect.export.
Removed record plone.resources/expect.conf.
Removed record plone.resources/expect.css.
Removed record plone.resources/js-shortcuts.deps.
Removed record plone.resources/js-shortcuts.url.
Removed record plone.resources/js-shortcuts.js.
Removed record plone.resources/js-shortcuts.init.
Removed record plone.resources/js-shortcuts.export.
Removed record plone.resources/js-shortcuts.conf.
Removed record plone.resources/js-shortcuts.css.
Removed record plone.resources/marked.deps.
Removed record plone.resources/marked.url.
Removed record plone.resources/marked.js.
Removed record plone.resources/marked.init.
Removed record plone.resources/marked.export.
Removed record plone.resources/marked.conf.
Removed record plone.resources/marked.css.
Removed record plone.resources/rjs.deps.
Removed record plone.resources/rjs.url.
Removed record plone.resources/rjs.js.
Removed record plone.resources/rjs.init.
Removed record plone.resources/rjs.export.
Removed record plone.resources/rjs.conf.
Removed record plone.resources/rjs.css.
Removed record plone.resources/react.deps.
Removed record plone.resources/react.url.
Removed record plone.resources/react.js.
Removed record plone.resources/react.init.
Removed record plone.resources/react.export.
Removed record plone.resources/react.conf.
Removed record plone.resources/react.css.
Removed record plone.resources/JSXTransformer.deps.
Removed record plone.resources/JSXTransformer.url.
Removed record plone.resources/JSXTransformer.js.
Removed record plone.resources/JSXTransformer.init.
Removed record plone.resources/JSXTransformer.export.
Removed record plone.resources/JSXTransformer.conf.
Removed record plone.resources/JSXTransformer.css.
Removed record plone.resources/sinon.deps.
Removed record plone.resources/sinon.url.
Removed record plone.resources/sinon.js.
Removed record plone.resources/sinon.init.
Removed record plone.resources/sinon.export.
Removed record plone.resources/sinon.conf.
Removed record plone.resources/sinon.css.
Added BooleanIndex for field exclude_from_nav.
Indexing new indexes exclude_from_nav.
Cleaned up the toolset registry.
Ran upgrade step: Run to52beta1 upgrade profile.
Role / permission map imported.
Ran upgrade step: Run to52rc1 upgrade profile.
Ran upgrade step: Miscellaneous
Starting rebuild of redirections to add date and manual information.
Done rebuilding redirections.
Ran upgrade step: Rebuild the plone.app.redirector information.
Moved "plone.app.content.interfaces.INameFromTitle" to "plone.namefromtitle"
Moved "plone.app.contenttypes.behaviors.collection.ICollection" to "plone.collection"
Moved "plone.app.dexterity.behaviors.discussion.IAllowDiscussion" to "plone.allowdiscussion"
Moved "plone.app.dexterity.behaviors.id.IShortName" to "plone.shortname"
Moved "plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation" to "plone.excludefromnavigation"
Moved "plone.app.dexterity.behaviors.metadata.IDublinCore" to "plone.dublincore"
Moved "plone.app.contenttypes.behaviors.richtext.IRichTextBehavior" to "plone.richtext"
Moved "plone.app.relationfield.behavior.IRelatedItems" to "plone.relateditems"
Moved "plone.app.lockingbehavior.behaviors.ILocking" to "plone.locking"
Converted dotted behaviors of Collection to named behaviors.
Moved "plone.app.content.interfaces.INameFromTitle" to "plone.namefromtitle"
Moved "plone.app.dexterity.behaviors.discussion.IAllowDiscussion" to "plone.allowdiscussion"
Moved "plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation" to "plone.excludefromnavigation"
Moved "plone.app.dexterity.behaviors.id.IShortName" to "plone.shortname"
Moved "plone.app.dexterity.behaviors.metadata.IDublinCore" to "plone.dublincore"
Moved "plone.app.contenttypes.behaviors.richtext.IRichTextBehavior" to "plone.richtext"
Moved "plone.app.relationfield.behavior.IRelatedItems" to "plone.relateditems"
Moved "plone.app.versioningbehavior.behaviors.IVersionable" to "plone.versioning"
Moved "plone.app.contenttypes.behaviors.tableofcontents.ITableOfContents" to "plone.tableofcontents"
Moved "plone.app.lockingbehavior.behaviors.ILocking" to "plone.locking"
Converted dotted behaviors of Page to named behaviors.
Moved "plone.app.dexterity.behaviors.metadata.IDublinCore" to "plone.dublincore"
Moved "plone.app.content.interfaces.INameFromTitle" to "plone.namefromtitle"
Moved "plone.app.dexterity.behaviors.discussion.IAllowDiscussion" to "plone.allowdiscussion"
Moved "plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation" to "plone.excludefromnavigation"
Moved "plone.app.dexterity.behaviors.id.IShortName" to "plone.shortname"
Moved "Products.CMFPlone.interfaces.constrains.ISelectableConstrainTypes" to "plone.constraintypes"
Moved "plone.app.relationfield.behavior.IRelatedItems" to "plone.relateditems"
Moved "plone.app.dexterity.behaviors.nextprevious.INextPreviousToggle" to "plone.nextprevioustoggle"
Converted dotted behaviors of Folder to named behaviors.
Moved "plone.app.dexterity.behaviors.discussion.IAllowDiscussion" to "plone.allowdiscussion"
Moved "plone.app.dexterity.behaviors.id.IShortName" to "plone.shortname"
Moved "plone.app.dexterity.behaviors.metadata.IDublinCore" to "plone.dublincore"
Moved "plone.app.content.interfaces.INameFromTitle" to "plone.namefromtitle"
Moved "plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation" to "plone.excludefromnavigation"
Moved "plone.app.versioningbehavior.behaviors.IVersionable" to "plone.versioning"
Converted dotted behaviors of Link to named behaviors.
Moved "plone.app.dexterity.behaviors.metadata.ICategorization" to "plone.categorization"
Moved "plone.app.dexterity.behaviors.metadata.IPublication" to "plone.publication"
Moved "plone.app.dexterity.behaviors.metadata.IOwnership" to "plone.ownership"
Moved "plone.app.dexterity.behaviors.filename.INameFromFileName" to "plone.namefromfilename"
Moved "plone.app.dexterity.behaviors.discussion.IAllowDiscussion" to "plone.allowdiscussion"
Moved "plone.app.dexterity.behaviors.id.IShortName" to "plone.shortname"
Moved "plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation" to "plone.excludefromnavigation"
Moved "plone.app.relationfield.behavior.IRelatedItems" to "plone.relateditems"
Converted dotted behaviors of File to named behaviors.
Moved "plone.app.dexterity.behaviors.metadata.ICategorization" to "plone.categorization"
Moved "plone.app.dexterity.behaviors.metadata.IPublication" to "plone.publication"
Moved "plone.app.dexterity.behaviors.metadata.IOwnership" to "plone.ownership"
Moved "plone.app.dexterity.behaviors.discussion.IAllowDiscussion" to "plone.allowdiscussion"
Moved "plone.app.dexterity.behaviors.id.IShortName" to "plone.shortname"
Moved "plone.app.dexterity.behaviors.filename.INameFromFileName" to "plone.namefromfilename"
Moved "plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation" to "plone.excludefromnavigation"
Moved "plone.app.relationfield.behavior.IRelatedItems" to "plone.relateditems"
Converted dotted behaviors of Image to named behaviors.
Moved "plone.app.dexterity.behaviors.metadata.IDublinCore" to "plone.dublincore"
Moved "plone.app.contenttypes.behaviors.richtext.IRichTextBehavior" to "plone.richtext"
Moved "plone.app.content.interfaces.INameFromTitle" to "plone.namefromtitle"
Moved "plone.app.dexterity.behaviors.discussion.IAllowDiscussion" to "plone.allowdiscussion"
Moved "plone.app.dexterity.behaviors.id.IShortName" to "plone.shortname"
Moved "plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation" to "plone.excludefromnavigation"
Moved "plone.app.relationfield.behavior.IRelatedItems" to "plone.relateditems"
Moved "plone.app.contenttypes.behaviors.leadimage.ILeadImageBehavior" to "plone.leadimage"
Moved "plone.app.versioningbehavior.behaviors.IVersionable" to "plone.versioning"
Moved "plone.app.lockingbehavior.behaviors.ILocking" to "plone.locking"
Converted dotted behaviors of News Item to named behaviors.
Moved "plone.app.event.dx.behaviors.IEventBasic" to "plone.eventbasic"
Moved "plone.app.event.dx.behaviors.IEventRecurrence" to "plone.eventrecurrence"
Moved "plone.app.event.dx.behaviors.IEventLocation" to "plone.eventlocation"
Moved "plone.app.event.dx.behaviors.IEventAttendees" to "plone.eventattendees"
Moved "plone.app.event.dx.behaviors.IEventContact" to "plone.eventcontact"
Moved "plone.app.dexterity.behaviors.metadata.IDublinCore" to "plone.dublincore"
Moved "plone.app.content.interfaces.INameFromTitle" to "plone.namefromtitle"
Moved "plone.app.contenttypes.behaviors.richtext.IRichTextBehavior" to "plone.richtext"
Moved "plone.app.dexterity.behaviors.discussion.IAllowDiscussion" to "plone.allowdiscussion"
Moved "plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation" to "plone.excludefromnavigation"
Moved "plone.app.dexterity.behaviors.id.IShortName" to "plone.shortname"
Moved "plone.app.relationfield.behavior.IRelatedItems" to "plone.relateditems"
Moved "plone.app.versioningbehavior.behaviors.IVersionable" to "plone.versioning"
Moved "plone.app.lockingbehavior.behaviors.ILocking" to "plone.locking"
Converted dotted behaviors of Event to named behaviors.
Done moving dotted to named behaviors.
Ran upgrade step: Move from dotted behaviors to named behaviors.
Role / permission map imported.
Ran upgrade step: Miscellaneous
Ran upgrade step: Move registry fields interfaceName for ILanguageSchema
Ran upgrade step: Miscellaneous
Ran upgrade step: Miscellaneous
End of upgrade path, main migration has finished.
Starting upgrade of core addons.
Types tool imported.
'Discussion Item' type info imported.
Done upgrading core addons.
Your Plone instance is now up-to-date.

升级完成后,进入站点管理后台:
[attach]46[/attach]
其中“操作”和“URL Management”是Plone5.2新增加的内容。
另外,Plone5.2核心还增加了plone.restapi模块,这个模块可以为移动应用开发提供强大支持,详细见官方文档。该模块需要进入
到“附加组件”中安装启用,如下图:
[attach]47[/attach]

十一、备份生产服务器

bin/snapshotbackup

十二、升级生产服务器
安装上述步骤,重新在生产服务器上做一遍,唯一不同的是步骤由原来的开发配置文件buildout_dev.cfg更改为生产部署配置文件config/deploxy.cfg
如此,完成生产服务器升级。

本文原创,欢迎转载,但请注明出去,谢谢!
祝愿同志们好运!!!


设置