我想在Capistrano
部署后重新启动Nginx-unit
namespace :deploy do
desc 'Collec Static Files'
task :collectImg do
on roles(:app) do
execute "sudo systemctl restart unit"
end
end
after :publishing, :collectImg
end
在上面的代码之后,会出现这样的错误日志。
有什么好的方法可以在部署脚本中使用systemctl吗???
DEBUG [08ce969a] Command: sudo systemctl restart unit
DEBUG [08ce969a] sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
First-很好,您可以将NGINX单元与Capistrano一起使用!
这个问题一次涉及几个问题。
1.启用tty模式
将其添加到部署配置deploy.rb
中。Capistrano 3。
set :pty, true
关于PTY 的更多信息
2.在应用服务器上修改您的sudoers文件
您必须允许部署用户执行sudo命令,而无需输入密码。您可以/应该将此权限限制在特定资源上。我添加了restart
和status
作为示例。
deploy ALL=NOPASSWD:/bin/systemctl restart unit.serivce, /bin/systemctl status unit.serivce
作为参考,请参阅Capistrano Auth
想在我们的社区NGINX频道上谈谈您的capistrano配置。