2012-08-09 61 views
6

部署我有一个Capistrano的TAKS这样与Capistrano的失败

require "bundler/capistrano" 

set :application, "cloudoc" 
set :repository, "[email protected]: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 

有什么想法?
如果有人需要更多的信息,请让我知道提前

+0

也许你是内存不足?你看过'dmesg'的输出了吗?也许OOM杀手只是终止了你的耙子任务? – iblue 2012-08-09 22:40:54

+0

什么是dmseg?我怎么知道OOM是否在做这个? – 2012-08-09 22:42:07

+2

只需将ssh放入服务器并在终端中运行'dmesg'即可。它会显示内核日志。如果有任何关于“OOM杀手”的提法,你就跑出了内存。你也可以看看'free'来看看有多少ram。 – iblue 2012-08-09 22:44:27

回答

18


由于内核主动注销过程时,RAM短,工艺使用多的内存。您可以使用dmesg来查看进程是否被内核杀死。这样的消息将出现:

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

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

1

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

8

我在Digital Ocean上运行我的rails应用程序。创建一个2GB交换似乎解决了这个问题。

+0

我在数字海洋也是如此,但是“创建2GB交换”意味着什么? – Catfish 2014-08-13 04:42:11

+0

鲶鱼,你可以很容易地添加一些像这样的交换空间:“dd if =/dev/zero of =/tmp/swap.img bs = 1M count = 1024”这将在/tmp/swap.ing中创建一个空文件1G。然后,你可以调用“mkswap /tmp/swap.img”和“swapon /tmp/swap.img” – 2014-10-02 13:37:48

0

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