python - sirve - Cómo acceder al servidor web local Django desde fuera del mundo
pythonanywhere tutorial (6)
Debe ejecutar el servidor de desarrollo de forma que escuche en la interfaz de su red.
P.ej
python manage.py runserver 0.0.0.0:8000
escucha en cada interfaz en el puerto 8000.
No importa si accede al servidor web con la IP o el nombre de host. Supongo que todavía estás en tu propia LAN.
Si realmente desea acceder al servidor desde afuera, también debe configurar su enrutador para reenviar el puerto, por ejemplo, 8000
a su servidor.
¡Compruebe su firewall en su servidor si las conexiones entrantes al puerto en uso están permitidas!
Suponiendo que puede acceder a su servidor Apache desde el exterior con éxito, también puede intentar esto:
- Detenga el servidor Apache, de modo que el puerto
80
sea gratuito. - Inicie el servidor de desarrollo con
sudo python manage.py runserver 0.0.0.0:80
Seguí las instrucciones here para ejecutar Django usando el servidor web incorporado y pude ejecutarlo con éxito usando python manage.py runserver
. Si accedo a 127.0.0.1:port localmente desde el servidor web, aparece la página de Django que indica que funcionó.
Me doy cuenta de que el servidor web Django no es un servidor de producción, pero para mí es importante para fines de prueba poder acceder desde el mundo exterior, es decir, no desde un navegador web en el servidor, sino desde una computadora diferente.
Lo intenté:
http://mywebserver:port_django_runs_on
Pero no funcionó. También intenté usar el IP en su lugar (basado en ifconfig) para acceder:
http://myipaddress:port_django_runs_on
que tampoco funcionó.
El servidor web se está ejecutando, por lo que debe ser accesible desde el exterior, no estoy seguro de cómo. Estoy ejecutando Linux con Apache, aunque no configuré Django con Apache.
¿Alguna idea sobre cómo hacer esto?
Elija uno o más de:
- Su aplicación no está escuchando con éxito en la IP prevista: PORT
- Porque no lo has configurado con éxito
- Porque el usuario no tiene permiso para
- Su aplicación está escuchando con éxito en la IP deseada: PUERTO, pero los clientes no pueden alcanzarla porque
- El servidor local iptables lo impide.
- Un firewall lo previene.
Por lo tanto, puede verificar que su aplicación esté escuchando con éxito ejecutando lsof -i
como raíz en la máquina y busque una entrada python
con el puerto correspondiente que ha especificado.
Los usuarios no root generalmente no pueden vincularse a los puertos <1024.
Tendrá que mirar iptables -nvL
para ver si hay una regla que impida el acceso al puerto ip: al que está intentando enlazar su aplicación.
Si hay un firewall en sentido ascendente y no sabe mucho al respecto, deberá hablar con sus administradores de red.
Para usuarios de AWS.
Tuve que usar los siguientes pasos para llegar allí.
1) Asegúrese de que pip y django estén instalados en el nivel sudo
- sudo apt-get install python-pip
- sudo pip install django
2) Asegúrese de que las reglas de grupo de seguridad incluyan http en el puerto 80 para 0.0.0.0/0
- configurado a través de la consola de AWS
3) Agregue IP pública y DNS a ALLOWED_HOSTS
- ALLOWED_HOSTS es un objeto de lista que puede encontrar en settings.py
- ALLOWED_HOSTS = ["75.254.65.19", "ec2-54-528-27-21.compute-1.amazonaws.com"]
4) Inicie el servidor de desarrollo con sudo en el puerto 80
- sudo python manage.py runserver 0:80
El sitio ahora está disponible en cualquiera de los siguientes (no es necesario: 80 ya que es el predeterminado para http):
- [DNS público] es decir ec2-54-528-27-21.compute-1.amazonaws.com
- [IP pública] es decir, 75.254.65.19
Tuve que agregar esta línea a settings.py para que funcione (de lo contrario, se muestra un error cuando se accede desde otra computadora)
ALLOWED_HOSTS = [''*'']
luego ejecuté el servidor con:
python manage.py runserver 0.0.0.0:9595
También asegúrese de que el firewall permita conexiones a ese puerto
Voy a agregar esto aquí:
sudo python manage.py runserver 80
Vaya a su teléfono o computadora e ingrese la IP interna de su computadora (por ejemplo,
192.168.0.12
) en el navegador.
En este punto, debe estar conectado al servidor de Django.
Esto también debería funcionar sin sudo:
python manage.py runserver 0.0.0.0:8000
solo haz esto:
python manage.py runserver 0:8000
mediante el comando anterior, en realidad lo está vinculando a la dirección IP externa. entonces, cuando acceda a su dirección IP con el número de puerto, podrá acceder a ella en el navegador sin ningún problema.
simplemente escriba lo siguiente en la barra de direcciones del navegador:
<your ip address>:8000
p.ej:
192.168.1.130:8000
Es posible que deba editar settings.py agregue lo siguiente en settings.py en la última línea:
ALLOWED_HOSTS = [''*'']
Espero que esto ayude ...