在Capistrano 3.x中使用sudo创建符号链接

时间:2014-01-27 19:44:15

标签: ruby-on-rails capistrano

我正在使用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的行是否正确?

谢谢!

1 个答案:

答案 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/*

但安全性会降低。