[英]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:cold
,然后再使用cap deploy
或cap 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.