Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php web服务器配置文件的版本控制_Php_Apache_Version Control_Freebsd - Fatal编程技术网

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

Php web服务器配置文件的版本控制,php,apache,version-control,freebsd,Php,Apache,Version Control,Freebsd,在我和一位网络架构师之间,我们管理着一堆Web服务器(FreeBSD)。他负责所有与服务器/网络相关的东西(IP、防火墙、用户/组等),我负责所有与网络相关的东西(Apache、PHP、MySQL)。有时责任重叠 有几次,对配置文件进行了一些更改,这些更改或多或少影响了服务器,我们无法确定是谁进行了更改以及为什么进行了更改 作为一名Web开发人员,我认为将文件置于版本控制之下(我们目前使用Subversion)是一种很好的做法,这样每当我们更改任何内容时,我们都必须提交一条注释来更改。它将解决所

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

有几次,对配置文件进行了一些更改,这些更改或多或少影响了服务器,我们无法确定是谁进行了更改以及为什么进行了更改

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

我想到的特定配置文件是:

  • 防火墙配置
  • apache配置(带有附加功能)
  • php配置(php.ini)
  • MySQL配置(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
并编写
gitinit
。这将在您的当前位置创建.git文件夹(基本上使此文件夹成为存储库)

然后添加要跟踪的配置文件:
git添加防火墙/firewall\u config.conf apache2/httpd.conf
etc 和提交:
git提交-m“初始配置”


您的配置文件现在正在被跟踪。

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

由于您正在对敏感配置文件进行版本控制,我建议您设置一个内部git服务器,如gitlab。为每台服务器或服务器模板/image/等创建git存储库。转到/目录和“git init”

对于要自定义的文件,您可以选择只使用“git add/path/to/file”来控制版本


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

您可能是对的。我正在迁移到git,但是来自SVN,我有一个每个子文件夹的图像,其中包含一个.SVN文件夹和一个报告一大堆未版本文件的TortoiseSVN。这可能是一条路。谢谢DerShodan。但是如果配置文件在不同的位置呢?例如,防火墙配置位于/etc中。我希望避免有多个git签出。+1表示DVCS。一个。小的文件夹。一个地方。(这也是一个不错的答案)关于多个位置的多个配置文件:只要您在/etc中,您就可以将所需的文件添加到存储库中。另一个选项是,正如您自己所建议的,只需将配置移动到一个文件夹中进行跟踪,并将原始配置替换为符号链接。puppet/chef在这里有什么帮助?你能详细说明这个想法吗?