2012-03-26 25 views
18

Soy nuevo en EC2 y desarrollo web. Actualmente tengo una instancia de Linux EC2 ejecutándose, y he instalado Django. Estoy creando un proyecto de prueba antes de comenzar con mi proyecto real e intenté ejecutar un servidor de prueba de Django.Conexión a EC2 Servidor de desarrollo Django

Esta es mi salida en el shell:

python manage.py runserver ec2-###-##-##-##.compute-1.amazonaws.com:8000 
Validating models... 

0 errors found 
Django version 1.3, using settings 'testsite.settings' 
Development server is running at http://ec2-###-##-##-##.compute-1.amazonaws.com:8000/ 
Quit the server with CONTROL-C. 

Para probar que se wroking He intentado visitar: ec2-###-##-##-##.compute-1.amazonaws.com:8000 pero siempre me sale un mensaje "No se puede conectar" de mi navegador.

Cada vez que hago esto en mi equipo lcoally Me parece sin embargo conseguir con éxito a la página de promoción DJango en 127.0.0.1:8000. ¿Podría alguien ayudarme a descubrir qué es lo que estoy haciendo mal/podría faltar cuando estoy haciendo esto en mi instancia de EC2 en comparación con mi computadora portátil?

+2

¿Resolvió este problema ahora? Me encuentro con el mismo problema. – Treper

Respuesta

16

Probablemente no tenga el puerto 8000 abierto en el firewall. Compruebe qué grupo de seguridad está ejecutando su instancia (probablemente "predeterminado") y verifique las reglas que se está ejecutando. Probablemente descubrirá que el puerto 8000 no está en la lista.

+0

De acuerdo, agregué 8000 a UDP, TCP y ALL a ICMP con 'default' como fuente, pero tratar de conectarme al puerto 8000 todavía no funciona. ¿Esto significa que quizás Django no está funcionando o aún es el cortafuegos en los servidores Amazon ec2? ¡Muchas gracias por su ayuda! –

+0

Abra una segunda conexión a la misma máquina y trate de telnet al puerto 80, 'telnet localhost 80' luego escriba' GET/'y presione enter un par de veces. Si no puede conectarse, el servidor no funciona correctamente, si puede y obtiene HTML del 'GET', entonces está entre el servidor y el lugar donde se encuentra el problema. – KayEss

+0

Tengo un "telnet: comando no encontrado" erorr:/ –

0

Sí, si se utiliza la opción de puesta en marcha rápida EC2, se debe añadir nueva regla HTTP (tal y como aparece en la lista) para ejecutar un servidor de desarrollo.

+1

¿Puedes aclarar "tal como aparece en la lista"? – pjmorse

35

Usando una instancia ec-2 con Ubuntu, he encontrado que la especificación de 0.0.0.0:8000 trabajó:

$python manage.py runserver 0.0.0.0:8000 

Por supuesto 8000 necesita ser abierto para TCP en la configuración del grupo de seguridad.

+1

¡Desearía haber visto este comentario hace 5 horas! ¡Gracias amigo! –

+0

También debe asegurarse de que este puerto aún no se esté utilizando. – bozdoz

+0

Esta es la respuesta correcta para esta pregunta. Gracias –

8

1) que necesita para asegurarse de que el puerto 8000 se añade como una regla TCP personalizado en la lista de grupos de seguridad de los puertos de entrada

2) Lo más probable es que la IP que ve mencionado en su consola de AWS, que es asociado a la instancia es una IP PÚBLICA o un nombre de dominio público (es decir, EC2 - ### - ## - ## - ## compute-1.amazonaws.com o 174.101.122.132.) que Amazon asigna.

2.1) Si se trata de una IP pública, a continuación, la instancia no tiene manera de saber cuál es la IP pública asignada a ella se, sino que sólo se conoce la su IP local asignada.

2.2) para obtener su IP local en un sistema Linux, escriba:

$ ifconfig 

Entonces vistazo a los datos eth0 y verá un lado de "inet addr" IP del formato xxx.xxx .xxx.xxx (por ejemplo 10.10.12.135) Este es su IP local

3) Para éxito de ejecución del servidor que puede hacer uno de los dos siguientes:

$ python manage.py runserver <LOCAL IP>:8000 
    or 
    $ python manage.py runserver 0.0.0.0:8000 

** La Opción Dos también funciona de maravilla como mencionó Ernest Ezis en su respuesta. EDITAR: De El libro de Django: "La dirección IP 0.0.0.0 indica al servidor para escuchar en cualquier interfaz de red"

** Mi teoría de la IP pública podría estar equivocado, ya que no estoy seguro de cómo Amazon asigna direcciones IP. Agradecería que me corrigieran.

+0

Muchas gracias, me salvaste el día. Gracias por compartir .. –

+0

Gracias! Su paso # 1 "Necesita asegurarse de que el puerto 8000 se agrega como una regla TCP personalizada en su lista de grupos de seguridad de puertos entrantes" era lo que necesitaba. Después, python manage.py runserver 0.0.0.0:8000 funcionó como un (py) charm. –

+0

cómo hacer el primer paso? –

1

Estaba teniendo el mismo problema. Pero estaba ejecutando RHEL en EC2.Además de agregar una regla al grupo de seguridad, tuve que agregar manualmente un puerto a firewalld.

firewall-cmd --permanent --add-port=8000/tcp 
firewall-cmd --reload 

¡Eso funcionó para mí! (Aunque no tengo idea de por qué tuve que hacer eso)

+0

Esto funcionó para mí en CENTOS7. Antes de abrir este puerto en el servidor de seguridad utilizando el firewall-cmd, la página de prueba era inaccesible desde ec2 - ### - ## - ## - ##. Compute-1.amazonaws.com:8000. Apareció en existencia inmediatamente después de probar esto. – eculeus

Cuestiones relacionadas