2013-02-11 39 views
0

我們在很多網站上使用Drupal 6。我們將它們全部轉移到Git中進行版本控制。每個站點都有一個開發服務器,一個測試服務器和一個活動服務器。我想知道處理settings.php文件的最佳實踐,因爲數據庫連接信息在服務器之間明顯不同。我見過從switch語句到include文件的解決方案。包含文件解決方案http://drupaldork.com/2011/11/local-settings-development-sites似乎是一個很好的解決方案,但我想知道你最終在ACTUAL settings.php文件中留下了什麼。換句話說,如果每個服務器都有一個「本地」設置文件,如settings.local.php,它包含該特定服務器的連接信息,那麼是否將實際根settings.php中的連接信息刪除?或者你離開它?如果你離開它,你放什麼?這是否重要,因爲它最終只會被本地設置文件覆蓋?主根settings.php中的連接信息應該是某種默認的連接信息?在多臺服務器上使用Git時處理Drupal settings.php文件

回答

3

其中一種方式,我寧願不要將settings.php保存在Git中。 https://help.github.com/articles/ignoring-files

在我們的例子中,我們不斷的Git代碼庫,但下的settings.php文件將被忽略。因此,Prod,Sandbox &本地環境將擁有自己的settings.php文件。

0

我們保留2個settings.php文件包含在回購站中,但不包括基本settings.php。

我的生產settings.php文件是正常的。只是數據庫設置和默認的東西。 對於開發,我的settings.php文件具有數據庫設置,幷包含一個存儲在名爲settings.dev.php的repo中的文件。

# Additional site configuration settings. 
if (file_exists('/Users/User/Sites/site.com/sites/default/settings.dev.php')) { 
    include_once('/Users/User/Sites/site.com/sites/default/settings.dev.php'); 
} 

Settings.dev.php包括開關關閉緩存和設置環境的指標:

// Secure Pages 
$conf['securepages_enable'] = FALSE; 

// Environment Indicator 
$conf['environment_indicator_color'] = 'blue'; 
$conf['environment_indicator_enabled'] = TRUE; 
$conf['environment_indicator_text'] = 'Development Server'; 

// Robots disable 
$conf['robotstxt'] = 'User-agent: * 
Disallow: /'; 

// Turn off Caching and such 
$conf['cache'] = FALSE; 
$conf['page_compression'] = FALSE; 
$conf['preprocess_css'] = FALSE; 
$conf['css_gzip'] = FALSE; 
$conf['preprocess_js'] = FALSE; 
$conf['javascript_aggregator_gzip'] = FALSE; 

的settings.php在回購忽略,但被包括在settings.dev.php。我們還在回購中保留了settings.stage.php。在settings.php文件中設置prod值需要非常小心,因爲它可能會干擾某些模塊,並阻止您在需要時快速更改設置。但是你可以用settings.prod.php做同樣的事情。

+0

我喜歡這兩種解決方案,既不是對錯也不錯。我真的希望我可以將它們標記爲正確。我現在只是忽略settings.php文件。感謝您的輸入人。 – 2013-02-19 16:10:33