Назад | Перейти на главную страницу

Кому должен принадлежать божественный процесс?

У меня есть стек, работающий на ubuntu, состоящий из приложения Rack, написанного на Sinatra и GrapeAPI. Стек приложений включает Redis, Postgres, Nginx и единорог. Я хочу использовать God для мониторинга процессов.

В настоящее время развертывание выполняется пользователем развертывания через git. Этот пользователь развертывания не является sudoer. Мой вопрос: кому должен принадлежать божественный процесс? Что лучше - запустить этот процесс как sudoer или как пользователь развертывания?

Запуск от имени пользователя развертывания загрузит rbenv, позволяя запускать единорога, однако пользователь развертывания не имеет доступа sudo, поэтому не сможет запускать сценарии init.d.

С другой стороны, когда я работаю как другой пользователь, пользователь развертывания, тогда бог не имеет доступа к пакету exec, предоставляемому rbenv, и поэтому не может запускать процессы единорога, если они выходят из строя.

Бог-процесс должен управляться сценариями выскочки, поэтому запускать его от имени пользователя sudo. Это стало возможным благодаря заглушкам. Заглушка - это прокладка к исполняемому модулю, установленному драгоценным камнем. Заготовки бункеров предоставляются сборщиком. Они позволяют запускать файлы bin из любого места в системе. Для этого обязательно добавлять пути rbenv в сценарии выскочки.

export PATH=/home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:$PATH
eval "$(rbenv init -)"
export BUNDLE_GEMFILE=$APPLICATION_ROOT/Gemfile

После этого любой прямой вызов binstubs загрузит ваш пакет и будет работать правильно. С помощью этого шаблона можно использовать выскочку для запуска unicorn и resque. Это делает весь ваш стек исполняемым с выскочкой, а конфигурация бога - трудной задачей, потому что все, что вам нужно сделать, это вызвать свои сценарии выскочки. HTH.