Выполнить пакет exec из init.d с помощью rbenv - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь настроить God для 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 /

Если я правильно понимаю, пакет не выполняется из каталога, содержащего пакет, и выдает эту ошибку.Как я могу сказать, что bundler должен выполняться из моего APP_DIR из сценария init.d?

Пожалуйста, помните, что раньше я использовал 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

РЕДАКТИРОВАТЬ:

Похоже, что rbenvне инициализируется правильно.Когда в скрипте я переключаюсь на

sudo -u ec2-user cd ${HEPHAISTOS_DIR} && ${RBENV_EXEC} local 2.3.3

Он говорит, что 2.3.3 не установлен, но когда я вызываю команду из оболочки входа, она работает.

...