卡皮斯特拉诺重新启动阿帕奇


Capistrano Restart Apache

我正在使用Capistrano来部署PHP应用程序。我正在尝试添加在完成后重新启动 Apache 的功能,但随后我的脚本挂起(我猜是因为它失去了与 Web 服务器的连接)。有没有办法发送service httpd restart命令并返回而无需等待?这是我正在做的事情(相关部分)...

namespace :myapp do
   task :restart_webserver do
      #Show Start of Task
      print "Restarting webserver..."
      # Restart Web Server
      run "service httpd restart"
      # Show Green Check Mark on Completion
      puts checkmark.gsub(/''u['da-f]{4}/i) { |m| [m[-4..-1].to_i(16)].pack('U') }.green
   end
end
after "deploy","myapp:restart_webserver"

它在重新启动时挂起,然后我必须Ctrl+C脚本才能结束。有什么方法可以使这种不阻塞吗?

由于我无法添加注释,因此应用程序以哪个用户身份运行?如果您以 root 用户身份登录,则此命令将正常工作。否则,您将需要通过 sudo 运行它,例如

run "#{sudo} service httpd restart"

并可能将 NOPASSWD:/sbin/service httpd* 添加到您的 sudoers 文件中。

您可能希望覆盖重新启动而不是 Web 挂钩:

namespace :deploy do
task :restart, :except => { :no_release => true } do
  myapp.restart_webserver
end
end

另外,考虑在钩子后拧紧你:

在"部署:重新启动"、"MyApp:restart_webserver"之后