我一次又一次地面临这样的问题:必须为将在所有应用程序中运行的应用程序单独配置多个环境(例如QA、区域性生产env、dev、阶段等等)。我想知道什么是组织不同配置的最佳方式?
会在数据库里吗?每个环境都有不同的配置文件?或者是同一个文件,有不同的部分/xml标记?然后如何部署这些武器?嵌入应用程序?或者在安装后手动进行就地修改?
这个问题不是针对技术的--我曾与.net和Java、网络应用和桌面应用合作过,这个问题一再出现。我希望学习不同的方法,也许可以调整一个混合体来解决这个问题。
编辑:我必须指出的一点是,当配置是已部署解决方案的一部分时,它通常安装在主机上的root用户下。在大型组织中,开发人员通常没有对生产主机的根访问权,因此对配置的任何更改都需要新的构建和部署。不用说,这不是最好的方法--特别是在有一个非常严格的涉及多个团队和批准级别的发布过程的组织中。(唉,我知道!)
发布于 2014-01-28 10:10:03
借用了Jez和David的"连续交货(第41页)“一书,你可以:
他们认为在构建和编译时注入配置文件是错误的做法,因为您应该能够将相同的二进制文件部署到每个环境中。
我的经验是,可以将每个环境的所有配置文件(敏感信息除外)都烘焙到部署文件(war、jar、zip等)中。并且设计应用程序时,要在启动时接受额外的参数,在应用程序启动时从正确的配置文件集(从提取的部署文件,或者从本地/远程文件系统(如果是敏感的话),或者从数据库中提取配置文件集)。
发布于 2011-11-30 01:52:13
这个问题很难回答,因为它有点模糊。据我所知,目前还没有与技术无关的配置方法。配置的具体设置将取决于所讨论的语言/技术。
我不熟悉.net,但对于java,一种流行的方法是拥有一个使用不同配置文件设置的maven构建。每个配置文件都是特定于环境的。然后,您可以定义具有特定于环境的值的不同属性文件,上面的链接中的一个例子是:
然后,您可以按以下方式构建您的项目:
mvn -Pprod package发布于 2012-04-25 22:06:22
我有好消息和坏消息。
好消息是Config4* (我是其中的维护者)通过支持自适应配置巧妙地解决了这个问题。基本上,这是配置文件调整自身以适应正在运行的环境(包括主机名、用户名、环境变量和命令行选项)的能力。详细信息,请阅读“入门”手册的第二章。别担心:这是一个很短的章节。
坏消息是,目前Config4*实现只存在于C++和Java,因此您的.Net应用程序运气不佳。即使使用C++和Java应用程序,将Config4*改造成现有的应用程序也没有实际意义。因此,我建议只在新的应用程序中使用Config4*。
尽管有坏消息,我认为您还是值得一读上面提到的Config4*文档的章节,因为这样做可能会为您提供能够适应您的需要的想法。
https://stackoverflow.com/questions/8275114
复制相似问题