为什么capistrano在部署期间中止?

时间:2013-08-07 19:19:21

标签: ruby node.js capistrano

我与Capistrano的第一天,我是一个完整的Ruby noob。当我跑cap production deploy时,我得到:(大约一半下来,你会看到“上限被中止!”)

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和过滤器的文档中没有看到任何内容。

不知道在这里知道哪些其他信息是相关的,所以如果我遗漏了任何信息,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分: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 中提供app角色的服务器上执行此方法。我认为你没有为这个角色分配任何服务器,所以capistrano抱怨它没有任何地方可以运行这个任务。现在,您可以修改此任务以在另一个角色上运行。但是,与链接文件和目录相关的预定义任务也会引用app角色,因此如果您开始使用它们(例如,对于database.yml),capistrano将再次抛出此错误。因此,我认为更好的选择是为您的服务器提供应用程序角色。