我无法执行cap deploy:migrate
。错误信息是:
2014-10-14 10:01:15 executing `deploy:migrate'
executing "ls -x /home/pj-production/projectname/releases"
`deploy:migrate' is only run for servers matching {:roles=>:db, :only=>{:primary=>true}}, but no servers matched
设置:
rails(3.2.13)
capistrano(2.14.2)
capify-ec2(1.1.6)
cap ec2:status
Project: PROJECTNAME.
Num Name ID Type DNS Zone Roles
00: worker01 i-1 t1.micro ec2-x1.eu-west-1.compute.amazonaws.com eu-west-1b worker
01: db01 i-d m1.medium ec2-x2.eu-west-1.compute.amazonaws.com eu-west-1b
02: web01 i-f m1.medium ec2-x3.eu-west-1.compute.amazonaws.com eu-west-1b web,app,db
在deploy.rb中:
ec2_roles name: :web, options: { default: true }
ec2_roles name: :app, options: { default: true }
ec2_roles name: :db, options: { default: true }
ec2_roles name: :worker, options: { default: true }
deploy.rb中有部分
task :start, roles: :app do
run "cd #{current_path} && bundle exec unicorn -c config/unicorn/production.conf.rb -E production -D"
end
有效,例如当我执行:cap deploy
时,它会运行并完成。
可能是什么问题? 我用谷歌和其他问题进行了搜索。但无法让它运行。 我没有使用多级btw和deploy.rb的gist文件:https://gist.github.com/ADogan/2121d312c5938746acd6
答案 0 :(得分:1)
对于具有角色的ec2实例:'web,app,db',您需要在AWS中添加一个带有单个值'primary'的'Options'标记。这相当于使用行:
的config / deploy / env.rbrole :db, "10.1.2.3", :primary => true
部署有效,因为如果没有匹配“db”角色的框,则它将跳过db:migrate,其中primary为true。您特别要求db:migrate,如果没有框来运行它将失败。