Как получить доступ к локальному веб-серверу Django от внешнего мира

Я следовал инструкциям здесь для выполнения Django, использующего встроенный веб-сервер, и смог успешно выполнить его использование python manage.py runserver. Если я получаю доступ 127.0.0.1:port локально от веб-сервера, я добираюсь, страница Django, указывающая на это, работала.

Я понимаю, что веб-сервер Django не является рабочим сервером, но для меня для тестирования важно смочь получить доступ к нему от внешнего мира - т.е. не от веб-браузера на сервере, а от другого компьютера.

Я попробовал:

http://mywebserver:port_django_runs_on

но это не работало. Я также пытался использовать IP вместо этого (на основе ifconfig) к доступу:

http://myipaddress:port_django_runs_on 

который не работал также.

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

Какие-либо идеи о том, как сделать это?

160
задан the Tin Man 9 August 2016 в 22:05
поделиться

2 ответа

Вы должны запустить сервер разработки так, чтобы он слушал на интерфейсе вашей сети.

Например,

python manage.py runserver 0.0.0.0:8000

прослушивает каждый интерфейс на порту 8000.

Не имеет значения, обращаетесь ли вы к веб-серверу по IP или по имени хоста. Полагаю, вы все еще находитесь в своей собственной локальной сети.
Если вы действительно хотите получить доступ к серверу извне, вам также необходимо настроить ваш маршрутизатор на проброс порта, например, 8000 на ваш сервер.


Проверьте брандмауэр на вашем сервере, разрешены ли входящие соединения к используемому порту!

Предполагая, что вы можете успешно получить доступ к вашему серверу Apache извне, вы также можете попробовать следующее:

  • Остановите сервер Apache, чтобы порт 80 был свободен.
  • Запустите сервер разработки с помощью sudo python manage.py runserver 0.0.0.0:80
283
ответ дан 23 November 2019 в 21:30
поделиться

Выберите одно или несколько из:

  • Ваше приложение не может успешно прослушивать IP:PORT.
    • Потому что вы не настроили его успешно
    • Потому что у пользователя нет прав
  • Ваше приложение успешно прослушивает IP:PORT, но клиенты не могут до него добраться, потому что
    • Локальный iptables сервера препятствует этому.
    • Брандмауэр препятствует этому.

Итак, вы можете проверить, что ваше приложение успешно прослушивается, запустив lsof -i от имени root на машине и ищите запись python с соответствующим портом, который вы указали.

Пользователи без права root обычно не могут привязываться к портам < 1024.

Вам нужно посмотреть iptables -nvL, чтобы увидеть, есть ли правило, которое запрещает доступ к ip:порту, к которому вы пытаетесь привязать ваше приложение.

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

14
ответ дан 23 November 2019 в 21:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: