如何在部署后自动重启nginx和乘客

时间:2013-02-16 22:48:42

标签: ruby-on-rails nginx capistrano passenger

我目前在虚拟专用服务器上部署了一个rails应用程序。

我使用Capistrano,Nginx和乘客在服务器上运行我的rails应用程序。

出于某种原因,在完成上限部署后,我永远无法在网站上显示更新的代码:更新。

部署运行良好,甚至可以通过Vim在实时服务器上看到代码,但如果我导航到实际站点,则无法显示。

我目前的解决方法是重启服务器,在服务器启动后启动nginx和passenger。

我担心的是,如果有人在部署和重新启动时登录到该站点,它将会将其从网站上删除。

有没有人有任何想法

2 个答案:

答案 0 :(得分:17)

如果您从rails根目录运行touch tmp/restart.txt,乘客将重新启动该应用。你不应该重新启动nginx。在restart.txt文件的时间戳更改后,Passenger将重新启动以进行下一个请求。如果您的应用需要一段时间才能启动,您可能需要在触摸文件后立即发出请求来强制执行此操作。

您无需担心会有人离开网站,如果正在处理请求,则无法重新启动服务器。

答案 1 :(得分:0)

如果您仍然遇到问题,可以使用Monit gem,在capstraino中它的效果非常好。