我正在使用Capistrano在rails项目上部署ruby。我试图以“部署”用户身份登录远程服务器并部署此应用程序。
当我作为deploy ssh进入框并且git克隆项目时它可以工作
ssh deploy@remote_box
git clone git@github.com:lumdum/demo.git
然而,当我使用Capistrano运行时,它表示拒绝帐户dorelal
的权限。 dorelal
是我在GitHub上的帐户。所以我认为Capistrano在我的mac上本地执行任务,而不是在Redhat上的远程服务器上执行。
Capistrano在本地运行该命令确实如此。当我执行
cap staging deploy -vvvv
这是我收到的错误消息
executing locally: "git ls-remote git@github.com:lumdum/demo.git master
“
注意它说“在本地执行”。为什么capistrano在本地运行而不是在我的远程盒子上运行。
这是我的deploy.rb
set :stages, %w(staging)
require 'capistrano/ext/multistage'
set :repository, "git@github.com:lumdum/demo.git"
set :scm, :git
set :user, 'deploy'
set :use_sudo, false
set :keep_releases, 2
role :web, "serv1"
role :app, "serv1"
role :db, "db1", :primary => true
set :application, "demo_staging"
set :branch, "master"
set :deploy_via, :remote_cache
set :deploy_to, "/var/www/rails/demo"
set :scm_user, 'dorelal_lumdum'
set :user, 'deploy'
set :rails_env, "staging"
set :keep_releases, 1
答案 0 :(得分:6)
Capistrano在本地运行以确定存储库上的HEAD,然后在后续步骤中使用它来检出(或在Git术语中克隆)从工作站看到的精确修订。
我承认这有点出乎意料!