现在我正在使用 Mercurial 在生产服务器和开发服务器之间同步类似的 Apache 配置。最上面的补丁队列添加了开发服务器所需的更改和额外内容。
该计划有效,但可能会更好。从部署配置中提取更改后重新应用补丁队列时,我总是会遇到合并冲突。我觉得我总是对单独的 http:// 和 https:// 配置文件进行相同的更改。
我应该如何分解我的 :80 和 :443 Apache 配置之间的相同位,并更干净地将“额外位”添加到开发配置中?
现在我正在使用 Mercurial 在生产服务器和开发服务器之间同步类似的 Apache 配置。最上面的补丁队列添加了开发服务器所需的更改和额外内容。
该计划有效,但可能会更好。从部署配置中提取更改后重新应用补丁队列时,我总是会遇到合并冲突。我觉得我总是对单独的 http:// 和 https:// 配置文件进行相同的更改。
我应该如何分解我的 :80 和 :443 Apache 配置之间的相同位,并更干净地将“额外位”添加到开发配置中?
您可能需要考虑使用 Apache 配置系统的Include功能。然后将特定于单个机器的配置元素分离到_local.conf中,这应该会使合并更简单
Apache 有一个选项可以选择性地启用某些配置。这使您可以使用相同的配置文件进行开发和生产。使用 -DDEVELOPMENT 或 -DPROD 启动 apache,您可以使用标签进行特定于开发服务器的配置。这样您就不会遇到任何合并冲突(当然,除非您在合并之前更改了两个 dev/prod 配置文件)
这可能是老派,但我的阶段和生产 apache 配置是相同的,除了每个中的一些参数不同(即:IP 地址)。我在启动脚本周围使用了一个 perl 包装器,以有条不紊的方式“填补空白”。实际的基本配置“模板”确实是相同的。
这确保了阶段 apache 在功能上与生产 apache 相同。
与开发人员共享此生产配置使他们能够尽可能接近生产地进行测试(并且他们想要,因为除非他们的东西在阶段“工作”,否则他们不会进入生产环境。我们偶尔提供帮助(例如 mod_rewrite 规则)剩下的留给开发商。
这个特定设置与我工作过的其他地方之间的区别是:
鼓励开发人员涉足与他们所从事的程序没有直接关系的领域......即:他们可能在后端应用程序上工作(因此不需要对 apache 有太多了解)但他们配置了自己的 apache 服务器(事实上建立了自己的桌面,但这是一条越过 IMnsHO 的线)。
运营实际上推动了很多基础设施,而不仅仅是运行它。