从Rails重新加载Nginx而不中断请求

时间:2018-10-03 18:00:29

标签: ruby-on-rails ubuntu nginx

我有一个允许用户创建应用程序的Rails 4应用程序,一切正常,但是在确定应用程序部署程序时遇到了问题。

部署者执行一些逻辑,然后为新应用创建Nginx主机文件,并将其添加到Nginx sites-available,然后将其符号链接到sites-enabled。所有这些都很好,问题在于,要让Nginx知道这台新主机,就需要重新加载,我可以在部署过程中自动进行加载,但会中断请求。

这是流程:

1-用户单击“部署”按钮

2-Rails控制器操作执行逻辑,然后进行一些系统调用,包括重新加载Nginx。

3-浏览器返回一个502 Bad Gateway <-问题

然后,如果我重新加载页面,一切都很好,并且可以访问新应用。

如何防止这种情况?我尝试同时使用service nginx reloadkill -HUP $( cat /run/nginx.pid )并获得相同的结果。

有趣的是,如果我部署已经部署的应用程序(sites-available / sites-enabled中已经存在主机文件),则不会发生502错误的网关。

有什么想法吗?

编辑

在Nginx重新加载后添加3秒sleep似乎可以解决此问题,目前可以解决,但这并不是最好的解决方案,因此欢迎更好的想法!

0 个答案:

没有答案