Подтвердить что ты не робот

Подключение к серверу разработки EC2 Django

Я новичок в EC2 и веб-разработке. В настоящее время я запускаю экземпляр Linux EC2 и установил Django. Я создаю тестовый проект, прежде чем начать свой настоящий проект и попытаюсь запустить тестовый сервер Django.

Это мой вывод в оболочке:

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.

Чтобы проверить, что это wroking, я пробовал посетить: ec2-###-##-##-##.compute-1.amazonaws.com:8000, но я всегда получаю сообщение "Can not connect" из моего браузера.

Всякий раз, когда я делаю это на моем компьютере, однако я успешно попадаю на домашнюю страницу разработки DJango на 127.0.0.1:8000. Может ли кто-нибудь помочь мне разобраться, что я делаю неправильно/может отсутствовать, когда я делаю это на своем экземпляре EC2, а не на моем собственном ноутбуке?

4b9b3361

Ответ 1

У вас, вероятно, нет порта 8000, открытого на брандмауэре. Проверьте, в какой группе безопасности запущен ваш экземпляр (возможно, "по умолчанию" ) и проверьте, что он запущен. Вероятно, вы обнаружите, что порт 8000 не указан.

Ответ 2

Используя экземпляр ec-2 с Ubuntu, я обнаружил, что задание 0.0.0.0:8000 работало:

$python manage.py runserver 0.0.0.0:8000  

Конечно, 8000 необходимо открыть для TCP в настройках группы безопасности.

Ответ 3

1) Вам нужно убедиться, что порт 8000 добавлен как пользовательское правило TCP в список входящих входящих портов вашей группы безопасности

2) Вероятность того, что IP-адрес, который вы видите на вашей AWS-консоли, связан с вашим экземпляром, - это PUBLIC IP ИЛИ ОБЩЕСТВЕННОЕ доменное имя (т.е. ec2 - ### - # # - ## - ##. compute-1.amazonaws.com или 174.101.122.132), который назначает Amazon.

2.1) Если это общедоступный IP-адрес, то ваш экземпляр не имеет никакого способа узнать, какой назначенный ему публичный IP-адрес, скорее, он будет знать только назначенный локальный IP-адрес.

2.2) Чтобы получить локальный IP-адрес в системе Linux, введите:

    $ ifconfig

Затем просмотрите данные eth0, и вы увидите IP рядом с "inet addr" формата xxx.xxx.xxx.xxx(например, 10.10.12.135). Это ваш Локальный IP

3) Чтобы успешно запустить сервер, вы можете сделать одно из следующих двух:

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

** Второй вариант также отлично работает, как упоминал Эрнест Эзис в своем ответе. EDIT: из книги Django: "IP-адрес 0.0.0.0 сообщает серверу прослушивать любой сетевой интерфейс"

** Моя теория публичного IP-адреса может быть неправильной, поскольку я не уверен, как Amazon назначает IP-адреса. Буду признателен за исправление.

Ответ 4

Да, если вы используете опцию быстрого запуска EC2, вы должны добавить новое правило HTTP (как и показано в списке) для запуска сервера разработки.

Ответ 5

У меня была такая же проблема. Но я управлял RHEL на EC2. Кроме того, чтобы добавить правило в группу безопасности, мне пришлось вручную добавить порт в firewalld.

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

Это сработало для меня! (Хотя не знаю, почему я должен был это сделать)

Ответ 6

Этот ответ ниже работал для меня. В основном настройте экземпляр EC2 для прослушивания порта 8000.

Смотрите ответ здесь: fooobar.com/info/11238293/...