我正在尝试为我部署到服务器的辅助应用程序设置God for Ruby。想法是,如果服务器重新启动,上帝将自动重新启动/报告我的过程状态。
这是我正在使用的init.d脚本
#!/bin/bash
#
# god Startup script for God monitoring tool.
#
# chkconfig: - 85 15
# description: god monitors your system
#
# Install with
# sudo chmod +x /etc/init.d/god
# sudo chkconfig --add god
# sudo chkconfig god on
#
HEPHAISTOS_DIR=/home/xxx
RBENV_EXEC=/home/ec2-user/.rbenv/bin/rbenv
start() {
sudo -u ec2-user \
${RBENV_EXEC} exec bundle exec god start -c ${HEPHAISTOS_DIR}/config/god/god.rb
}
stop() {
sudo -u ec2-user \
${RBENV_EXEC} exec bundle exec god stop -c ${HEPHAISTOS_DIR}/config/god/god.rb
}
status() {
sudo -u ec2-user \
${RBENV_EXEC} exec bundle exec god status -c ${HEPHAISTOS_DIR}/config/god/god.rb
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: god {start|stop|restart|status}"
exit 1
;;
esac
exit 0
当前抛出
找不到Gemfile或.bundle /目录
如果我很好理解,则不会从包含捆绑软件的目录中执行捆绑软件,并会引发此错误。如何告诉捆绑程序从init.d脚本的APP_DIR中执行?
请不要以为以前我使用的是RVM,我可以使用此技巧(效果很好)
sudo -u ec2-user ${RVM_EXEC} in ${HEPHAISTOS_DIR} do bundle exec god start -c ${HEPHAISTOS_DIR}/config/god/god.rb
({rvm in [dir] [cmd]
由rvm提供)
注意:我正在尝试从Amazon Linux 2 OS执行此脚本
编辑:
似乎rbenv没有正确初始化。在脚本中,我切换到
sudo -u ec2-user cd ${HEPHAISTOS_DIR} && ${RBENV_EXEC} local 2.3.3
它说没有安装2.3.3,但是当我从登录shell调用命令时,它可以工作。