设置多租户(又名“virtual mode”,“multi-wiki”或“farm mode”),可以允许在相同的XWiki实例上运行多个wiki(即在同一个JVM)。
这是通过使每个wiki具有其自己的schema,或者其自己的database (无论它是实现为schema或database依赖于DBMS)来实现。
多租户的主要优点是性能优化。物理机(Servlet容器)上的一个单一的XWiki实例执行将比具有相同的机器上运行多个实例XWiki好得多。已知单个XWiki实现实例可以承载几百到几千维基。
要求
目前多租户功能仅在一些数据库管理系统支持:
- MySQL (为每个subwiki使用不同database)
- Oracle (为每个subwiki使用不同database)
- HSQLDB (为每个subwiki使用不同database) 从XWiki 4.3开始
- PostgreSQL (为每个subwiki使用不同database) 从XWiki 5.0开始 还要注意的是使用不同的databases,而不是schemas (PostgreSQL目前不支持),因为JDBC驱动程序不支持setCatalog() 改变databases。这是因为PostgreSQL的连接都指向一个特定的数据库连接。
- Derby当前不支持
除了具有支持的DBMS你还需要:
- 要选择在你的网络上已安装和充当mian Wiki的一个xwiki实例。此wiki的数据库名字应当命名为xwiki。如果你还没安装过XWiki 实例,请参阅安装指南和先安装XWiki Enterprise。
- 在这个XWiki实例有管理权限
- 你需要确保用于创建主数据库的xwiki用户具有权限创建其他schemas 或databases ,因为每个subwiki将创建一个新的schema/database。请参阅数据库安装指南。
配置
没有特别的步骤获得多租户功能,因为它是一个内置的功能。我们提供了一个用户界面,为用户更容易地通过Wiki Application创建,配置和删除子维基,默认是安装的。如果您从旧版本升级,可以通过Extension Manager进行安装升级。
基于主机名subwikis
默认情况下subwikis通过具有在其路径部分wiki名的url访问,如http://myserver.org/xwiki/wiki/wikiname/...。如果你想通过hostname访问,如http://subwiki.myserver.org/xwiki/view/...,则需要在文件系统上修改配置文件:
- 在WEB-INF/xwiki.properties文件设置url.standard.multiwiki.isPathBased=false以及在WEB-INF/xwiki.cfg文件设置xwiki.virtual.usepath=0。
- 重新启动xwiki
如果您已经创建基于path-based方式的subwikis,你想通过Wiki Index查找所有wiki,那么要确保它们都有唯一别名。
XWiki 5.3之前配置
在5.3中,我们提供不同的用户界面来管理sub wikis。为此,您需要在Wiki Manager Application上安装相应的版本。
XWiki 5.0之前配置
如果你使用XWiki 5.0或更高的版本则不需要以下步骤
- 终止xwiki实例,编辑WEB-INF/xwiki.cfg文件,修改xwiki.virtual值为1
- 重启xwiki