Deploy Flask app com Gunicorn, Nginx e Supervisor

No inicio pode parece complicado fazer o deploy da sua app em Python e realmente pode ser complicado, isso porque nem todas as ferramentas  tem uma documentação tão clara quanto precisamos.

Fiz esse post exatamente por conta disso, chegando a fazer o deploy da minha aplicação fiquei completamente perdido e passei horas para encontrar um exemplo que realmente funcionasse e fosse um pouco mais organizado e legível que os demais.

De inicio já deixo claro que o exemplo a seguir e bem simples porem funcional e pode ser uma bela mão na roda 😉 (sem sacanagem hahaha)

Vamos lá, começaremos instalando o Flask e o Gunicorn.

pip install Flask

pip install gunicorn

Iniciamos um app Flask simples chamado holla.py

Você pode testar o app rodando gunicorn hello:app , nossa app estará rodando em 127.0.0.1:8000 nosso arquivo de configuração irá direcioná-lo para a porta que setamos no caso a 9090, caso esteja em por exemplo em uma estância Ec2 da Amazon você pode setar um domínio um seu IP externo na variável server_name.   Caso opte por usar um domínio façça o seguinte:

sudo nano /etc/hosts

e adcione a seguinte linha inserido seu dominio:

127.0.0.7  exemplo.com

sudo apt-get install nginx

este é um arquivo de configuração básica para um novo server no Nginx.

sudo nano /etc/ngnix/sites-available/hello.conf

Após instalar e congifurar o server vamos lativá-lo criando um link simbolico do arquivo para sites-enable

sudo ln -s /etc/nginx/sites-available/hello.conf /etc/nginx/sites-enabled

Você pode verificar se ouve erros com o comando

sudo nginx -t

obs.: caso venha ocorrer algum erro, pode ser que seja porque você não criou a pasta logs.

se tudo sar bem você reiniciar o server com o comando

sudo service nginx reload

Até aqui td bem e se você rodar a app com o gunicorn e acessar em 127.0.0.7:9090 você poderá acessar a aplicação com sucesso. Mas vamos melhorar isso e deixar tudo mais automatizado com o supervisor e caso a app venha cair ela imediantamente será posta no ar novamente.

Instale o supervisor com o comando

sudo apt-get install supervisor

Agora vamos configurar o arquivo que irá informar o supervisor o que fazer para levantar novamente nossa app. use o seguinte comando para criar o arquivo de configuração do supervisor assim como o exemplo a seguir.

sudo nano /etc/supervisor/conf.d/hello.conf

Os seguintes comandos irão consecultivamente recarregar e atualizar o supervisor para que ele encontre o nosso arquivo criado, e o ultimo comando irá startar nosso app via supervisor.

supervisorctl reread

supervisorctl update

supervisorctl start hello

Prontinho agora você tem uma simples app rodando na porta 9090 e que pode ser acessado em uma lan, ou até mesmo por um dominio.

Fontes:

How to Run Flask Applications with Nginx Using Gunicorn
Managing Gunicorn Processes With Supervisor
Gunicorn
Nginx
Supervisor

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s