Como usar o Django com o Apache e mod_wsgi

A implantação do Django com Apache e mod_wsgi é a forma recomendada de ter o Django funcionando em produção.

O mod_wsgi é um módulo do Apache que pode ser usado para hospedar qualquer aplicação Python que suporte a Interface WSGI do Python, incluindo o Django. O Django irá funcionar com qualquer versão do Apache que suporte o mod_wsgi.

A documentação oficial do mod_wsgi é fantástica; é sua fonte para todos os detalhes sobre como usar o mod_wsgi. você provavalmente irá querer iniciar com a documentação de instalação e configuração.

Configuração Básica

Uma vez que você tenha o mod_wsgi instalado e ativado, edite o seu arquivo httpd.conf e adicione:

WSGIScriptAlias / /path/to/mysite/apache/django.wsgi

A primeira parte acima é a url na qual você estará servindo sua aplicação (/ indica a url raiz), e a segunda parte é a localização de um “arquivo WSGI” – veja abaixo – no seu sistema, normalmente dentro do seu projeto. Isso diz ao Apache para servir quaisquer requisições abaixo de dada URL usando a aplicação WSGI definida por aquele arquivo.

Em seguida, vamos efetivamente criar essa aplicação WSGI, então crie o arquivo mencionado na segunda parte da linha WSGIScriptAlias e adicione:

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Se o seu projeto não está no PYTHONPATH padrão você pode adicionar:

sys.path.append('/usr/local/django')

logo abaixo das linhas de import para colocar o seu projeto no path. Lembre-se de substituir o ‘mysite.settings’ como seu arquivo de configurações correto.

Veja a Documentação do Apache/mod_python para informações de como servir mídia estática, e a documentação do mod_wsgi para uma explicação de outras diretivas e opções de configuração que você pode usar.

Detalhes

Para maiores detalhes, veja a documentação do mod_wsgi, que explica os itens acima em maior detalhamento, e lhe dá todas as possibilidades de opções que você tem ao fazer uma implantação no mod_wsgi.