web服务器配置文件的版本控制


Version control of a web server config files

在我和一个网络架构师之间,我们管理一堆Web服务器(FreeBSD)。他负责所有服务器/网络相关的东西(ip,防火墙,用户/组等),我负责所有网络相关的东西(Apache, PHP, MySQL)。有时职责重叠。

有几次我们对配置文件做了一些改变,这些改变或多或少地影响了服务器,我们无法弄清楚是谁做了这些改变,以及为什么。

作为一名Web开发人员,我认为将文件置于版本控制之下(我们目前使用Subversion)是一个很好的做法,这样每当我们更改任何东西时,我们都必须提交对更改的注释。它将解决所有不知道谁做了什么以及为什么做的问题。

我正在考虑的特定配置文件是:

  • 防火墙配置
  • apache config (with extra)
  • php config (php.ini)MySQL config (my.conf)

我已经知道,服务器配置文件的版本控制的想法是基于这里问的其他问题。我唯一担心的是如何在Web服务器端正确地做到这一点,因为文件在不同的位置。将整个/usr/local/etc置于版本控制之下似乎毫无意义,因为它不仅包含配置文件。

我想知道是否不创建一个新的文件夹,说/config,这将是在版本控制下,将包含我们需要的所有配置文件,然后用符号链接替换原始的/config文件夹中的文件。例如:

/usr/local/etc/apache22/httpd.conf -> /config/apache22/httpd.conf

所以问题是:这是一个好主意吗?如果不是,什么是更好的解决方案?

如果您使用GIT,那么将整个/usr/local/etc置于版本控制之下并非毫无意义。

  • 如果您选择
  • ,则只能跟踪少数文件。
  • 跟踪所有配置文件的工作目录的大小几乎没有变大

直接安装git,然后转到/usr/local/etc,写git init。这将在当前位置创建.git文件夹(基本上使这个文件夹成为一个存储库)。

然后添加你想要跟踪的配置文件:git add firewall/firewall_config.conf apache2/httpd.conf等and commit: git commit -m "Initial Configuration"

你的配置文件现在被跟踪。

因为你是版本敏感的配置文件,我建议你设置一个内部的git服务器,比如gitlab。为每个服务器或服务器模板/镜像等创建一个git存储库。到/目录下,选择"git init"。

你可以选择你的版本控制,只使用'git add/path/to/file对你要定制的文件。

然后,'git -m 'commit comment'和'git push -u origin master'。

您看过任何专门用于做这类事情的管理工具吗?我推荐使用Puppet或Chef,因为我在以前的工作中用过它们来做这类事情。