Как получить доступ к локальному веб-серверу 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.
Любые идеи о том, как это сделать?
Ответы
Ответ 1
Вам нужно запустить сервер разработки, чтобы он прослушивал интерфейс в вашей сети.
например.
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
Ответ 2
Выберите один или несколько из:
- Ваше приложение не успешно прослушивает IP-адрес: PORT
- Поскольку вы не настроили его успешно
- Поскольку у пользователя нет разрешения на
- Ваше приложение успешно прослушивает IP-адрес PORT, но клиенты не могут его достать, потому что
- Локальные iptables сервера предотвращают его.
- Брандмауэр предотвращает это.
Итак, вы можете проверить, что ваше приложение успешно прослушивается, запустив lsof -i
как root на компьютере и найдите запись python
с соответствующим указанным вами портом.
Пользователи без полномочий root обычно не могут связываться с портами < 1024.
Вам нужно посмотреть iptables -nvL
, чтобы узнать, есть ли правило, которое предотвратит доступ к ip-порту, к которому вы пытаетесь привязать ваше приложение.
Если есть брандмауэр вверх и вы не знаете об этом, вам нужно поговорить с сетевыми администраторами.
Ответ 3
Мне пришлось добавить эту строку в settings.py, чтобы она работала (в противном случае она обнаружила ошибку при доступе с другого компьютера)
ALLOWED_HOSTS = ['*']
затем запустил сервер с помощью:
python manage.py runserver 0.0.0.0:9595
Также убедитесь, что брандмауэр разрешает подключения к этому порту
Ответ 4
просто выполните это:
python manage.py runserver 0:8000
указанной командой вы фактически привязываете ее к внешнему IP-адресу.
поэтому теперь, когда вы получаете доступ к своему IP-адресу с номером порта, вы сможете без проблем получить к нему доступ в браузере.
просто введите в адресной строке браузера следующее:
<your ip address>:8000
например:
192.168.1.130:8000
вам может потребоваться отредактировать параметр settings.py
добавьте следующее в settings.py в последней строке:
ALLOWED_HOSTS = ['*']
надеюсь, что это поможет...
Ответ 5
Я собираюсь добавить это здесь:
-
sudo python manage.py runserver 80
-
Перейдите на свой телефон или компьютер и введите внутренние IP-адреса своих компьютеров (например, 192.168.0.12
) в браузер.
В этот момент вы должны быть подключены к серверу Django.
Это также должно работать без sudo:
python manage.py runserver 0.0.0.0:8000
Ответ 6
Для пользователей AWS.
Мне нужно было выполнить следующие шаги:
1) Убедитесь, что pip и django установлены на уровне sudo
- sudo apt-get install python-pip
- sudo pip install django
2). Убедитесь, что правила безопасности в группе привязки включают http на порт 80 для 0.0.0.0/0
- настроен через консоль AWS
3) Добавить общедоступный IP и DNS в ALLOWED_HOSTS
- ALLOWED_HOSTS - это объект списка, который вы можете найти в settings.py
- ALLOWED_HOSTS = [ "75.254.65.19", "ec2-54-528-27-21.compute-1.amazonaws.com" ]
4) Запустить сервер разработки с помощью sudo на порту 80
- sudo python manage.py runningerver 0:80
Теперь сайт доступен по одному из следующих (нет необходимости: 80, поскольку по умолчанию для http):
- [Public DNS], то есть ec2-54-528-27-21.compute-1.amazonaws.com
- [Public IP] i.e 75.254.65.19