python - ¿Cómo hacer público el servidor de servidores de Django? ¿Es generalmente posible?
devserver (7)
Actualmente estoy probando el marco de Django y compartiría / presentaría / mostraría algunas cosas que he hecho a mi compañero / amigos. Trabajo en Ubuntu bajo Win7 a través de VMware. Así que mi deseo / deseo es enviar mi pub-IP actual con puerto (por ejemplo, http://123.123.123.123:8181/django-app/ ) a mis amigos para que puedan probarlo.
El problema es que uso el servidor Dev de django (python /path-to-django-app/manage.py runserver $ IP: $ PORT).
¿Cómo hago público el servidor del servidor?
EDITAR:
Oh, hay algo que olvidé mencionar. Como me entristece yo uso VMware con Ubuntu. Tengo un shellscript que me devuelve mi int-IP actual 192.168.xx.xx y lo guarda en una variable de entorno ($ CUR_IP) Entonces, cada vez que quiero ejecutar el servidor de servidores de django simplemente ejecuto
python /path-to-django-site/manage.py runserver $CUR_IP:8080
De esta manera, me convierto en una dirección http (por ejemplo, http://192.168.40.145:8080/app-name/ ) que PUEDO UTILIZAR FUERA DE MI MÁQUINA VIRTUAL. Podría probarlo en mi máquina host (win7). Esa es en realidad la razón por la que hice la pregunta. Pensé que hay una manera de usar el ext-IP y hacer que también se pueda utilizar el servidor de ejecución.
Asumiendo que tienes Ruby instalado, solo tienes que obtener localtunnel:
gem install localtunnel
a continuación, inicie su servidor de desarrollo de Python con:
python manage.py runserver 0.0.0.0:8000
en otro shell, comience localtunnel:
localtunnel -k ~/.ssh/id_rsa.pub 8000
Eso dará salida a una url para acceder a su servidor local.
Port 8000 is now publicly accessible from http://xxxx.localtunnel.com
Eso es.
Debe configurar redes puenteadas en VMWare y también otorgar acceso al puerto de destino en el firewall de Ubuntu.
Si está utilizando Virtualbox, debe cambiar la configuración de red en VB de "NAT" a "Adaptador puenteado". Luego reinicie el linux. Ahora, si ejecuta sudo ifconfig
, podrá ver su dirección IP como 192.168.*.*
. El último paso es runserver.
python manage.py runserver 192.168.*.*:8000
¡Aclamaciones!
Tuve que agregar esta línea a settings.py para que funcione (de lo contrario, muestra un error cuando se accede desde otra computadora)
ALLOWED_HOSTS = [''*'']
luego corrió el servidor con:
python manage.py runserver 0.0.0.0:9595
Ya respondí pero agregando npm alternativo del mismo túnel local
sudo npm install -g localtunnel
lt --port 8000 --subdomain yash
192.168.*.*
Es una dirección privada de LAN: una vez que haya realizado el VMWare (u otro administrador de VM) y los encantamientos de cortafuegos para que sea accesible desde la LAN, no será accesible desde fuera de la LAN. es decir, desde Internet en general (algo bueno también, porque dichos servidores de desarrollo no están diseñados para la seguridad y la escalabilidad).
Para hacer que algunos puertos de una máquina con una IP LAN privada sea visible en Internet en general, necesita un enrutador con capacidad de "servidores virtuales" (muchos enrutadores, incluso los baratos, lo ofrecen, pero es imposible ser específico acerca de habilitar (ya que cada marca tiene su propia forma idiosincrásica). También recomendaría dyndns u otro servicio similar para asociar un nombre de DNS estable a su IP pública siempre variable (a menos que se trate de una IP estática de su proveedor de conectividad, por supuesto, pero la última opción es cada vez más costosa) ).
superuser.com o serverfault.com pueden proporcionar mejores respuestas y detalles (una vez que proporcione cada pequeño detalle de su configuración en una pregunta) ya que la pregunta no tiene mucho que ver con el desarrollo de software y todo lo relacionado con la administración y configuración del servidor.
python manage.py runserver 0.0.0.0:8181
Esto ejecutará el servidor de desarrollo que debería escuchar en todas las IP en el puerto 8181.
Tenga en cuenta que, a partir del 17 de junio de 2011, el servidor de desarrollo de Django está enlazado de manera predeterminada (ticket # 1609) .
De docs:
Tenga en cuenta que la dirección IP predeterminada, 127.0.0.1, no es accesible desde otras máquinas en su red. Para hacer que su servidor de desarrollo sea visible para otras máquinas en la red, use su propia dirección IP (por ejemplo, 192.168.2.1) o 0.0.0.0.