我有一个EC2设置,我有一个厨师脚本,用独角兽设置一个rails应用程序。由于我正在使用application_ruby脚本,它使用runit在启动时启动Unicorn,我遇到了这个问题,我需要在使用sudo sv once app
启动后手动禁用runit。否则,runit将干扰Unicorn的零停机部署,并开始产生新的独角兽主机,这些主机会一直出错,这反过来会阻止未来的Unicorn重启。
所以我一直在寻找一种方法让runit只启动初始的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
的末尾,但这没有效果。
有什么想法吗?
答案 0 :(得分:0)
您可以直接从运行脚本中调用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