使用cap deploy:setup创建目录时权限被拒绝

时间:2012-02-04 16:42:47

标签: symfony capifony

我正在尝试设置我的生产服务器以进行保留。 我已经设置了我的deploy.rb:

set :application,   "myappname"
set :domain,        "#{application}.eu"
set :deploy_to,     "/#{application}"   # I don't know if this is correct?

default_run_options[:pty] = true
#set :repository,   "#{domain}:/var/repos/#{application}.git"
set :repository,    "/home/username/myappname"
set :scm,           :git
set :deploy_via,    :rsync_with_remote_cache

set :model_manager, "doctrine"

role :web,        domain                        
role :app,        domain                         
role :db,         domain, :primary => true       

set  :keep_releases,  3

set  :user,       "mylogintossh"
set  :use_sudo,   false

它正在尝试创建/ myappname / myappname / releases / myappname / shared / myappname / shared / app / logs / myappname / shared / web / uploads

但是许可被拒绝了。 我在这做错了什么? :) THX。

2 个答案:

答案 0 :(得分:1)

您确定用户mylogintossh是否有权在那里创建目录?尝试登录并检查该目录的权限。

作为一种解决方法,您可以将用户置于sudoers并将use_sudo设置为true或将/myappname的权限设置为777

答案 1 :(得分:0)

您可以添加

set :admin_runner, "my_apps_username"

在config / deploy.rb中。或者,您可以覆盖deploy:setup任务,如下所示:

namespace :deploy do
  task :setup, :except => { :no_release => true } do
    dirs = [deploy_to, releases_path, shared_path]
    dirs += shared_children.map { |d| File.join(shared_path, d.split('/').last) }
    run "mkdir -p #{dirs.join(' ')}"
    run "chmod g+w #{dirs.join(' ')}" if fetch(:group_writable, true)
  end
end