1

我有一个 Rails 应用程序,我正在尝试使用 Capistrano 部署到 ec2 实例。我的deploy.rb

set :application, "uc_social_server"
set :repository,  "septerr@bitbucket.org/urbancoding/uc_social_server.git"
set :user, "ec2-user"
server "ec2-23-22-188-11.compute-1.amazonaws.com", :app, :web, :db, :primary => true
set :deploy_to, "/home/ec2-user/uc_social_server"
ssh_options[:keys] = %w(/Users/sony/.ssh/ec2-social-server-key.pem)
default_run_options[:pty] = true

运行cap deploy:check失败:

The following dependencies failed. Please check them and try again:
--> You do not have permissions to write to `/home/ec2-user/uc_social_server/releases'. (ec2-23-22-188-11.compute-1.amazonaws.com)

我尝试了一些在stackoverflow上找到的解决方案,但没有成功。使用 capistrano 部署到 ec2 的正确方法是什么?

4

1 回答 1

5

终于弄清楚了问题所在。

cap deploy:setup默认情况下,root 是它创建的文件夹的所有者。

因此,在您运行之前,cap deploy:setup您必须记住添加set :use_sudo, false到您的 deploy.rb(或您正在使用的 capistrano 脚本文件)。

如果像我一样,您已经运行了 setup 命令,导致 areleasesshared文件夹具有 root 所有权,

  1. ssh 到您的 ec2 机器并删除这些文件夹
  2. 添加 set :use_sudo, false到您的 capistrano 脚本(在我的情况下为 deploy.rb)
  3. cap deploy:setup

现在 capistrano 应该已经使用您在 capistrano 脚本中指定的用户作为所有者创建了releases和文件夹。shared

cap deploy:check现在应该成功了。

于 2013-07-30T20:54:20.900 回答