/ / Estratégias para implantar o Django App - django, apache, implantação na web

Estratégias para implantar o Django App - django, apache, web-deployment

Eu tenho uma pergunta que provavelmente é mais geral que o desenvolvimento relacionado ao django. O fundo é bastante simples:

Estou trabalhando em um projeto cujas páginas são principalmenteassociado a um aplicativo da web (é para isso que estou usando o Django). Além das páginas relacionadas ao aplicativo, no entanto, existem algumas páginas auxiliares (como uma página de destino, uma página de perguntas frequentes, uma página de contato etc.) que basicamente não têm nada a ver com o aplicativo Web.

Qual é a estratégia padrão para implantar taisum projeto? Parece falho encaminhar solicitações para essas páginas estáticas através do Django. O que parece fazer sentido é a execução de dois servidores: um responsável pela execução do aplicativo Django e um servidor separado responsável pela veiculação das páginas estáticas (incluindo, talvez, o conteúdo estático usado pela parte do aplicativo do site).

Quais são alguns princípios orientadores que devem ser empregados ao tomar essas decisões?

Respostas:

4 para resposta № 1

Não é incomum rodar o Django lado a lado com um site estático ou outro CMS.

Você precisaria de um servidor front-end para rotear a solicitação para o conteúdo estático ou um CMS.

Existem duas estratégias comuns:

  1. Use o prefixo do URL para determinar para onde encaminhar (por exemplo, example.com/static/ para arquivos estáticos e example.com/ para Django). Você precisaria de um servidor front-end para rotear a solicitação para o conteúdo estático ou para um aplicativo Web / CMS gravado em outra estrutura / idioma (isso é configurado com a diretiva Alias ​​no Apache).

  2. Coloque o servidor de aplicativos e o servidor de arquivos estáticoem domínio / subdomínio separado (por exemplo, static.example.com para static e app.example.com para Django). Você pode fazer isso configurando um servidor front-end para servir em uma única máquina (configurada com o VirtualHost no Apache) ou como uma máquina separada. Em qualquer um dos casos, você precisará configurar o DNS para apontar para seus subdomínios para a (s) máquina (s) correta (s).

O primeiro é mais simples de configurar, mas o último permite escalar melhor.

Os servidores comumente usados ​​para front-end de um servidor de aplicativos incluem Apache, Nginx ou uWSGI, mas praticamente qualquer servidor Web com qualidade de produção pode fazer isso.

De fato, a documentação de implantação do Django (por exemplo, Apache) sempre instruiria você a ter sua estáticaarquivos servidos pelo servidor front-end, mesmo em instalações apenas do Django, pois o Django não foi projetado para servir com eficiência conteúdo estático, diferentemente dos servidores Web front-end.

o django.contrib.staticfiles O aplicativo existe para possibilitar ao Djangoconsulte um arquivo estático hospedado em um servidor diferente e alterne facilmente entre servir conteúdo estático com o servidor interno do Django durante o desenvolvimento, mas com o servidor front-end em produção.