我正在使用Capistrano 3部署我的Rails应用程序。我一直在努力,但现在一切都已完成,我无法通过Capistrano任务创建符号链接。
使用Capistrano 2.x我可以使用以下行轻松完成:
sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"
现在,Capistrano 3提倡passwordless sudo
方法here。
我已将以下行添加到sudoers
deployer ALL=NOPASSWD:/etc/init.d/sites-enabled/application-name
并将我在Capistrano任务中的命令更改为:
execute :sudo, :ln, "-nfs", "#{current_path}/nginx.conf /etc/nginx/sites-enabled/#{fetch(:application)}"
我错过了什么?我添加到sudoers
的行是否正确?
谢谢!
答案 0 :(得分:3)
Alex,当你编辑sudoers
时,你应该列出你想要执行的命令(而不是你想要符号链接的文件)。
因此,sudoers
中的行应如下所示:
deployer ALL=NOPASSWD:/bin/ln -nfs /current/path/config/nginx.conf /etc/nginx/sites-enabled/application-name
你也可以使它更通用:
deployer ALL=NOPASSWD:/bin/ln -nfs /current/path/* /etc/nginx/sites-enabled/*
但安全性会降低。