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




(4)

Я выполнил инструкции, чтобы запустить 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.

Есть идеи, как это сделать?


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

Например

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

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

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

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

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

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

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


Я должен был добавить эту строку в settings.py, чтобы заставить ее работать (в противном случае она обнаружила ошибку при доступе с другого компьютера)

ALLOWED_HOSTS = ['*']

затем запустил сервер с:

python manage.py runserver 0.0.0.0:9595

Также убедитесь, что брандмауэр разрешает подключения к этому порту


Я собираюсь добавить это здесь:

  1. sudo python manage.py runserver 80

  2. Перейдите на свой телефон или компьютер и введите внутренние IP- 192.168.0.12 своих компьютеров (например, 192.168.0.12 ) в браузер.

На этом этапе вы должны быть подключены к серверу Django.

Это также должно работать без sudo:

python manage.py runserver 0.0.0.0:8000




django