2011-08-20 227 views
0

我正在使用Ruby on Rails 3.0.9,並試圖設置Capistrano創業板(下面的敏捷Web開發與導軌書 - 第四版)。我在遠程機器上設置了git和所有相關目錄\文件(它工作)以及與Capistrano相關的所有「基本」事情。現在,如果我從我的本地機器上運行下面的命令,如預期的工作:在服務器上部署與Capistrano

cap deploy:setup 
# ... 

cap deploy:check 
# ... 
# You appear to have all necessary dependencies installed 

這時我的項目目錄中,我有以下目錄(由Capistrano的創建):

<my_project_dir>/releases 
<my_project_dir>/shared 

沒有更多

我現在應該做什麼?例如,我是否需要將所有應用程序文件從本地計算機上傳到遠程計算機?

P.S .:我也設置我的Apache2服務器指向<my_project_dir>/current/public目錄,但Capistrano沒有創建該文件夾。


UPDATE@Alex

如果我運行cap deploy命令我得到以下幾點:

* executing `deploy' 
    * executing `deploy:update' 
** transaction: start 
    * executing `deploy:update_code' 
    updating the cached checkout on all servers 
    executing locally: "git ls-remote [email protected]<SERVER_IP_ADDRESS>:/git/<my_project_name>.com.git master" 
    command finished in 3086ms 
    * executing "if [ -d /srv/www/<my_project_name>.com/shared/cached-copy ]; then cd /srv/www/<my_project_name>.com/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 36ccf7b6f63041ee8dcdf4ca0a7c0b10dbc8bad1 && git clean -q -d -x -f; else git clone -q [email protected]<SERVER_IP_ADDRESS>:/git/<my_project_name>.com.git /srv/www/<my_project_name>.com/shared/cached-copy && cd /srv/www/<my_project_name>.com/shared/cached-copy && git checkout -q -b deploy 36ccf7b6f63041ee8dcdf4ca0a7c0b10dbc8bad1; fi" 
    servers: ["<SERVER_IP_ADDRESS>"] 
    [<SERVER_IP_ADDRESS>] executing command 
** [<SERVER_IP_ADDRESS> :: err] Host key verification failed. 
** [<SERVER_IP_ADDRESS> :: err] fatal: The remote end hung up unexpectedly 
    command finished in 396ms 
*** [deploy:update_code] rolling back 
    * executing "rm -rf /srv/www/<my_project_name>.com/releases/20110820175634; true" 
    servers: ["<SERVER_IP_ADDRESS>"] 
    [<SERVER_IP_ADDRESS>] executing command 
    command finished in 353ms 
failed: "sh -c 'if [ -d /srv/www/<my_project_name>.com/shared/cached-copy ]; then cd /srv/www/<my_project_name>.com/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 36ccf7b6f63041ee8dcdf4ca0a7c0b10dbc8bad1 && git clean -q -d -x -f; else git clone -q [email protected]<SERVER_IP_ADDRESS>:/git/<my_project_name>.com.git /srv/www/<my_project_name>.com/shared/cached-copy && cd /srv/www/<my_project_name>.com/shared/cached-copy && git checkout -q -b deploy 36ccf7b6f63041ee8dcdf4ca0a7c0b10dbc8bad1; fi'" on <SERVER_IP_ADDRESS> 

failed: ...在最後一行。問題是什麼?

+0

你有沒有嘗試帽部署? – Alex

+0

@Alex - 我更新了問題。 – Backo

+0

您是否使用公鑰/私鑰對使用SSH訪問機器? – Alex

回答

3

因爲您的git repo位於部署服務器本身上,所以Capistrano也有同樣的困難。只需將deploy_via變量設置爲:copydeploy.rb修復:

set deploy_via :copy 
+0

謝謝,它解決了我的問題。 – Backo

0

你可以做兩件事情:

  • 帽部署:安裝 這將設置任何顯示目錄,符號鏈接等:Capistrano的需要
  • 帽部署:檢查 這將確保一切設置彌補帽
  • 帽部署:冷 該部署並啓動所有配置的守護進程(如雜種,阿帕奇,無論你使用)
+0

'cap deploy:cold'不起作用。它會生成我添加到更新問題中的錯誤。 – Backo

0

您必須首次執行cap deploy:cold,然後再使用cap deploycap deploy:migrations部署應用程序。

這些命令可以將代碼從本地機器或從遠程git存儲庫複製到生產服務器。

看看這裏的配置選項:http://help.github.com/deploy-with-capistrano/

上述命令還將創建符號鏈接<my_project_dir>/current

以上錯誤表明你的服務器是無法從GitHub克隆git倉庫。使用應用程序用戶在服務器機器中生成SSK密鑰對,並將公鑰上傳到github部署密鑰。

+0

我在哪裏可以找到一個Web資源,解釋如何「使用應用程序用戶在服務器計算機中生成SSK密鑰對並將公鑰上傳到github部署密鑰」?那麼,什麼意思是「對github部署密鑰」? – Backo

+0

順便說一句:我正在運行Ubuntu 10.04的遠程機器上部署。 – Backo

+0

請確保您能夠在遠程計算機上成功運行該命令:git clone -q root @:/ git/ .com.git /srv/www/.com/shared/緩存副本 –

1
[<SERVER_IP_ADDRESS>] executing command 

** [:: ERR]主機密鑰驗證失敗。 ** [:: ERR]致命:遠程端掛了出乎意料

在我的情況,這是由具有我的git倉庫建立與一個ssh URL引起的。

我能通過ssh登錄主機,然後執行'ssh',然後接受主機密鑰來解決這個問題。