我正在使用 Chef 来管理使用 Mongrel 集群运行的 Rails 应用程序的部署。
我的init.d
文件很简单。这是重新启动的情况:
restart)
sudo su -l myuser -c "cd /path/to/myapp/current && mongrel_rails cluster::restart"
;;
我可以毫无问题地service myapp restart
运行root
。我可以毫无问题地mongrel_rails cluster::restart
运行myuser
。
但是,当我通过 Chef 进行部署时,tmp/pids/mongrel.port.pid
文件不会被清理(导致所有未来的重新启动都失败)。
Chef 只是简单地执行以下操作来执行重新启动:
service "myapp" do
action :restart
end
该init.d
脚本肯定会被调用,因为日志都具有预期的输出(当然,在 pid 文件上爆炸除外)。
我错过了什么?