Estoy aprendiendo Django y quería probar alojarlo en una computadora con Ubuntu que tengo. Decidí servirlo con Apache y mod_wsgi. Conseguí que la mayoría de las cosas funcionaran, pero hay una cosa que me desconcierta. Puedo acceder al sitio web solo desde mi dirección IP externa, no desde, por ejemplo, 127.0.0.1 o mi dirección 192.168.xx.
Mi archivo django.conf en /etc/apache2/sites-available está
<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>
Si configuro ServerName en 127.0.0.1, la página solo se carga desde allí. También debo agregar que no "no se carga" exactamente cuando accedo desde otras ubicaciones, solo muestra una página de Apache titulada "Índice de /" sin contenido.
¿Qué impide que Apache sirva páginas en todos los casos y cómo puedo hacer que sirva páginas como 127.0.0.1, etc.? ¿Existe una mejor manera de alojarlo?
Respuesta1
Su respuesta está en apache2ctl -S
: el sitio "predeterminado" de la instalación tiene prioridad cuando el Host
encabezado que envía el cliente HTTP no coincide ServerName
con ServerAlias
uno de los otros <VirtualHost>
bloques del puerto.
Si desea que su sitio Django maneje todas las solicitudes al servidor, desactive el valor predeterminado:
a2dissite default
... luego reinicie Apache.
De lo contrario, si desea tener un poco más de matices acerca de que Django se haga cargo, puede agregar ServerAlias
a la configuración de su <VirtualHost>
:
ServerAlias internal.ip external.ip external.dns.name