一般來說,我們有開發(fā)環(huán)境(DEV)、測試環(huán)境(TEST)、生產(chǎn)環(huán)境(PROD)。
創(chuàng)新互聯(lián)建站專注于拜城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供拜城營銷型網(wǎng)站建設(shè),拜城網(wǎng)站制作、拜城網(wǎng)頁設(shè)計(jì)、拜城網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造拜城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供拜城網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。怎樣解決自動(dòng)根據(jù)不同環(huán)境切換相應(yīng)的配置文件的問題呢?
本文以PHP為例。
最簡單的方法,是確保三種環(huán)境的服務(wù)器可以給出一模一樣的設(shè)置給程序,如數(shù)據(jù)庫地址、端口、數(shù)據(jù)庫名、用戶名密碼等。但在資源緊缺的環(huán)境下可操作性不強(qiáng)。
首先,無論如何,建三個(gè)對應(yīng)的配置文件是必須的。
如:
config.dev.php
config.test.php
config.prod.php/config.php
然后,便是自動(dòng)切換的問題。
其實(shí),正常情況下,這三者的運(yùn)行環(huán)境可能都相同,無法簡單的通過環(huán)境的不同進(jìn)行區(qū)分。除非那種極客型的,如修改php代碼,不同環(huán)境增加不同環(huán)境變量標(biāo)示手動(dòng)編譯PHP,這樣運(yùn)行環(huán)境中就具備了區(qū)分標(biāo)示,然后封裝一個(gè)判斷方法。同樣在資源緊缺的情況下,可操作性不強(qiáng)。
剩下比較可行的,就是通過文件軟連接的方式。*nix、Windows都有辦法創(chuàng)建文件軟連接,系統(tǒng)無論有幾個(gè)配置文件,在運(yùn)行時(shí)都只需要一個(gè)文件,所以在不造成相應(yīng)程序大幅改動(dòng)代碼來實(shí)現(xiàn)切換的話,就是這種方案了:
config.dev.php
config.test.php
config.prod.php
然后手動(dòng)在每種環(huán)境創(chuàng)建軟連接config.php,指向?qū)?yīng)的文件config.xxx.php。
實(shí)在像虛擬主機(jī),就直接在服務(wù)器上把config.prod.php 改成 config.php
PS
在大型的應(yīng)用中,異常復(fù)雜的無數(shù)資源需要調(diào)用的環(huán)境,專門做一個(gè)資源管理與調(diào)度的系統(tǒng),然后針對每種資源如mysql服務(wù)編號命名,然后在應(yīng)用環(huán)境中,調(diào)用統(tǒng)一的api來獲取配置資源。這種方式,其實(shí)還是要在資源比較充足的情況下,尤其測試環(huán)境與正式環(huán)境不能在一臺機(jī)器上。這樣,可以根據(jù)應(yīng)用請求的ip或端口來判斷:那臺是測試服務(wù)器,我就返回一個(gè)測試用的配置數(shù)據(jù)給它;這臺是正式環(huán)境,就返回正式的配置。