Você não está logado!

Busca :  

Inscreva-se no newsletter

Fazendo deployment de sua aplicação em Django, Flask e afins com uWSGI e nginx

   Por que usar o uWSGI? Porque atualmente é a opção mais performática e linda de fazer deloyment de projetos em Python, tanto faz se sua aplicação é escrita usando Django, Flask ou afins.
   Levando em conta que você já tenha o nginx instalado, falarei apenas sobre a parte que envolve o uWSGI.
   Primeiros passos:
   Primeiro instale os headers da libxml2 e do python, no ubuntu por exemplo, digite apenas: sudo apt-get install libxml2-dev python-dev.
   Com o PIP, instale o uWSGI: sudo pip install uWSGI. O PIP começará a compilar o uWSGI, caso você não tenha GCC, make, autoconf e etc, instale com sudo apt-get install build-essential.
    Eu particularmente, escrevo as configurações para o uWSGI em arquivos INI, segue uma configuração que geralmente uso.

[uwsgi]
touch-reload=/diretorio/projeto/tmp/restart.txt # Usado para que o uWSGI recarrege o seu fonte com um simples touch restart.txt
listen=1024 # Número de itens em fila de espera
disable-logging=true # Deixa de logar requisições, fará log apenas de erros.
socket=/diretorio/que/voce/quiser.sock # Caminho do socket que o uWSGI ouvirá/escreverá.
master=true # Ativa o processo master para controlar os rebeldes.
harakiri=60 # Modo suicida que matará a app após x segundos em execução.
processes=4 # Número de workers.
buffer-size=25000 # Buffer mais alto porque muitas vezes alguns browsers mandam headers gigantes.
daemonize=/diretorio/que/voce/quiser.log # Joga o processo para background e escreve o log no arquivo determinado.
post-buffering=8192 # Limite máximo de tamanho do body do http, passando o limite, ele salva em disco.
pidfile=/diretorio/que/voce/quiser.pid # Arquivo que o número do processo master será gravado.
pythonpath=/diretorio/do/seu/projeto
module=wsgi # Módulo que o uWSGI carregará a sua app.

    Com isso, sua app já deve funcionar com uwsgi --ini /arquivo/ini.ini.

    Para fazer o deployment com o nginx, você precisa de duas linhas apenas.
    No seu location / adicione:
    include uwsgi_params;
    uwsgi_pass unix:/diretorio/do/socket.sock;

    Pronto, depolyment feito, não se esqueça de colocar o nginx para servir seus estáticos senão será um tiro no pé usar o uWSGI para isso.

    - Wait!!! Como faz para fazer o uWSGI iniciar com a máquina?
    - One word: upstart.
    - Tá! Como?
    - Mais fácil do que tirar doce de criança.

    Crie um arquivo .conf em /etc/init com o seguinte conteúdo:

start on (net-device-up
          and local-filesystems
          and runlevel [2345])
stop on runlevel [016]
respawn
expect daemon
exec uwsgi --ini /seu/arquivo/de/config/uwsgi.ini


    Para executar a app, digite start nome_do_arquivo sem o .conf é claro. Outros comandos são: stop, restart e status.

    Pronto, espero que tenham gostado/achado útil, qualquer dúvida, comentem ou twittem para @jaysonsantos.

Por Jayson Santos dos Reis

blog comments powered by Disqus

Publicidade