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

前言:遙想從前在4399,老是有人把自己本地的配置文件commit到線上,然後公司的RTX就開始瘋狂轟炸過來:“頁面出錯了!”、“這數據不對啊!”、“領導要用啊快點修復啊啊啊啊啊”,好吧,這我也是醉了……

最近爲了新公司、新項目做技術選型,就完整地看了一遍Laraval的文檔,由此得到了一個分離開發環境與生產環境配置文件的重要思路。

傳統的做法是:不把配置文件納入版本控制系統,然後在線上寫好一份正確的配置文件,這樣在上線的時候就不會影響到線上的配置文件。可惜這永遠都只是一個理想的狀況,在現實的項目中,總是有人看都不看有哪些文件就直接commit,然後就衝突了……

更好的思路是:先寫好一份線上的配置文件,然後再判斷當前所處的環境來記載相應的本地配置文件,並覆蓋對應的項(例如:可利用PHP中的array_merge),這樣的話,即使把本地配置文件上傳到線上了,由於配置文件的加載是由判斷機制來控制的,自然也就不會去記載本地的配置文件。我推薦用HOST名(例如:PHP的全局變量$_SERVER[‘SERVER_NAME’])來判斷當前所處的環境,下面以我現在的項目作爲例子進行說明:

假設生產環境的域名是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 中的配置項。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章