我有一个 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
,但没有效果。
有任何想法吗?