【问题标题】:deploy with capistrano failing部署 capistrano 失败
【发布时间】:2012-08-09 22:36:51
【问题描述】:

我有一个这样的capistrano taks

require "bundler/capistrano"

set :application, "cloudoc"
set :repository,  "git@github.com:luizkowalski/cloudoc.git"

set :scm, :git

role :web, "xx.xx.xx.xxx" 
role :app, "xx.xx.xx.xxx" 
role :db,  "xx.xx.xx.xxx", :primary => true

default_run_options[:pty] = true
ssh_options[:forward_agent] = true

after "deploy:restart", "deploy:cleanup"

set :user, "deploy"
set :use_sudo, true

set :deploy_to, "/home/deploy"
set :deploy_via, :remote_cache

role :web, "xx.xx.xx.xxx"
role :app, "xx.xx.xx.xxx"
role :db, "xx.xx.xx.xxx", :primary => true

cap deploy 之后是输出。
由于某种原因,他失败了,我不知道为什么。我已经尝试使用 use_sudo false 和 root,同样的事情发生了。

    [xx.xx.xx.xxx] executing command
    command finished in 4714ms
    copying the cached version to /home/deploy/releases/20120809223144
  * executing "cp -RPp /home/deploy/shared/cached-copy /home/deploy/releases/20120809223144 && (echo 61eeff328c40e104962f96bf6ffc5150bd1162e4 > /home/deploy/releases/20120809223144/REVISION)"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
    command finished in 604ms
  * executing `deploy:finalize_update'
    triggering before callbacks for `deploy:finalize_update'
  * executing `deploy:assets:symlink'
  * executing "rm -rf /home/deploy/releases/20120809223144/public/assets &&\\\n        mkdir -p /home/deploy/releases/20120809223144/public &&\\\n        mkdir -p /home/deploy/shared/assets &&\\\n        ln -s /home/deploy/shared/assets /home/deploy/releases/20120809223144/public/assets"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
    command finished in 544ms
  * executing `bundle:install'
  * executing "cd /home/deploy/releases/20120809223144 && bundle install --gemfile /home/deploy/releases/20120809223144/Gemfile --path /home/deploy/shared/bundle --deployment --quiet --without development test"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
    command finished in 1990ms
  * executing "chmod -R g+w /home/deploy/releases/20120809223144"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
    command finished in 1042ms
  * executing "rm -rf /home/deploy/releases/20120809223144/log /home/deploy/releases/20120809223144/public/system /home/deploy/releases/20120809223144/tmp/pids &&\\\n      mkdir -p /home/deploy/releases/20120809223144/public &&\\\n      mkdir -p /home/deploy/releases/20120809223144/tmp"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
    command finished in 534ms
  * executing "ln -s /home/deploy/shared/system /home/deploy/releases/20120809223144/public/system"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
    command finished in 517ms
  * executing "ln -s /home/deploy/shared/log /home/deploy/releases/20120809223144/log"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
    command finished in 519ms
  * executing "ln -s /home/deploy/shared/pids /home/deploy/releases/20120809223144/tmp/pids"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
    command finished in 521ms
    triggering after callbacks for `deploy:update_code'
  * executing `deploy:assets:precompile'
  * executing "cd /home/deploy/releases/20120809223144 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
 ** [out :: xx.xx.xx.xxx] Compiled jquery.js  (2ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled jquery_ujs.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-transition.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-alert.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-modal.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-dropdown.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-scrollspy.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-tab.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-tooltip.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-popover.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-button.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-collapse.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-carousel.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap/bootstrap-typeahead.js  (0ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled twitter/bootstrap.js  (247ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled ios-checkboxes/ios-checkboxes.js  (20642ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled ios-checkboxes.js  (22403ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled rails.validations.js  (418ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled best_in_place.js  (327ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled autosize.js  (76ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled bootstrap.js  (5870ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled dashboard.js  (1388ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled documents.js  (896ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled home.js  (377ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled sessions.js  (563ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Compiled application.js  (51370ms)  (pid 1075)
 ** [out :: xx.xx.xx.xxx] Killed
    command finished in 68972ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/deploy/releases/20120809223144; true"
    servers: ["xx.xx.xx.xxx"]
    [xx.xx.xx.xxx] executing command
    command finished in 612ms
failed: "sh -c 'cd /home/deploy/releases/20120809223144 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile'" on xx.xx.xx.xxx

有什么想法吗?
如果有人需要更多信息,请告诉我
在此先感谢

【问题讨论】:

  • 也许你内存不足?你看过dmesg的输出了吗?也许 OOM 杀手刚刚终止了你的 rake 任务?
  • 什么是dmseg?我怎么知道 OOM 是否正在这样做?
  • 只需 ssh 进入您的服务器并在终端中运行 dmesg。它将显示内核日志。如果有任何对OOM killer 的引用,您的内存就用完了。你也可以看看free 看看有多少内存。
  • 是的,你是对的:[ 3380.091822] Out of memory: Kill process 1075 (ruby1.9.1) score 382 or sacrifice child

标签: ruby-on-rails ruby ruby-on-rails-3 capistrano


【解决方案1】:

当 RAM 不足且进程使用大量 RAM 时,内核会主动终止进程。您可以使用dmesg 查看进程是否被内核杀死。会出现这样的消息:

[ 3380.091822] Out of memory: Kill process 1075 (ruby1.9.1) score 382 or sacrifice child

您可以激活交换空间或关闭其他进程。如果您在 VPS 上运行,请确保您有足够的可用 RAM。最简单的解决方案 - 如果问题确实是可用 RAM 短缺 - 就是购买更多 RAM。

【讨论】:

    【解决方案2】:

    我正在 Digital Ocean 上运行我的 rails 应用程序。创建一个 2gb 交换似乎可以解决问题。

    【讨论】:

    • 我也在 Digital Ocean 上,但是“创建 2gb 交换”到底是什么意思?
    • Catfish,您可以像这样轻松添加一些交换空间: "dd if=/dev/zero of=/tmp/swap.img bs=1M count=1024" 这将在/tmp/swap.ing 1G。然后可以调用“mkswap /tmp/swap.img”和“swapon /tmp/swap.img”
    • 我为我的 Ubuntu 14.04 droplet 遵循了本教程。效果很好:digitalocean.com/community/tutorials/…
    【解决方案3】:

    如果您使用的是亚马逊 EC2 微型实例,请尝试删除应用程序的旧版本,然后重新启动服务器实例。这对我有用。 帽部署:清理 盖胶:重启

    【讨论】:

      【解决方案4】:

      我遇到了这个错误,并意识到我正在存储我以前发布的所有版本。我只是使用了cap deploy:cleanup,效果很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多