Usando Django com IIS e SQL Server
As distribuições Linux e o Mac OS X já possuem uma instalação bastante completa de Python e instalar o Django é rápido e fácil nesses ambientes.
Como o Django suporta “oficialmente” os servidores Web e de banco de dados mais comuns no mundo open-source (Apache, nginx, lighttpd, MySQL, PostgreSQL, etc) a documentação dele está repleta de exemplos sobre como fazer um deploy nesses ambientes.
Mas e se você trabalha num ambiente onde a plataforma da Microsoft é usada intensamente? E se você usa o IIS como servidor Web e o SQL Server como banco de dados relacional, seria possível usar o Django?
A resposta é sim, mas por não ser suportado “oficialmente” a configuração desses ambientes não é muito documentada nem é muito simples (ao menos pra nós que não trabalhamos intensamente com a plataforma da Microsoft).
Vamos descrever os passos necessários para colocar esse ambiente “no ar”.
Baixando e instalando o Python
O jeito mais fácil de instalar o Python na plataforma Windows é com o ActivePython distribuido pela ActiveState. Além da instalação padrão do Python essa distribuição inclui módulos e bibliotecas muito úteis no ambiente Windows.
Nota, a versão recomendada é a Active Python 2.5. Os screenshots são meramente ilustrativos
Acessando o site e clicando no link para download você será encaminhado para um formulário cujo preenchimento é opcional e o download será iniciado.
Assim que o download terminar é só executar o instalador e seguir as instruções.
Instalando o Django e suas dependências
Para facilitar o trabalho, a Triveos desenvolveu um instalador que já instala o Django e outros pacotes necessários (que funciona APENAS com o Active Python 2.5) Baixe-o aqui
Mas se desejar instar o Django manualmente continue lendo.
O procedimento para instalar o Django e parte de suas dependências segue no “Prompt de Comandos”. O ActivePython já colocou os diretórios do Python no PATH do sistema e instalou as ferramentas necessárias para baixar e instalar o Django e suas dependências (setuptools/easy_install/pip).
Agora é só a gente criar um ambiente isolado de trabalho (que chamaremos de ‘gerenciador’) com o virtualenv e instalar o Django com o pip.
C:\Users\usuario> virtualenv gerenciador C:\Users\usuario> cd gerenciador C:\Users\usuario\gerenciador> Scripts\activate.bat (gerenciador) C:\Users\usuario\gerenciador> pip install django
Criando um projeto Django
Com o que a gente já fez é possível iniciar um projeto Django que, posteriormente, armazenara seus dados num servidor SQL Server e será acessível através de um servidor IIS. Esse projeto também se chamará ‘gerenciador’ e será criado dentro do nosso ambiente virtual que tem o mesmo nome: “C:\Users\usuario\gerenciador\gerenciador“.
(gerenciador) C:\Users\usuario\gerenciador> python Scripts\django-admin.py startproject gerenciador (gerenciador) C:\Users\usuario\gerenciador> cd gerenciador (gerenciador) C:\Users\usuario\gerenciador\gerenciador>
Configurando o acesso ao SQL Server
Para que seja possível acessar um banco de dados SQL Server a partir de uma aplicação feita em Django é necessário instalar o backend do mesmo já que ele não faz parte da instalação padrão do Django. O projeto que implementa esse backend fica no endereço: http://code.google.com/p/django-mssql/.
Para que o backend funcione é necessário colocar o diretório “[django-mssql]/source/sqlserver_ado/” em um caminho do PYTHONPATH. No nosso caso vamos colocá-lo dentro do diretório do nosso próprio projeto. Para facilitar o nosso trabalho é só baixar o arquivo com o backend e descompactá-lo dentro do diretório do nosso projeto Django.
Crie o banco de dados que será usado por nossa aplicação no SQL Server e certifique-se de usar a autenticação por senha e não a autenticação Windows (que não é suportada pelo backend).
Agora é só configurar a conexão no arquivo settings.py do nosso projeto.
Assim que a gente rodar um python manage.py syncdb…
… as tabelas serão criadas no banco de dados.
Configurando o IIS
Devo confessar que essa foi a parte mais complicada do trabalho!
Antes de instalar o seu projeto no IIS teste-o usando o manage.py.
Para facilitar o trabalho, a Triveos desenvolveu um instalador (que funciona APENAS com o Active Python 2.5) Baixe-o aqui
Este instalador instala o Django e todas os pacotes necessários (django-mssql e isapi-wsgi). Exige o Active Python 2.5
Após instalado, faça da seguinte forma:
1 – crie o diretório que vai receber o seu projeto no IIS (pode ser dentro do c:\inetpub)
2 – crie o arquivo handler de WSGI neste diretório, assim:
import os, sys
#inclua aqui o caminho para o seu projeto
#é comum incluir o caminho para o diretório do projeto e seu pai
sys.path.append('C:\\django_projects')
sys.path.append('C:\\django_projects\\example_project')
#configure aqui para apontar para o arquivo de settings de seu projeto
os.environ['DJANGO_SETTINGS_MODULE'] = 'example_project.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
import isapi_wsgi
# The entry points for the ISAPI extension.
def __ExtensionFactory__():
return isapi_wsgi.ISAPISimpleHandler(application)
3 – salve o arquivo com algum nome (por exemplo, wsgi.py)
4 – Busque dentro do diretório do Python o arquivo PyISAPI_loader.dll (normalmente em C:\Python25\Lib\site-packages\isapi). Copie-a para o diretório com o mesmo nome do arquivo .py (com extensão .dll) mas precedido de um caracter ‘_’ (underscore). Assim, se o arquivo foi salvo como wsgi.py, copie a dll e a renomeie para _wsgi.dll
5 – Para os diretórios de media e admin_media, você deverá incluir Virtual Directories do IIS apontando para eles
6 – Finalmente crie os mapeamentos da seguinte forma:
Nas configurações do site, em Handler Mappings adicione um Script Map da seguinte forma:
-Request Path: *
-Executable: aponte para a .dll dentro do diretório
-Nome: como desejado
Crie um mapeamento para StaticFileModule para os caminhos que apontam para os virtual dirs. Infelizmente é necessário criar um mapeamento para todos os subdiretórios. (ou seja, é necessário criar um mapeamento para admin_media/css/*, admin_media/js/* admin_media/img/*)
Ordene os mapeamentos colocando os de media primeiro e o Script Map por último.
Se tudo der certo o seu site está funcionando no IIS agora!
A Triveos é especializada no desenvolvimento de aplicações Web e utiliza Python e Django em grande parte de seus projetos. Tendo como base esse know-how no uso de Python e Django criamos o Curso de Desenvolvimento Web com Python e Django nas modalidades in-company e online.
-
Rodrigo
-
Rodrigo















