分离开发环境与生产环境的配置文件

前言:遥想从前在4399,总是有人把本身本地的配置文件commit到线上,而后公司的RTX就开始疯狂轰炸过来:“页面出错了!”、“这数据不对啊!”、“领导要用啊快点修复啊啊啊啊啊”,好吧,这我也是醉了……php

最近为了新公司、新项目作技术选型,就完整地看了一遍Laraval的文档,由此获得了一个分离开发环境与生产环境配置文件的重要思路。测试

传统的作法是:不把配置文件归入版本控制系统,而后在线上写好一份正确的配置文件,这样在上线的时候就不会影响到线上的配置文件。惋惜这永远都只是一个理想的情况,在现实的项目中,老是有人看都不看有哪些文件就直接commit,而后就冲突了……版本控制

更好的思路是:先写好一份线上的配置文件,而后再判断当前所处的环境来记载相应的本地配置文件,并覆盖对应的项(例如:可利用PHP中的array_merge),这样的话,即便把本地配置文件上传到线上了,因为配置文件的加载是由判断机制来控制的,天然也就不会去记载本地的配置文件。我推荐用HOST名(例如:PHP的全局变量$_SERVER['SERVER_NAME'])来判断当前所处的环境,下面以我如今的项目做为例子进行说明:code

假设生产环境的域名是xxx.com,而本地测试环境的域名因为写了VHOST,是xxx.local.com开发

下面看个人配置文件目录:文档

/config

/config/xxx.local.com

/config/xxx.local.com/config.php

/config/config.php

在本地测试环境下,系统根据$_SERVER['SERVER_NAME'],读取到 /config/xxx.local.com/config.php ,并覆盖了 /config/config.php 中的配置项。文件上传

而在生产环境下,系统因为读取不到/config/xxx.com/config.php ,所以使用的全是 /config/config.php 中的配置项。域名

相关文章
相关标签/搜索