5

我们已经开始了一个使用 marklogic 来存储文档的新项目。为了让应用程序运行,我们需要创建一个数据库、一个森林、新用户并设置一个 XDBC 服务器。使用 Marklogic 提供的 Web 管理工具很容易做到这一点,但要从持续集成服务器运行它,我们需要自动化它。有什么方法可以从命令行执行(例如 sqlserver 的 sqlcmd.exe 或 oracle 中的 sql plus)?

4

2 回答 2

5

只要您使用 MarkLogic 5.x,最简单的方法就是使用配置管理器。这个基于 Web 的工具允许您将整个数据库和应用程序服务器配置导出到可以进行版本控制的单个 xml 文件。然后也可以导入它以完全设置或重新配置您的 MarkLogic 实例。

为了将其用作持续集成的一部分,您必须编写配置导入的脚本。您可以创建一个具有一个端点的 http 服务器,该端点调用配置 API 来执行加载,如下文所述:http: //community.marklogic.com/pubs/5.0/apidocs/package-api.html。这个基于 https 的服务可以通过 ANT 或任何其他 CI 工具轻松调用。

或者,特别是如果您还没有在 5.x 上运行,您可以编写整个过程的脚本,而不是使用配置包。所有的管理任务都记录在这里:http: //community.marklogic.com/pubs/5.0/books/adminAPI.pdf。然后,您必须编写配置数据库、应用程序服务器等所需的所有代码,然后如上所述通过 http 服务器公开它。

于 2012-04-08T14:39:59.800 回答
1

感谢 Clark Richey 的帮助,我可能已经找到了一种自动配置 MarkLogic 服务器 5.x 的方法(尽管绝不简单)。

例如,如果您想自动创建 xdbc 服务器,请转到存在手动配置的 xdbc 服务器的实例的查询控制台。使用以下 xquery 为 xdbc 服务器生成一个包文件(在我的例子中称为 sample-server )。

在“/MarkLogic/package/package.xqy”处导入模块命名空间包=“http://marklogic.com/package/package”;

让 $my-package := package:create()

返回包:add-appserver($my-package, "Default", "sample-server")

您现在将看到一个包 xml,其中包含创建和配置 xdbc 服务器所需的所有信息。将其保存在文件中或剪贴板上。现在转到您要配置的 marklogic 实例的查询控制台。使用以下 xquery 在实例上实际安装它。

在“/MarkLogic/package/package.xqy”处导入模块命名空间包=“http://marklogic.com/package/package”;

let $package := {粘贴您保存在文件/剪贴板中的包 xml step1}

返回包:安装($包)

您现在将获得一个 xml 结果,表明该包已被写入。

现在是在我的 CI 环境中自动执行此操作的所有重要步骤。我会编写一个自定义 ant/nant 任务(或者在我的特定情况下是一个 powershell cmdlet),它从文件系统读取配置文件,使用 XCC(和管理员凭据)连接到 ML,因为创建数据库和应用程序服务器之类的东西需要它) 然后执行上面定义的完全相同的 xquery。然后我可以在我的源代码控制中对配置文件进行版本控制,这样我就可以在全新安装的 ML 上自动创建/配置数据库,而无需任何手动干预。还有其他更好的方法吗??

于 2012-04-09T19:56:15.630 回答