1

我有一个 EC2 设置,其中有一个厨师脚本,可以设置一个带有独角兽的 Rails 应用程序。由于我使用的是application_ruby脚本,该脚本使用runit在启动时启动 Unicorn,我遇到了这个问题,我需要在启动后手动禁用 runit sudo sv once app。否则,runit 将干扰 Unicorn 的零停机时间部署,并开始生成新的 unicorn 主机,这些主机会不断出错,从而阻止未来的 Unicorn 重启。

所以我一直在寻找一种方法,让 runit 只启动初始 Unicorn 实例,然后不对其进行监督,这样当部署脚本重新启动原始 Unicorn 实例时,它不会自动生成新的 Unicorn 实例。目前,我的/etc/sv/app/run样子如下:

#!/bin/bash

cd /home/deployer/app/current

exec 2>&1
exec /usr/bin/chpst \
  -u deployer:deployer \
  bundle exec \
  unicorn \
 -E production \
 -c /etc/unicorn/app.rb

我现在必须做的是手动调用sudo sv once app以防止 runit 稍后吓坏,但我不想手动执行此操作。我尝试添加sv once app到我的末尾/etc/sv/app/run,但没有效果。

有任何想法吗?

4

1 回答 1

1

您可以sv o app直接从运行脚本调用以将其更改为预期模式。修改你所拥有的:

#!/bin/bash

cd /home/deployer/app/current
sv o app
exec 2>&1
exec /usr/bin/chpst \
  -u deployer:deployer \
  bundle exec \
  unicorn \
 -E production \
 -c /etc/unicorn/app.rb
于 2018-07-27T19:25:42.123 回答