Quem deve possuir o processo de deus?

3

Eu tenho uma pilha rodando em Ubuntu que consiste em um aplicativo Rack escrito em Sinatra e GrapeAPI. A pilha de aplicativos inclui Redis, Postgres, Nginx e unicórnio. Eu quero usar deus para lidar com o monitoramento de processos.

Atualmente, as implantações são feitas sob um usuário de implantação por meio do git. Este usuário de implantação não é um sudoer. Minha pergunta: quem deve possuir o processo divino? É melhor executar esse processo como um sudoer ou o usuário de implementação?

A execução como usuário de implementação carregará o rbenv permitindo que o unicórnio seja iniciado, no entanto, o usuário de implementação não terá acesso sudo, portanto, não poderá executar scripts init.d.

Por outro lado, quando estou executando como um usuário diferente, o usuário de implementação, em seguida, deus não tem acesso ao pacote exec fornecido pelo rbenv e não pode iniciar os processos de unicórnio se eles caírem.

    
por Stewart 20.08.2013 / 15:22

1 resposta

2

O processo deus deve ser controlado por scripts iniciantes, sendo assim executado como um usuário sudo. Isso é possível graças a binstubs. Um binstub é um calço para um exectuable instalado por uma gema. Binstubs são fornecidos pelo bundler. Eles permitem que arquivos bin sejam executados de qualquer lugar no sistema. É necessário adicionar caminhos rbenv em seus scripts iniciantes para fazer isso.

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

Depois disso, qualquer chamada direta para o binstubs carregará seu pacote e será executada corretamente. Com esse padrão, é possível usar o upstart para executar o unicórnio e o resque. Isso torna todo o seu stack executável com o upstart e sua configuração de deus um chinch, porque tudo que você precisa fazer é chamar seus scripts iniciantes. HTH.

    
por 21.08.2013 / 03:43