3.8 配置文件的管理
如同我们在第 2 章的问题 10 中见到的那样,由于环境不同,对依赖环境的各种配置文件也要进行版本管理。首先,程序方面的配置应该把每个环境的配置文件分开进行管理。例如数据库或 memcached 等中间件的连接地址配置 66 或程序本身固有的配置等。现代的 Web 程序框架一般都会提供这样的机制,请直接使用。即便出错了,也不要采用手动替换 staging 环境或正式环境中的配置文件这样的方式。
66 以数据库为代表的中间件的连接信息中一般会包括密码。将密码这样的信息直接提交到版本管理系统的代码库可能会产生安全方面的问题,这点需要注意。通常只将开发环境的密码提交到版本管理系统,不提交 staging 环境或正式环境的密码,而使用部署脚本在每次发布时进行密码设置。
将所有资源都置于版本管理系统之下,只使用版本管理系统中的文件,任何人都可以随时自动化地执行程序的构建到启动的所有过程,只有这样才能维持优质、快速的开发。
接着是 Apache、MongoDB、memcached、PostgreSQL 等中间件自身的配置文件的管理。这些中间件基本上都没有根据不同的环境分别进行配置的功能。因此大多数的公司都独立开发构筑服务器用的安装脚本,或者在目录结构和符号链接方面下功夫,以尽可能地把中间件的安装到配置的过程简单化。
通常部署程序的服务器由多台组成,如果不能有效地管理配置文件,要进行快速的发布是不可能的。现在用于解决上述问题的工具有 Chef、Puppet、Capistrano、Fabric、ServerSpec 等。使用这些工具的管理方法将在第 6 章进行说明。
