XWiki有不同方式的安装,你可能需要分以下几种情况进行升级:
升级标准版的XWiki
如果你下载并已经安装了标准版的XWiki(exe, zip 或者 jar 版本)然后想得到升级,那么最简单的方式是下载一个新的版本然后像第一次安装XWiki一样再安装一次。并请注意新的版本不要覆盖旧的版本(两个版本必须同时保留)。
安装完新版本后你需要从旧版本的XWiki复制相关配置文件和目录到新版本的XWiki,请注意不要完全覆盖新版本的配置文件,因为新版本XWiki的文件可能已经加了新的条目,所以你应该合并新旧版本XWiki的配置文件。另一种可行的方法是你可以手动修改新版本XWiki的配置文件然后加上你之前在旧版本XWiki上做的配置。
需要注意的是,在需要时候database schema会进行自动升级。在执行迁移,你需要做的是确保你的xwiki.cfg文件配置正确。下面是来自xwiki.cfg文件相关的摘录:
代码语言:javascript复制#-# Whether migrations are enabled or not. Should be enabled when upgrading, but for a better startup time it is better to
#-# disable them in production.
xwiki.store.migration=1
#-# Whether to exit after migration. Useful when a server should handle migrations for a large database, without going
#-# live afterwards.
# xwiki.store.migration.exitAfterEnd=0
#-# Indicate the list of databases to migrate.
#-# to upgrade all wikis database set xwiki.store.migration.databases=all
#-# to upgrade just some wikis databases set xwiki.store.migration.databases=xwiki,wiki1,wiki2
#-# Note: the main wiki is always migrated whatever the configuration.
# xwiki.store.migration.databases=
迁移失败的情况下,数据库表DATABASECHANGELOG和DATABASECHANGELOGLOCK会保留下来。
确保这些表在重新启动迁移之前被丢弃。
升级Debian软件包版的XWiki
sudo apt-get update
sudo apt-get upgrade
如果你想避免更新所有包,只更新XWiki,尝试sudo apt-get -s upgrade列出可以升级的所有软件包,然后运行(而不是升级)xwiki-enterprise- 开头的包;即sudo apt-get install xwiki-enterprise-tomcat8-mysql。
但是在升级之后,你还需要安装新的用户界面;查看下文“升级wiki文件”了解更多。
升级webapp
一般来讲,你可以下载新版本的WAR文件然后替换你旧版本的WAR文件,但是请注意不要直接覆盖文件,因为这样做的话会遗留一些旧文件,这会使你的XWiki工作不正常(例如在WEB-INF/lib下旧的JAR文件)。此外你可以替换XWiki中WEB-INF/lib下的部分文件(如xwiki.properties 和 xwiki.cfg)。
因此在你替换你现有的WAR文件的时候请备你的相关文件包括配置文件和数据文件。
再者请保证你用的是一样的XWiki Permanent目录(WEB-INF/xwiki.properties 文件中的 environment.permanentDirectory属性)。
在你升级的过程中也许需要做其他的操作,但是这些操作将在你所升级的新版本的XWiki中的release notes有详细说明,所以升级新版本之前请查阅。release notes中可能包含了新版本的新特性的信息和配置文件需要改动的信息,所有有关新版本的改动和更新将在release notes中公布。
需要注意的是,在需要时候database schema会进行自动升级。在执行迁移,你需要做的是确保你的xwiki.cfg文件配置正确。下面是来自xwiki.cfg文件相关的摘录:
代码语言:javascript复制#-# Whether migrations are enabled or not. Should be enabled when upgrading, but for a better startup time it is better to
#-# disable them in production.
xwiki.store.migration=1
#-# Whether to exit after migration. Useful when a server should handle migrations for a large database, without going
#-# live afterwards.
# xwiki.store.migration.exitAfterEnd=0
#-# Indicate the list of databases to migrate.
#-# to upgrade all wikis database set xwiki.store.migration.databases=all
#-# to upgrade just some wikis databases set xwiki.store.migration.databases=xwiki,wiki1,wiki2
#-# Note: the main wiki is always migrated whatever the configuration.
# xwiki.store.migration.databases=
迁移失败的情况下,数据库表DATABASECHANGELOG和DATABASECHANGELOGLOCK会保留下来。
确保这些表在重新启动迁移之前被丢弃。
无效的插件
在你升级完之后可能有些之前可以工作的插件会出现失效的情况(原因可能是插件的名字已经更改,或者这个插件已经被移除,或者与你安装的WAR文件版本不匹配,例如你看到的下面的情况)。在这种情况下,你将会在控制台看到下面的错误信息:
2013-12-02 11:43:01,688 localhost-startStop-1 WARN ltInstalledExtensionRepository - Invalid extension org.xwiki.enterprise:xwiki-enterprise-ui-common-5.2.1 on namespace wiki:xwiki
2013-12-02 11:43:01,688 localhost-startStop-1 WARN ltInstalledExtensionRepository - Invalid extension org.xwiki.platform:xwiki-platform-workspace-ui-5.2.1 on namespace wiki:xwiki
2013-12-02 11:43:01,688 localhost-startStop-1 WARN ltInstalledExtensionRepository - Invalid extension org.xwiki.enterprise:xwiki-enterprise-ui-mainwiki-5.2.1 on namespace wiki:xwiki
2013-12-02 11:43:01,689 localhost-startStop-1 WARN ltInstalledExtensionRepository - Invalid extension org.xwiki.enterprise:xwiki-enterprise-ui-wiki-all-5.2.1 on namespace wiki:workspacetemplate
这些仅仅是警告但不影响实例的稳定性,在下一节所提到的将提示你升级或移除旧的插件(请参阅下一节的"升级wiki文件")
升级wiki文件
从XWiki 4.3 开始,推荐升级的方式是使用安装向导。安装向导将在你升级XWiki WAR文件后自动运行,它将提示你升级,合并现有的文件并解决文件冲突问题。
XWiki 4.3之前的版本的升级请参阅以下手动升级的说明。
手动升级
当你导入相关页面时必须十分小心,尤其是以下页面:
- XWiki.XWikiPreferences: 此页面包含wiki的一些配置(此页面将覆盖xwiki.cfg里定义的配置),如果你导入新版本的页面,你将丢失使其你之前做的自定义设置如皮肤的选择,wiki的权限等。
- XWiki.WebPreferences, Main.WebPreferences 和其他空间的WebPreferences页面: 与XWiki.XWikiPreferences相同。
- XWiki.XWikiAllGroup (注册用户列表) and XWiki.AdminGroup (管理员列表): 如果你已经有现有的用户并导入新版本的此页面,你将发现之前的用户不属于之前的用户组,并且会发生不能修改页面,登录等情况,你需要重新将他们放到正确的用户组中。
- XWiki.Admin:此页面包含管理员的默认密码,如果你导入此页面将造成一些安全隐患,因此导入此页面时请谨慎考虑。
- *.*Config:此类文件是配置文件,因此请不要覆盖。如:
- XWiki.RegistrationConfig: 包含wiki的注册配置信息。
- Invitation.InvitationConfig: Invitation Application 的配置。
- XWiki.XWikiServerXwiki (multi wiki):此页面包含服务器的描述和wiki的属性信息。
- 其他需要修改的页面例如:Main.WebHome, modified Panel 等。
清理
- 解压缩在servlet容器中安装的XWiki WAR文件到新的文件夹,请使用jar xvf xwiki-enterprise-web-X.X.war命令或者使用XWIKI的数据导入/导出功能。
- 合并旧的和新的配置文件(见上文),请注意已作出更改的配置将会丢失,所以在做此动作的时候请小心。
- 对于新文件夹像xwiki application一样安装到你的servlet容器(你可以拷贝这些文件夹到servlet或者将其打包成WAR文件部署到容器)。
这些步骤完成后你就可以在新版本的XWiki中浏览旧的wiki中数据了。
备选: 导出和重新导入
有些时候如果你将现在的内容导出成XAR然后重新导入新的实例将是一件好事。例如如果你有很旧版本的XWiki然后想升级成新版本的XWiki,此方法将提供很好的支持,因为XWiki项目是注重向后兼容,如果有些内容是在几年前创建的,他还可以在新版本的XWiki上运行,例如我们现在还可以支持XWiki 1.0语法(虽然此版本已经在几年前被XWiki 2.0 语法取代)。
小贴士:
- 当你导入页面是请确保导入的是你自己的内容页面而不是XWiki的默认页面,因为这样你将覆盖新的XWiki提供的页面。
- 当你导出大的XAR文件时你也许会发现有问题,这时你可以安装能在你的旧的系统上运行的导出插件。