簡體   English   中英

使用Capistrano進行部署

[英]Deploying with Capistrano

我正在使用Ruby on Rails 3.0.9,並嘗試設置Capistrano gem(遵循帶有Rails敏捷Web開發書-第四版)。 我在遠程計算機上安裝了git以及所有相關的目錄\\文件(可以正常工作)以及與Capistrano相關的所有“基本”內容。 現在,如果我從本地計算機運行以下命令,這些命令將按預期工作:

cap deploy:setup
# ...

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

此時,在我的項目目錄中的服務器計算機上,我具有以下目錄(由Capistrano創建):

<my_project_dir>/releases
<my_project_dir>/shared

沒什么了

我現在該怎么辦? 例如,是否將所有應用程序文件從本地計算機上載到遠程計算機?

PS:我還將我的Apache2服務器設置為指向<my_project_dir>/current/public目錄,但Capistrano並未創建該文件夾。


@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 root@<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 root@<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 root@<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: ...在最后一行。 問題是什么?

因為您的git repo在部署服務器本身上,所以Capistrano也有同樣的困難。 只需設置deploy_via變量:copy你的deploy.rb來解決:

set deploy_via :copy
 [<SERVER_IP_ADDRESS>] executing command 

** [:: err]主機密鑰驗證失敗。 ** [::錯誤]致命:遠端意外掛斷

就我而言,這是由我的git repo設置了ssh URL引起的。

我可以通過ssh登錄到主機,然后執行“ ssh”,然后接受主機密鑰來解決此問題。

您可以做幾件事:

  • cap deploy:setup這將設置capistrano需要的所有目錄,符號鏈接等
  • cap deploy:check這將確保所有內容都已設置為cap
  • cap deploy:cold這將部署並啟動所有已配置的守護程序(例如,mongrel,apache,無論您使用什么)

您必須第一次執行cap deploy:cold ,然后再使用cap deploycap deploy:migrations來部署應用程序。

這些命令可以將代碼從本地計算機甚至從遠程git存儲庫復制到生產服務器。

在此處查看配置選項: http : //help.github.com/deploy-with-capistrano/

上面的命令還將為您創建符號鏈接<my_project_dir>/current

上面的錯誤表明您的服務器無法從github克隆git存儲庫。 使用應用程序用戶在服務器計算機上生成一個SSK密鑰對,並將公共密鑰上載到github部署密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM