2008-09-01 70 views
7

我知道Capistrano但它對我來說有點太重量級了。我個人設置了兩個Mercurial存儲庫,一個在生產服務器上,另一個在我的本地開發機器上。通常,當新功能準備就緒後,我會將更改從本地計算機上的存儲庫推送到服務器上的存儲庫,然後在服務器上進行更新。這是保持文件在多臺計算機上同步的非常簡單快捷的方式,但無助於更新數據庫。如何更新服務器上的Web應用程序?

你對這個問題的解決方案是什麼?

回答

1

我曾經使用git push發佈到我的web服務器,但最近我剛剛使用rsync。我嘗試讓我的網站儘可能不知道它在哪裏運行(使用相對路徑等),到目前爲止它的運行情況非常好。唯一的挑戰是讓數據庫保持同步,爲此我通常使用生產數據庫作爲主數據庫,並定期備份和導入到我的測試數據庫中。

+0

我正在做同樣的事情,但最近它讓我覺得這實在不是原子的。對於經常使用的網站來說不是最佳的(人們可能在不是所有文件都被rsynced的破碎階段訪問它)。 – Gilles 2008-10-03 19:34:33

+0

我會補充說,更好的做法是將rsync同步到文件夾A,而文件夾B包含您的實時網站,然後通過覆蓋指向當前實時版本的符號鏈接來切換A到B。然後下一次,rsync到B. – Gilles 2008-10-03 19:36:09

0

@Andrew

要使用混帳推部署您的網站,你需要做的首先建立一個遠程服務器在你的.git/config文件推到。然後你需要配置一個基本上執行git reset的鉤子 - 難以將你剛剛複製到倉庫的代碼複製到工作目錄。

我知道這有點含糊,但是一旦我切換到rsync,我實際上刪除了服務器端.git文件夾,所以我沒有我用來製作魔術的確切腳本。儘管如此,這可能是一個完整問題的很好的候選人,所以你可能會得到更多的迴應。

編輯:我知道它已經有一段時間,但我終於找到我再次通過什麼:

Deploy a project using Git push

1

或者Fabric,如果你喜歡的Python。

1

什麼是關於capistrano的重量級?如果你想同步文件,那麼確保rsync非常棒。但如果你需要做數據庫更新,那麼cap可不是那麼糟糕?

相關問題