Ответ 1
У вас, вероятно, нет порта 8000, открытого на брандмауэре. Проверьте, в какой группе безопасности запущен ваш экземпляр (возможно, "по умолчанию" ) и проверьте, что он запущен. Вероятно, вы обнаружите, что порт 8000 не указан.
Я новичок в 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, а не на моем собственном ноутбуке?
У вас, вероятно, нет порта 8000, открытого на брандмауэре. Проверьте, в какой группе безопасности запущен ваш экземпляр (возможно, "по умолчанию" ) и проверьте, что он запущен. Вероятно, вы обнаружите, что порт 8000 не указан.
Используя экземпляр ec-2 с Ubuntu, я обнаружил, что задание 0.0.0.0:8000 работало:
$python manage.py runserver 0.0.0.0:8000
Конечно, 8000 необходимо открыть для TCP в настройках группы безопасности.
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-адреса. Буду признателен за исправление.
Да, если вы используете опцию быстрого запуска EC2, вы должны добавить новое правило HTTP (как и показано в списке) для запуска сервера разработки.
У меня была такая же проблема. Но я управлял RHEL на EC2. Кроме того, чтобы добавить правило в группу безопасности, мне пришлось вручную добавить порт в firewalld.
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
Это сработало для меня! (Хотя не знаю, почему я должен был это сделать)
Этот ответ ниже работал для меня. В основном настройте экземпляр EC2 для прослушивания порта 8000.
Смотрите ответ здесь: fooobar.com/info/11238293/...