Кто должен владеть процессом бога?
У меня есть стек, работающий на Ubuntu, состоящий из приложения Rack, написанного на Sinatra и GrapeAPI. Стек приложений включает в себя Redis, Postgres, Nginx и Unicorn. Я хочу использовать Бога для управления процессом мониторинга.
В настоящее время развертывание выполняется пользователем развертывания через git. Этот пользователь развертывания не является sudoer. Мой вопрос: кто должен владеть процессом бога? Лучше ли запускать этот процесс как sudoer или как пользователь развертывания?
Запуск от имени пользователя развертывания загрузит rbenv, позволяя запускать единорога, однако у пользователя развертывания нет доступа к sudo, поэтому он не сможет запускать сценарии init.d.
С другой стороны, когда я работаю как другой пользователь, пользователь развертывания, тогда бог не имеет доступа к bundle exec, предоставленному rbenv, и там не может запустить процессы единорога, если они выходят из строя.
1 ответ
Процесс бога должен контролироваться сценариями upstart, поэтому он запускается как пользователь sudo. Это стало возможным благодаря binstubs. Binstub - это шайба к execuable, установленному драгоценным камнем. Binstubs предоставляются упаковщиком. Они позволяют запускать bin-файлы из любой точки системы. Для этого необходимо добавить пути rbenv в ваши сценарии выскочки.
export PATH=/home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:$PATH
eval "$(rbenv init -)"
export BUNDLE_GEMFILE=$APPLICATION_ROOT/Gemfile
После этого любой прямой вызов binstubs загрузит ваш пакет и выполнится правильно. С этим шаблоном можно использовать upstart для запуска единорога и восстановления. Это делает весь ваш стек исполняемым с помощью upstart, а конфигурация вашего бога становится проще, потому что все, что вам нужно сделать, это вызвать ваши сценарии upstart. НТН.