Nginx + GUnicorn + Flask + usuário de dados www - bloqueio de arquivo

2

Tenho algumas questões bem básicas sobre a implementação de uma aplicação do Flask no Gunicorn (19.0-1) no Ubuntu (14.10) em combinação com o Nginx.

Como esse aplicativo fica ao lado do Web2Py, segui um guia para bloquear o website produzido pelo Web2Py e aplicou a mesma estratégia para o meu aplicativo Flask.

Neste exemplo, os funcionários da Gunicorn são executados como o usuário www-data, e os arquivos e a origem em / var / www são bloqueados colocando-se o grupo www-data como proprietário e www-data no grupo.

No entanto, alguns pontos me confundem:

  1. Embora os funcionários do Gunicorn sejam executados como www-data, o daemon do servidor Gunicorn é executado como root. Isso será motivo de preocupação?
  2. A pesquisa por Nginx + Gunicorn + Flask leva a sites que recomendam executar o Gunicorn por meio do supervisord em vez de um serviço init.d. Devo considerar a mudança?
  3. Como a conta do www-data está bloqueada (sem shell / sem senha), onde os desenvolvedores que usam a VM podem executar o código para que o ambiente corresponda à produção o mais próximo possível?
por Donal Lafferty 21.04.2015 / 10:33

1 resposta

1

Eu uso Flask com Nginx e Gunicorn, então tentarei responder da melhor maneira possível:

1). Pode ser, mas a partir de minha própria pesquisa e experiência, geralmente é melhor não executar o Gunicorn no modo daemon e usar algum tipo de gerenciador de processo dedicado (como o Supervisor).

2). O supervisor e o init.d não cumprem estritamente o mesmo propósito. Init.d é um "Daemon de Inicialização", seu propósito é ser o serviço que inicia todos os outros serviços (como, digamos, Gunicorn). Supervisor é um Gerenciador de Controle de Processos que pode ser usado para iniciar outros serviços, assim como monitorá-los e reiniciá-los se algo der errado. O supervisor, no entanto, ainda precisa do init.d (ou seu sucessor Upstart) para iniciá-lo na inicialização. Eu prefiro usar o Supervisor porque é fácil de usar e permite que eu inicie, pare e / ou reinicie os funcionários do Gunicorn rapidamente.

3). Você geralmente tem algum tipo de ambiente de desenvolvimento dedicado que é uma cópia da produção. Eu pessoalmente uso 3 servidores em nuvem, 1 para produção, 1 para preparação (a.k.a., o campo de testes para garantir que a aplicação seja implementada corretamente) e 1 para desenvolvimento. Encenação e desenvolvimento são cópias da produção.

    
por 25.04.2015 / 20:38