28
Criar um servidor em rede local com IIS e Django no Windows 10
Devido a um trabalho, precisei configurar uma WebApp, feita em Django, que deveria, apenas, funcionar em uma rede local.
Ela precisava ser hospedada em um computador com Windows 10 Home e executar
python manage.py runserver
sempre que ligasse a máquina, não era o desejável.Decidi, então, escrever este post com base neste outro artigo que apesar de cobrir grande parte dos passos necessários, faltaram alguns pormenores para que o servidor funcionasse a 100%.
Parto do princípio que o leitor já tenha configurado o seu projeto em Django, de forma a que possa funcionar tanto em um ambiente de desenvolvimento quanto em produção.
O IIS (Internet Information Services) precisa ser ativo para vocês terem acesso à área de gestão do mesmo.
Sigam os seguintes passos:
Pesquisem por "Painel de Controlo" na barra de pesquisa do Windows e executem-no
De seguida, no canto superior direito, estará, em letras pequenas, a opção "Ver por:", devem selecionar "Categoria"
Cliquem em "Programas"
E por fim cliquem na opção "Ativar ou desativar funcionalidades do Windows"

Vai aparecer uma pequena janela com várias "pastas".
Devem procurar por uma pasta denominada de "Serviços de Informação Internet" e marquem-na.
Devem procurar por uma pasta denominada de "Serviços de Informação Internet" e marquem-na.
De seguida expandimos a pasta "Serviços da World Wide Web" e, por fim, expandimos a pasta "Funcionalidades de Desenvolvimento de Aplicações".
Após tudo isto, devem clicar em "OK" e o IIS deverá estar a funcionar. Para testar-mos isso, abrimos um navegador e colamos o seguinte URL: http://localhost
Caso não encontrem essa primeira pasta, tentem descarregar diretamente daqui e verifiquem se, após reiniciar o computador, já aparece a opção desejada.
Primeiramente, aconselho que criem um ambiente virtual para a vossa aplicação, já que eu irei demonstrar a configuração fazendo uso de um ambiente virtual.
Para criar um ambiente virtual, basta abrir um terminal/cmd no diretório raiz do vosso projeto (onde está o ficheiro
Não necessita chamar-se assim, podem atribuir o nome que desejarem.
manage.py
) e executar o seguinte comando: python -m venv env
- em que env
é o nome do vosso ambiente virtual.Não necessita chamar-se assim, podem atribuir o nome que desejarem.
Para ativarem o ambiente, basta que nesse mesmo terminal/cmd, executem:
.\env\Scripts\activate
- deverá aparecer um (env)
no lado esquerdo do vosso terminal/cmd.Agora devem utilizar o
pip
para instalar os vossos pacotes, como por exemplo, o Django e, obrigatoriamente, o wfastcgi: pip install Django wfastcgi
E agora terão uma janela, onde devem preencher os 2 seguintes espaços:
Caminho Completo: Caminho até ao vosso executável de python, o mesmo estará presente na vossa pasta de ambiente env
.
Sendo assim, o caminho é algo deste tipo: C:\Users\Usuario\projeto_django\env\Scripts\python.exe
Argumentos: aqui vocês devem colocar o caminho até ao wfastcgi.py
que também estará presente na vossa pasta de ambiente.
O caminho será algo assim: C:\Users\Usuario\projeto_django\env\Lib\site-packages\wfastcgi.py

Agora vamos criar 3 membros (clicando em adicionar) e vamos alterar o Name e o Value deles:
DJANGO_SETTINGS_MODULE:
- Name = DJANGO_SETTINGS_MODULE
- Value = nome_do_app.settings
WSGI_HANDLER:
- Name = WSGI_HANDLER
- Value = nome_do_app.wsgi.application
PYTHONPATH:
- Name = PYTHONPATH
- Value = Caminho\para\a\pasta\raiz\do\projeto
Vocês podem achar os 2 primeiros valores nos ficheiros do vosso projeto, sendo que o primeiro está no ficheiro
wsgi.py
e o segundo no settings.py
na variável WSGI_APPLICATION
.


Agora que configuramos a CGI (Common Gateway Interface), vamos colocar o nosso site no servidor.
De seguida, basta clicar em "Sites" e do lado direito aparecerá a opção "Adicionar Website...", na qual devem clicar.
Vai aparecer uma janela, e nela devem preencher o campo "Nome do site" com o nome que acharem melhor.
Para o campo "Caminho físico" basta clicarem nos 3 pontos e escolherem a pasta raiz do vosso projeto (lembrando que a pasta raiz é a pasta que contém o ficheiro
manage.py
)O utilizador que colocarem, TEM de ter permissões na vossa pasta do projeto.
O último campo a preencher é o da "Porta" que no meu caso deixei como 8000.
Bem agora temos de definir onde está o nosso site e selecionar a FastCGI que definimos nos passos anteriores.
Aparecerá uma janela igual a esta:

Devemos preencher da seguinte forma:
Caminho do pedido: *
Módulo: Selecionar "FastCgiModule"
Executável (opcional): Devem colocar o caminho para o executável do python, |
e coloca-se o caminho para o wfastcgi.py
. Aqui vai um exemplo: C:\Users\User\projeto_django\env\Scripts\python.exe|C:\Users\User\projeto_django\env\Lib\site-packages\wfastcgi.py
Nome: Colocar o nome que bem entenderem
Basta clicar em "OK" em tudo e caso apareça um Pop-up, cliquem em "Sim".
É importante que no ficheiro
settings.py
, na variável ALLOWED_HOSTS
coloquem dentro dessa lista tanto o "localhost"
quanto o IP da vossa máquina na rede local, exemplo: "192.168.20.135"
. Podem ver o IPv4 utilizando o comando
ipconfig
no CMD do Windows.Agora basta vocês entrarem em http://localhost:8000 e ficarem frustrados...
Este foi o primeiro e único erro que me apareceu e pode ser facilmente mitigado, trocando a Identidade da nossa aplicação.
Bem para isto preciso que abram o vosso "Gestor de Serviços de Informação Internet".
Vão expandir o nome do vosso computador/servidor e clicar em "Conjuntos Aplicacionais".
Após a resolução do erro citado acima, vocês poderão se deparar com um site que aparentemente não carregou os ficheiros CSS, JS nem imagens.
Para corrigirmos isso, vamos precisar criar alguns diretórios virtuais.
Depois de verificar o código, devem gerar o vosso conteúdo estático, executando, dentro da pasta raiz, o seguinte comando:
python manage.py collectstatic
No meu caso, criar-se-á uma pasta
static_root
com todos os meus ficheiros estáticos.Para criarmos esses diretórios virtuais, temos de estar dentro do "Gestor de Serviços de Informação Internet", expandir o nome do computador/servidor, expandir "Sites" e, finalmente, clicar com o botão direito no nome do nosso site, para de seguida selecionarmos a opção "Adicionar Diretório Virtual...".


Na seguinte janela, devemos colocar o "Alias" como
static
e no "Caminho físico", utilizamos os 3 pontos para selecionar a pasta criada pelo collectstatic
, contendo os vossos ficheiros estáticos (no meu caso é a pasta static_root
).Repitam o mesmo processo para a pasta
media
, alterando o Alias para media
e selecionando a pasta correta.
Mesmo fazendo isto, ainda não vai funcionar. Precisamos remover o mapeamento do módulo FastCgi destas pastas, já que elas são apenas pastas de ficheiros estáticos.
Atenção: Devem fazer este processo em todos o vossos diretórios virtuais que sirvam ficheiros estáticos.
Agora voltem a reiniciar o vosso servidor e se tudo correr bem, terão o vosso site a funcionar normalmente.
Quero pedir desculpa por toda a censura nos prints, mas eu fui tirando prints conforme fui fazendo os passos e não quero expor informações.
Qualquer coisa que não tenham entendido, erro gramatical ou alguma dúvida que tenham, podem deixar nos comentários, tentarei ajudar o melhor que conseguir.
28