分離開發環境與生產環境的配置文件

前言:遙想從前在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 中的配置項。域名

相關文章
相關標籤/搜索