Подключение к серверу разработки EC2 Django - PullRequest
22 голосов
/ 26 марта 2012

Я новичок в 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.

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

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

Ответы [ 5 ]

42 голосов
/ 12 октября 2012

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

$python manage.py runserver 0.0.0.0:8000  

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

19 голосов
/ 26 марта 2012

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

9 голосов
/ 24 ноября 2013

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

2) Скорее всего, IP-адрес, который вы видите в списке на консоли AWS, которыйк вашему экземпляру относится ОБЩЕСТВЕННЫЙ 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-адреса.Буду признателен за исправление.

1 голос
/ 01 апреля 2016

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

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

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

1 голос
/ 16 сентября 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...