1

我在 Capistrano 的第一天,我完全是 Ruby 菜鸟。当我跑步时,cap production deploy我得到:(大约在中途你会看到“cap aborted!”)

DEBUG Uploading /tmp/git-ssh.sh 0.0%
 INFO Uploading /tmp/git-ssh.sh 100.0%
 INFO [a4358a68] Running /usr/bin/env chmod +x /tmp/git-ssh.sh on 205.149.129.67
DEBUG [a4358a68] Command: /usr/bin/env chmod +x /tmp/git-ssh.sh
 INFO [a4358a68] Finished in 0.094 seconds command successful.
 INFO [7e2d6b30] Running /usr/bin/env git ls-remote git@github.com:johnnyfreeman/ng-phrases-node.git on 205.149.129.67
DEBUG [7e2d6b30] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/git-ssh.sh /usr/bin/env git ls-remote git@github.com:johnnyfreeman/ng-phrases-node.git )
DEBUG [7e2d6b30]    870ca21b256ec53ffba50da1d8ecf7cb4c36e561
DEBUG [7e2d6b30]        
DEBUG [7e2d6b30]    HEAD
DEBUG [7e2d6b30]    
DEBUG [7e2d6b30]    870ca21b256ec53ffba50da1d8ecf7cb4c36e561
DEBUG [7e2d6b30]        
DEBUG [7e2d6b30]    refs/heads/master
DEBUG [7e2d6b30]    
 INFO [7e2d6b30] Finished in 2.289 seconds command successful.
 INFO [982c4c8c] Running /usr/bin/env mkdir -pv /home/deploy/ng-phrases-node/shared /home/deploy/ng-phrases-node/releases on 205.149.129.67
DEBUG [982c4c8c] Command: /usr/bin/env mkdir -pv /home/deploy/ng-phrases-node/shared /home/deploy/ng-phrases-node/releases
 INFO [982c4c8c] Finished in 1.084 seconds command successful.
DEBUG [b52bf507] Running /usr/bin/env [ -f /home/deploy/ng-phrases-node/repo/HEAD ] on 205.149.129.67
DEBUG [b52bf507] Command: [ -f /home/deploy/ng-phrases-node/repo/HEAD ]
DEBUG [b52bf507] Finished in 1.151 seconds command successful.
 INFO The repository mirror is at /home/deploy/ng-phrases-node/repo
DEBUG [5a6d473a] Running /usr/bin/env if test ! -d /home/deploy/ng-phrases-node/repo; then echo "Directory does not exist '/home/deploy/ng-phrases-node/repo'" 1>&2; false; fi on 205.149.129.67
DEBUG [5a6d473a] Command: if test ! -d /home/deploy/ng-phrases-node/repo; then echo "Directory does not exist '/home/deploy/ng-phrases-node/repo'" 1>&2; false; fi
DEBUG [5a6d473a] Finished in 1.022 seconds command successful.
 INFO [ebde0a3b] Running /usr/bin/env git remote update on 205.149.129.67
DEBUG [ebde0a3b] Command: cd /home/deploy/ng-phrases-node/repo && /usr/bin/env git remote update
DEBUG [ebde0a3b]    Fetching origin
DEBUG [ebde0a3b]    
 INFO [ebde0a3b] Finished in 1.485 seconds command successful.
DEBUG [42faf760] Running /usr/bin/env if test ! -d /home/deploy/ng-phrases-node/repo; then echo "Directory does not exist '/home/deploy/ng-phrases-node/repo'" 1>&2; false; fi on 205.149.129.67
DEBUG [42faf760] Command: if test ! -d /home/deploy/ng-phrases-node/repo; then echo "Directory does not exist '/home/deploy/ng-phrases-node/repo'" 1>&2; false; fi
DEBUG [42faf760] Finished in 1.195 seconds command successful.
 INFO [7c34b6a2] Running /usr/bin/env git clone --branch master --depth 1 --recursive --no-hardlinks /home/deploy/ng-phrases-node/repo /home/deploy/ng-phrases-node/releases/20130807190743 on 205.149.129.67
DEBUG [7c34b6a2] Command: cd /home/deploy/ng-phrases-node/repo && ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/git-ssh.sh /usr/bin/env git clone --branch master --depth 1 --recursive --no-hardlinks /home/deploy/ng-phrases-node/repo /home/deploy/ng-phrases-node/releases/20130807190743 )
DEBUG [7c34b6a2]    warning: --depth is ignored in local clones; use file:// instead.
DEBUG [7c34b6a2]    
DEBUG [7c34b6a2]    Cloning into '/home/deploy/ng-phrases-node/releases/20130807190743'...
DEBUG [7c34b6a2]    
DEBUG [7c34b6a2]    done.
DEBUG [7c34b6a2]    
 INFO [7c34b6a2] Finished in 0.259 seconds command successful.
 INFO [e945e1c7] Running /usr/bin/env rm -rf /home/deploy/ng-phrases-node/current on 205.149.129.67
DEBUG [e945e1c7] Command: /usr/bin/env rm -rf /home/deploy/ng-phrases-node/current
 INFO [e945e1c7] Finished in 1.062 seconds command successful.
 INFO [51d6629e] Running /usr/bin/env ln -s /home/deploy/ng-phrases-node/releases/20130807190743 /home/deploy/ng-phrases-node/current on 205.149.129.67
DEBUG [51d6629e] Command: /usr/bin/env ln -s /home/deploy/ng-phrases-node/releases/20130807190743 /home/deploy/ng-phrases-node/current
 INFO [51d6629e] Finished in 0.074 seconds command successful.
cap aborted!
Your filter `(no filter)` would remove all matching servers
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/configuration/servers.rb:73:in `filtered_servers'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/configuration/servers.rb:53:in `filter'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/configuration/servers.rb:48:in `fetch_roles'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/configuration/servers.rb:17:in `roles_for'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/configuration.rb:41:in `roles_for'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/dsl/env.rb:39:in `roles'
/home/johnny/Projects/ng-phrases-node/Capfile:30:in `block (2 levels) in <top (required)>'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/dsl.rb:14:in `invoke'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/tasks/deploy.rake:18:in `block (2 levels) in <top (required)>'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/dsl.rb:14:in `invoke'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/tasks/framework.rake:66:in `block (2 levels) in <top (required)>'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/tasks/framework.rake:65:in `each'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/tasks/framework.rake:65:in `block in <top (required)>'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/lib/capistrano/application.rb:12:in `run'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/gems/capistrano-3.0.0.pre14/bin/cap:3:in `<top (required)>'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `load'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `<main>'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
/home/johnny/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => deploy:restart
(See full trace by running task with --trace)

我真的不确定这里的问题是什么,我在文档中没有看到任何关于 Capistrano 和过滤器的内容。

不确定还有哪些其他信息与此处相关,所以如果我遗漏了任何内容,请告诉我。

谢谢!

4

1 回答 1

0

Capistrano 3 的部署任务依赖于名为 deploy:restart 的任务。与默认部署流程中的其他任务不同,deploy:restart 的行为不是为您预定义的;您需要根据您使用的应用程序服务器对其进行自定义。当您运行时,cap install会创建一个骨架任务供您在 Capfile 中进行编辑,如下所示。

desc 'Restart application'
task :restart do
  on roles(:app), in: :sequence, wait: 5 do
    # Your restart mechanism here, for example:
    # execute :touch, release_path.join('tmp/restart.txt')
  end
end

on roles(:app)告诉 capistrano 在您在config/deploy/production.rb中赋予应用角色的服务器上执行此方法。我认为您没有为任何服务器分配此角色,因此 capistrano 抱怨它没有任何地方可以运行此任务。现在,您可以修改此任务以在另一个角色上运行。但是,与链接文件和目录相关的预定义任务也涉及应用角色,因此如果您开始使用它们(例如,对于 database.yml),capistrano 会再次抛出此错误。因此,我认为更好的选择是给你的服务器应用角色。

于 2013-08-29T23:47:52.957 回答