2

使用 ColdFusion 服务器时,您可以访问 CFIDE/管理员来设置配置值,从而更新cfusion/lib/xml 文件(例如neo-runtime.xmlneo-mail.xml等)

我想自动化一个包括设置这些管理员值的部署过程,这样我就不必登录并为每个共享设置的新框手动设置它们。我不确定最好的解决方法。

我的一些想法是:

  1. 用包含我的自定义设置的文件替换完整文件。我已经为本地开发完成了此操作,但由于 CF 热修复可能添加/删除/更改属性,它可能不是一个理想的方法。
  2. 用于读取 wddx xml 文件并替换属性值的脚本。我无法找到有关如何执行此方法的信息。

有没有人做过这样的事情?或者有人对如何最好地解决这个问题有任何建议吗?

4

3 回答 3

3

在一家公司,我们将所有neo-*.xml文件检查到源代码控制中,为每个环境设置一组开发人员只能访问开发设置,我们可以快速为新员工部署具有所有正确设置的本地开发环境。

但它可能不是一个理想的方法,因为 CF 热修复可能会添加/删除/更改属性。

您必须跟上这些变化并适当地迁移每个环境。

当我在那里时,我们从 8 升级到 9,从 9 升级到 11,从 11 升级到 2016。环境必须混合,因为需要时间来验证应用程序是否适用于每个新版本的 CF。每个服务器都为该环境获得了正确的 XML 文件,并且脚本将根据需要复制更新。我们在生产中大约有 55 台服务器,每台运行 8 个实例,因此扩展性很好。

于 2020-08-03T20:15:50.363 回答
1

Ortus Solutions 为这种自动化开发了一个非常有用的工具,称为 cfconfig,可以使用他们的命令行实用程序进行安装。该工具不仅能够设置管理员的配置:它还能够将设置导出/导入到 json 文件 (cfconfig.json)。这可能是你需要的。

这是他们文档的链接 https://cfconfig.ortusbooks.com/introduction/getting-started-guide

于 2020-08-07T06:23:33.067 回答
1

CFConfig 完美地满足了我的需求。我将@AndreasRu 的答案标记为已接受以向我介绍该工具!我只是在这个回复中添加了一些额外的细节以供后代使用。

  1. 安装 CommandBox作为部署脚本的一部分
  2. 安装 CFConfig作为部署脚本的一部分
  3. 使用 CFConfig 从现有框中导出 config.json 文件,该文件将与新部署共享设置。将此 json 文件存储在源代码控制中,用于每个框的类型/环境。
  4. 使用 CFConfig 将 config.json 作为部署脚本的一部分导入

这是一个简单的例子,说明它在 debian 上的样子

# Installs CommandBox
curl -fsSl https://downloads.ortussolutions.com/debs/gpg | apt-key add -
echo "deb https://downloads.ortussolutions.com/debs/noarch /" | tee -a /etc/apt/sources.list.d/commandbox.list
apt-get update && apt-get install apt-transport-https commandbox

# Installs CFConfig module
box install commandbox-cfconfig

# Import config settings
box cfconfig import from=/<path-to-config>/config.json to=/opt/ColdFusion/cfusion/ toFormat=adobe@11.0.19
于 2020-08-31T18:46:45.323 回答