2009-09-20 160 views
0

我想進入與Capistrano的PHP應用程序部署。我有兩個配置文件,需要根據部署位置進行「編輯」。這是基本的東西,如數據庫名稱和根URL(Codeigniter)。我可以自動指定Capistrano編輯嗎?比方說,我想編輯的文件/system/config/edit.php如下:部署與Capistrano

$test = ''; 
// edit to 
$test = 'Hello World'; 

感謝, 最大

+0

如果有查找字符串解決方案,我更喜歡它尋找線解決方案! – mistero 2009-09-20 16:24:00

回答

0

我的Unix是知識不夠完美,所以我不能完全得到你想要的語法。但是,Capistrano允許您通過在您的配置中調用:run_method來直接使用Unix命令行。

Capistrano酒店代碼可能類似於以下內容:

run "grep -R --files-with-matches '$test = "";' /system/config/ | xargs perl -pi~ -e 's/\$test = "";/$test = "Hello World";/'" 

我會檢查了在實現它生活雖然之前預期的工作是查找和替換功能。

如果您需要任何幫助,我建議您查看Capistrano Handbook,它應該回答您的大部分問題。

5

我通常做這種情況(即使我不不使用Capistrano)是有幾個配置文件提交到源代碼管理。

例如:

  • config.php發展機
    • 這個文件是一個總是使用的應用程序
  • config.testing.php
  • config.staging.php
  • 的一個

和部署應用程序到服務器時,我只需要複製對應於當前的環境,「config.php」的文件 - 這一個是總是使用的應用程序之一。

這意味着我必須在生成過程中做一個文件副本,沒錯,但是:

  • 這意味着沒有必要對任何搜索和替換,可以打破
  • 這也意味着每一個配置文件都致力於爲SVN (或其他源代碼控制軟件,你正在使用)


如果你的配置文件變得過於複雜和重複升你可以考慮擁有一個「默認」配置文件,這個配置文件總是包含在內,而子配置文件只是定義了什麼取決於環境。

那是什麼,我之前說的仍然是:只要在對方開始時包含「默認」文件即可。