为什么我的 Capistrano 失败了?

3

好的,我有一个新的EC2实例已经设置好了,我使用用户ec2-user进行ssh登录,然后在我的本地机器上运行了检查命令。

cap deploy:check
  * executing `deploy:check'
  * executing "test -d /var/www/projects/releases"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
    command finished in 101ms
  * executing "test -w /var/www/projects"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
    command finished in 106ms
  * executing "test -w /var/www/projects/releases"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
    command finished in 103ms
  * executing "which git"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
    command finished in 104ms
You appear to have all necessary dependencies installed

所有看起来都没问题,但是当我执行cap deploy时,在最后出现了这个错误。
 [50.19.84.170] executing command
    command finished in 150ms
failed: "sh -c 'rm -f /var/www/projects/current && ln -s /var/www/projects/releases/20120123133717 /var/www/projects/current'" on 50.19.84.170

然后我查看发行版目录中是否有任何内容,但是没有。

 ls -la /var/www/projects/releases/total 8
drwxrwxr-x 2 ec2-user ec2-user 4096 Jan 23 13:37 .
drwxrwxr-x 5 ec2-user ec2-user 4096 Jan 20 03:03 ..

我不确定自己做错了什么...这是我的deploy.rb文件:

set :application, "projects"
set :deploy_to, "/var/www/#{application}"
set :keep_releases, 3

set :scm, :git
set :repository,  "git@github.com:railsdevmatt/fat_free_crm.git"
set :git_shallow_clone, 1
set :branch, "master"
set :use_sudo, true

set :user, "ec2-user"
ssh_options[:forward_agent] = true
default_run_options[:pty] = true

role :app, "50.19.84.170"
role :web, "50.19.84.170"
role :db,  "50.19.84.170", :primary => true

after "deploy:setup", :fix_perms
after "deploy:update_code", :fix_perms

# ssh_options[:keys] = ["#{ENV['HOME']}/Downloads/important.pem"]

task :fix_perms do
  # sudo "chown apache:webshare -R /var/www/projects"
  # sudo "chmod 666 -R /var/www/projects/shared/log/*"
end

您有什么想法需要更改吗?

更新

以下是我的全部输出结果

cap deploy
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote git@github.com:railsdevmatt/fat_free_crm.git master"
/Library/Ruby/Gems/1.8/gems/capistrano-2.6.0/lib/capistrano/recipes/deploy.rb:104: warning: Insecure world writable dir /Users/mattelhotiby in PATH, mode 040777
    command finished in 1061ms
  * executing "git clone -q --depth 1 git@github.com:railsdevmatt/fat_free_crm.git /var/www/projects/releases/20120123144652 && cd /var/www/projects/releases/20120123144652 && git checkout -q -b deploy 65b439e201c2134fc97ee10a4ea66174018d8553 && (echo 65b439e201c2134fc97ee10a4ea66174018d8553 > /var/www/projects/releases/20120123144652/REVISION)"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
    command finished in 1898ms
  * executing `deploy:finalize_update'
  * executing "chmod -R g+w /var/www/projects/releases/20120123144652"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
    command finished in 123ms
  * executing "rm -rf /var/www/projects/releases/20120123144652/log /var/www/projects/releases/20120123144652/public/system /var/www/projects/releases/20120123144652/tmp/pids &&\\\n      mkdir -p /var/www/projects/releases/20120123144652/public &&\\\n      mkdir -p /var/www/projects/releases/20120123144652/tmp &&\\\n      ln -s /var/www/projects/shared/log /var/www/projects/releases/20120123144652/log &&\\\n      ln -s /var/www/projects/shared/system /var/www/projects/releases/20120123144652/public/system &&\\\n      ln -s /var/www/projects/shared/pids /var/www/projects/releases/20120123144652/tmp/pids"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
    command finished in 133ms
  * executing "find /var/www/projects/releases/20120123144652/public/images /var/www/projects/releases/20120123144652/public/stylesheets /var/www/projects/releases/20120123144652/public/javascripts -exec touch -t 201201231446.55 {} ';'; true"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
 ** [out :: 50.19.84.170] find: `/var/www/projects/releases/20120123144652/public/images': No such file or directory
 ** [out :: 50.19.84.170] find: `/var/www/projects/releases/20120123144652/public/stylesheets': No such file or directory
 ** [out :: 50.19.84.170] find: `/var/www/projects/releases/20120123144652/public/javascripts': No such file or directory
    command finished in 111ms
    triggering after callbacks for `deploy:update_code'
  * executing `fix_perms'
  * executing "sudo -p 'sudo password: ' chown apache:webshare -R /var/www/projects"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
    command finished in 136ms
  * executing "sudo -p 'sudo password: ' chmod 666 -R /var/www/projects/shared/log/*"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
 ** [out :: 50.19.84.170] chmod: cannot access `/var/www/projects/shared/log/*': No such file or directory
    command finished in 119ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/projects/releases/20120123144652; true"
    servers: ["50.19.84.170"]
    [50.19.84.170] executing command
    command finished in 145ms
failed: "sh -c 'sudo -p '\\''sudo password: '\\'' chmod 666 -R /var/www/projects/shared/log/*'" on 50.19.84.170

这里是那个目录。
 ls -la /var/www/projects/shared/
total 20
drwxrwxr-x 5 apache webshare 4096 Jan 23 13:32 .
drwxrwxr-x 5 apache webshare 4096 Jan 20 03:03 ..
drwxrwxr-x 2 apache webshare 4096 Jan 20 03:31 log
drwxrwxr-x 2 apache webshare 4096 Jan 23 13:32 pids
drwxrwxr-x 2 apache webshare 4096 Jan 23 13:32 system

请展示完整的Capistrano输出。虽然失败报告在最后,但原因通常早在之前就被埋藏了。 - Michał Kwiatkowski
1个回答

2
因此,从输出结果中可以看出:
chmod: cannot access `/var/www/projects/shared/log/*': No such file or directory

创建那些缺失的目录并确保它们的权限正确。

好问题...如果我以ec2-user身份通过ssh登录,但文件夹是apache:webshare,我应该将它们更改为ec2-user还是ec2-user可以读写apache:webshare? - Matt Elhotiby
如果将ec2-user添加到“webshare”组中,则他将能够更改这些内容,否则不能。哦,而且请尝试使用chmod 666 -R /var/www/projects/shared/log代替chmod 666 -R /var/www/projects/shared/log/*- 如果没有日志,您将不会收到错误。 - Michał Kwiatkowski
发现...抱歉...这是最后一个错误失败了:"sh -c 'sudo -p '\''sudo password: '\'' -u app /var/www/projects/current/script/process/reaper" - Matt Elhotiby
请提供更多上下文,我无法在这一行中看到错误。最好再次更新您的问题。 - Michał Kwiatkowski
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/6964/discussion-between-tamer-and-michal-kwiatkowski - Matt Elhotiby
请点击我添加的链接,在讨论区中查看我的问题。 - Matt Elhotiby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接