2012-04-08 56 views
5

我们已经开始使用marklogic来存储文档的新项目。为了让应用程序运行,我们需要创建一个数据库,一个林,新用户并设置一个XDBC服务器。使用Marklogic提供的网络管理工具很容易,但要从一个持续集成服务器运行它,我们需要将它自动化。有没有办法从命令行执行它(如sqlcmd.exe for sqlserver或oracle中的sql plus)?如何通过脚本在marklogic中创建数据库

回答

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服务器公开它。

+0

感谢您的链接。我们正在使用5.x.首先,我尝试将应用程序服务器导入到xml中,并获得了一个xml包。下一步是实际安装软件包。我使用了package:install(fn:doc(“/ xdbcserver.xml”)).....问题是具有uri /xdbcserver.xml的文件应该存在于数据库中。这意味着有人必须手动将其放置在那里。这与自动化配置的目的有点矛盾。我想要一个从客户端文件系统加载包的函数,而不是DB中的现有文件。任何提示?再次感谢 – uttamkini 2012-04-09 19:07:49

1

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

例如,如果你想(自动执行xdbc服务器的创建, 去一个实例的查询控制台,手动配置xdbc服务器exists.Use下面的XQuery生成的xdbc服务器软件包文件在我大小写称为sample-server)。

导入模块名称空间package =“http://marklogic.com/package/package”at“/MarkLogic/package/package.xqy”;

让$我的包:=包:创建()

返回包:附加应用程序服务器($我的包, “默认”, “样本服务器”)

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

导入模块名称空间package =“http://marklogic.com/package/package”at“/MarkLogic/package/package.xqy”;

设$包:= {贴上您在文件保存该包的XML /剪贴板第一步}

返回包:安装($包)

现在,您将一个获取XML结果它说该软件包已被写入。

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

+0

所以,你知道,在github上有一套针对MarkLogic的ant taks http:// developer .marklogic.com/code/ant-tasks – derickson 2012-04-11 01:27:11

+3

配置管理应用程序还提供了打包REST接口。有一个用于发布安装包的网址。更多详细信息,请访问:http://community.marklogic.com/pubs/5.0/apidocs/packageREST.html – grtjn 2012-04-12 05:51:17