capistrano部署后执行systemctl



我想在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命令,而无需输入密码。您可以/应该将此权限限制在特定资源上。我添加了restartstatus作为示例。

deploy ALL=NOPASSWD:/bin/systemctl restart unit.serivce, /bin/systemctl status unit.serivce

作为参考,请参阅Capistrano Auth

想在我们的社区NGINX频道上谈谈您的capistrano配置。

最新更新