我正在尝试在 AWS-EC2 实例上使用 Capistrano 部署 Rails 应用程序,默认用户 (Ubuntu) 在另一个用户的家中,但它给了我“权限被拒绝”错误。这是我的代码:
server "9.9.9.9", :web, :app, :db, primary: true
set :application, "some_app"
set :user, "ubuntu"
set :keep_releases, 3
set :location, "9.9.9.9"
ssh_options[:keys] = ["~/Keys/serverkey.pem"]
ssh_options[:forward_agent] = true
default_run_options[:pty] = true
set :use_sudo, false
task :hello do
run "echo 'Hello World' > /home/other_user/i_was_here.txt"
end
这是输出:
$ cap hello
* 2013-03-22 14:11:29 executing `hello'
* executing "echo 'Hello World' > /home/other_user/i_was_here.txt"
servers: ["9.9.9.9"]
[9.9.9.9] executing command
** [out :: 9.9.9.9] sh: cannot create /home/other_user/i_was_here.txt: Permission denied
command finished in 798ms
failed: "sh -c 'echo '\\''Hello World'\\'' > /home/other_user/i_was_here.txt'" on 9.9.9.9
有什么问题?目的是为另一个用户部署 Rails App,所以我有一些疑问:
- 有没有办法直接与其他用户在 AWS-EC2 实例上部署 Rails 应用程序?
- 如果 #1 的答案是“否”,那么使用默认用户 Ubuntu 为其他用户部署 Rails 应用程序的正确方法是什么?(因为将来其他用户尝试访问应用程序时不会出现权限问题)
在服务器中管理着许多用户,因为我们想为每个用户获取存储和带宽,所以我们这样做了,直到今天我们从 Capistrano 开始哈哈。
提前致谢。