2013-12-16 141 views
5

当我做bundle exec cap production deploy,我得到错误信息像mkdir: cannot create directory /usr/share/nginx/www/appname/releases/20131216155457: Permission denied当Capistrano3做的mkdir,权限被拒绝

Capistrano3没有set use_sudodefault_run_options。我读了无密码sudo更好,所以我做了visudo username ALL=NOPASSWD:ALL,但我仍然有同样的错误。

set :application, 'appname.com' 
set :repo_url, '[email protected]:user/myapp.git' 
set :user, 'username' 
set :branch, 'master' 


set :deploy_to, '/usr/share/nginx/www/appname' 
set :keep_releases, 5 

namespace :deploy do 

desc 'Restart application' 
task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
    end 
end 

after :restart, :clear_cache do 
    on roles(:web), in: :groups, limit: 3, wait: 10 do 
    end 
end 

after :finishing, 'deploy:cleanup' 

end 

有没有人给我任何建议围绕这个问题? 谢谢你的帮助。

+0

你有没有首先运行'cap production deploy:setup'?所有的父目录都存在吗? – iltempo

+0

Capistrano3似乎没有'cap production deploy:setup'。但我没有'cap production deploy:check',并且检查了所有父目录的存在。 –

+0

@YukiIshikawa并且所有的权限是否正确?作为“用户名”,你可以自己创建该目录,一旦ssh进入? –

回答

5

尝试将appname文件夹

chown deployer:www-data -R /usr/share/nginx/www/appname

这里部署是你部署的用户和组的组和所有者是用户组

0

应该

chown username:groupname -R /path/to/project