Estou aprendendo Django e queria testar hospedá-lo em um computador Ubuntu que possuo. Decidi servi-lo com Apache e mod_wsgi. A maioria das coisas está funcionando, mas há uma coisa que me intriga. Posso acessar o site apenas a partir do meu endereço IP externo, não do meu endereço 127.0.0.1 ou 192.168.xx.
Meu arquivo django.conf em /etc/apache2/sites-available é
<VirtualHost *:80>
WSGIScriptAlias / /home/username/project
ServerName my_external_ip
Alias /media/ /home/username/project/media
Alias /static/ /home/username/project/static
<Directory /home/username/project>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Se eu definir ServerName como 127.0.0.1, a página será carregada apenas a partir daí. Além disso, devo acrescentar que ele não "não carrega" exatamente quando acesso de outros locais, apenas mostra uma página do Apache intitulada "Índice de /" sem conteúdo.
O que está impedindo o Apache de servir páginas em todos os casos, e como posso fazer com que ele sirva páginas como 127.0.0.1 etc.? Existe uma maneira melhor de hospedá-lo?
Responder1
Sua resposta está em apache2ctl -S
- o site "padrão" da instalação tem precedência quando o Host
cabeçalho que o cliente HTTP envia não corresponde a um ServerName
ou ServerAlias
em um dos outros <VirtualHost>
blocos na porta.
Se você deseja que seu site Django lide com todas as solicitações ao servidor, desative o padrão:
a2dissite default
... então reinicie o Apache.
Caso contrário, se você quiser ser um pouco mais sutil sobre o Django assumir o controle, você pode adicionar um a ServerAlias
à configuração de seu <VirtualHost>
:
ServerAlias internal.ip external.ip external.dns.name