Configurando um Servidor com Nginx e Django - Juntando Tudo - Parte Final

___






Neste capitulo, falaremos como finalizar a configuração de integração do NGINX e DJANGO.


Para ver as partes interiores sobre a instalação do NGINX e DJANGO, visite os links abaixo:

Juntando as Partes


Configuraremos o NGINX como 2 modos:
- Um servidor web para o conteúdo estático de nosso site (imagens, css, javascripts...), e;
- Como proxy reverso para nosso servidor de aplicação, que no caso, é o django.

Antes de mais nada, precisamos instalar uma especificação de interface para conectar servidores web com servidores de aplicação. Existem diversas interfaces (fastCGI, apache+mod_wsgi), usaremos o WSGI para esta integração.


Instalando o WSGI no NGINX


install nginx python-flup


Levantando o processo do Django


Para o nginx conectar no servidor de aplicação do django, precisamos ter o servidor do django em execução. Para isso, execute o seguinte dentro do diretório de seu projeto (para saber sobre projeto django, veja a Parte 2)

python manage.py runfcgi host=127.0.0.1 port=8000

Isso executa o servidor fastCGI do django escutando apenas o Host 127.0.0.1 na porta 8000. Ou seja, ninguém alem do próprio servidor conseguirá acessar diretamente o servidor de aplicação. Então antes passará pelo nginx, e o nginx apenas que terá acesso do django. A menos que seja para testes, NUNCA use 0.0.0.0, pois isso dará margem para qualquer lugar conectar ao seu servidor de aplicação diretamente, e queremos que apenas o nginx tenha acesso à ele.

É importante destacar que este modo de execução do django disparará um novo processo para cada conexão. Isso pode ser um problema se seu servidor tiver pouca memória e você tiver muitos acessos. Para evitar este consumo excessivo de memória, você pode executar o django da seguinte maneira:

python manage.py runfcgi host=127.0.0.1 port=8000 method=threaded 

Este método criará usando threads no lugar de processos. Para mais detalhes sobre isso, consulte:

Agora, precisamos criar na configuração do nginx as entrada para o que é servidor de aplicação e o que é servidor web. 


Definindo o que é Servidor Web e o que é Servidor de Aplicação


Agora que estamos com o servidor de aplicação rodando, precisamos definir no nginx como ele deve tratar as requisições dos usuários.
Em nosso caso, queremos que o nginx sirva diretamente o conteúdo estático ao usuário, como imagens, javascript, css. E o conteúdo dinâmico de nossa pagina, seja servido pelo servidor de aplicação (django)

Se você seguiu os passos da parte 1,  arquivo de configuração do nginx estará em:

/usr/local/nginx/conf/nginx.conf

server {    
    listen 80;
    server_name nomedohostdosite.com; # nome do host que este servidor acessará, por exemplo no caso deste blog: fabiolabs.com.br
    access_log /<local para log>/access.log; # Log de relatório de acesso
    error_log /<local para log>/error.log; # Logs de erros do django
    location / {
        include fastcgi_params; # lib do fastCgi
        fastcgi_pass 127.0.0.1:8000;  # o connector ao fastcgi...
    }

}

reinicie o nginx para assumir a nova configuração.

/usr/local/nginx/sbin/nginx -s reload

nessas alturas, acessando via browser, teremos acesso à nossa aplicação django servida pelo nginx!


Nginx servindo django


Agora precisamos configurar o acesso aos arquivos estáticos:

server {    
    listen 80;
    server_name nomedohostdosite.com; # nome do host que este servidor acessará, por exemplo no caso deste blog: fabiolabs.com.br
    access_log /<local para log>/access.log; # Log de relatório de acesso
    error_log /<local para log>/error.log; # Logs de erros do django
    location /static/ { # STATIC_URL
        alias /<local onde ficarão os arquivos estáticos>/static/; # STATIC_ROOT
        expires 30d;
    }

    location / {
        include fastcgi_params; # lib do fastCgi
        fastcgi_pass 127.0.0.1:8000;  # o connector ao fastcgi...
    }
}
mova algum arquivo para o diretório static. Reinicie o nginx novamente e você terá arquivos estáticos sendo servido por ele.

Nginx servindo estático

E pronto, agora temos o ambiente configurado e é só começar a desenvolver seus projetos em Django!

Soluções de problemas

Atenção ao local dos arquivos estáticos que deve ser em um diretório diferente de /root/, caso contrario, ao tentar acesso, o nginx retornará acesso negado como abaixo:



Caso as URLS não estejam apontando para o local correto, coloque o seguinte na configuração do nginx dentro do bloco "location / {"

fastcgi_split_path_info ^()(.*)$;



Para mais informações, visite:

https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/
https://code.djangoproject.com/wiki/DjangoAndNginx
https://code.djangoproject.com/wiki/DeployComNginxEWSGI








Veja tambem:

___

Wordpress REST API - Permitindo Visualização de Post Privados para Usuários do tipo Assinantes

A API REST do Wordpress trouxe novas possibilidades. No entanto, deparei com um problema para listar os Posts cadastrados como Privados para Usuários do tipo "Assinante".

Como deixar imagem redonda de um CANVAS com HTML 5

Como deixar imagem redonda de um CANVAS com HTML 5

Neste post mostro como deixar uma imagem dentro de um círculo com sombra usando canvas do HTML5 !

Como deixar uma imagem redonda e com sombra em CSS

Como deixar uma imagem redonda e com sombra em CSS

Fazendo uma imagem ficar dentro de um círculo em CSS

Resolvendo o problema No 'Access-Control-Allow-Origin' header is present on the requested resource.

Como permitir acesso a outra url - Cross Origin Resource Sharing (CORS)

Como instalar o Windows 10 IoT no Raspberry usando o Windows 7

Como instalar Windows 10 no Raspberry Pi 2

Lucene, Solr, Mysql e outras bruxarias

Uma breve explicação sobre fulltext search e onde usar.

Programando Python usando Eclipse com PyDev

Programando Python usando Eclipse com PyDev

Eclipse como EDE para programar em Python !

Como desenvolver em Python usando o Netbeans 7.4

Como desenvolver em Python usando o Netbeans 7.4

Programando em python usando o netbeans como IDE

Criatividade é saber esconder suas fontes

Criatividade, nada mais do que do que pegar idéias existentes, junta-las, e modifica-las.

Tudo é um Remix (Legendado)

Tudo é um Remix (Legendado)

O que é criatividade? Copiar, transformar e combinar.

Configurando um Servidor com Nginx e Django - Juntando Tudo - Parte Final

Integrar nginx e django. Ultima parte.

Veiculo Guiado a Laser - LGV (Laser Guided Vehicle)

Veiculo Guiado a Laser - LGV (Laser Guided Vehicle)

Desenvolvimento do algoritmo de controle de direção de LGV (um AGV guiado a laser)

Configurando um Servidor com Nginx e Django - Parte 2

Configurando um Servidor com Nginx e Django - Parte 2

Instalando o Django

Como User Experience pode melhorar seu produto?

Como User Experience pode melhorar seu produto?

User Experience (Design Centrado no Usuário, ou Experiência do Usuário) é um termo usado quando se desenvolve produtos, sistemas ou serviços focado em pessoas, envolvendo fatores humanos no projeto.

Configurando um Servidor com Nginx e Django

Configurando um Servidor com Nginx e Django

Este post é o inicio de uma série de como configurar um servidor usando o nginx como proxy reverso e o django como servidor de aplicação.

SISTEMA DE NAVEGAÇÃO CIRÚRGICA

SISTEMA DE NAVEGAÇÃO CIRÚRGICA

Também chamada de “Cirurgia Guiada por Computador”, a navegação cirúrgica consiste em um sistema que gera um modelo virtual 3D do paciente para guiamento de instrumentos cirúrgicos de maneira precisa e em tempo real, orientando o médico no momento da cirurgia.

O FACEBOOK VAI ACABAR… E VOCÊ?

O FACEBOOK VAI ACABAR… E VOCÊ?

Recentemente, uma onda de notícias surgiu na internet: O fim do Facebook até 2020.

E QUANDO DOIS CHATBOTS SÃO COLOCADOS PARA CONVERSAR?

Chatbot são programas de computadores que tentam manter o dialogo com pessoas reais utilizando linguagem natural. É um dos desafios da Inteligencia Artificial.

TRACKING POR COR COM WEBCAM

Utiliza segmentação de imagem para extrair da imagem o ponto de interesse, no caso o ponto vermelho do laser. Envia controle via porta paralela para os servos que controlam a posição webcam. Usa Video4Linux e foi desenvolvido em C na plataforma Linux.

RASTREIO DE MOVIMENTO DE PESSOAS EM TEMPO REAL

Protótipo criado para testar a viabilidade de implementação de rastreio de comportamento de consumidores em lojas de departamentos. Utiliza múltiplas câmeras posicionadas em pontos diferentes do espaço. Plataforma Linux, desenvolvido em C usando v4l2 e placa de captura de video geovision gv800.

PENDRIVE WIRELESS BLUETOOTH

Protótipo com memória SD que poderia ser conectada via USB (como um pendrive comum) ou via Bluetooth

GERENCIADOR DE TRÁFEGO DE AGV'S (AUTOMATED GUIDED VEHICLE)

GERENCIADOR DE TRÁFEGO DE AGV'S (AUTOMATED GUIDED VEHICLE)

O gerenciador consiste em um software responsável pela navegação de AGVs (Veiculos da foto ao lado)

MEDIDOR DE CONSUMO ELÉTRICO VIA BLUETOOTH

MEDIDOR DE CONSUMO ELÉTRICO VIA BLUETOOTH

Protótipo consiste em um verificador de consumo de energia elétrica de algum equipamento. A leitura da potencia consumida é feita utilizando a placa MCP3905A Energy Board Meter, da Microchip.

SISTEMA DE AUXILIO AO DEFICIENTE VISUAL NO TRANSPORTE PÚBLICO

SISTEMA DE AUXILIO AO DEFICIENTE VISUAL NO TRANSPORTE PÚBLICO

uma aplicação para um celular touch screen, o deficiente visual, ao passar por um ponto de ônibus, escuta um alerta sonoro de que se encontra no ponto de ônibus X

EXPANSÃO VISUAL DE PROJEÇÕES EM TELAS PLANAS

Projeto de TCC da FEI. Vencedor de 2 prêmios: “Melhor Trabalho Geral” e “Criatividade e Inovação”

REDIS – UM BANCO DE DADOS NÃO RELACIONAL.

REDIS – UM BANCO DE DADOS NÃO RELACIONAL.

NoSQL significa ”Not only SQL” (Não somente SQL), e é uma alternativa aos tradicionais bancos de dados relacionais, mas que não oferecem as caracterizadas ACID (Atomicidade, Consistência, Isolamento e Durabilidade).

Leitor de RSS

Leitor de RSS

Leitor Online de Noticias que desenvolvi em 2010.

CONTROLE SEM FIO COM FEEDBACK DE COMANDO

CONTROLE SEM FIO COM FEEDBACK DE COMANDO

Circuito eletrônico para controle de automação, com feedback de se o comando foi executado no circuito remoto.

Fábio Martins

Olá, eu sou o fábio. Clique em Continuar Lendo para saber mais.

Leitura Automática de Tacógrafo Analógico

Leitura Automática de Tacógrafo Analógico

Programa desenvolvido para analise automática de disco de tacógrafo analógico.