Как получить доступ к локальному веб-серверу 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.
есть идеи, как это сделать?
6 ответов:
вы должны запустить сервер разработки таким образом, что он слушает на интерфейсе в вашей сети.
например.
python manage.py runserver 0.0.0.0:8000прослушивание интерфейс на порту 8000.
неважно, являетесь ли Вы доступ к веб-серверу с IP или hostname. Я думаю, вы все еще находитесь в своей собственной локальной сети.
Если вы действительно хотите получить доступ к серверу извне, вам также нужно настроить маршрутизатор для пересылки порта, например8000to ваш сервер.
Проверьте брандмауэр на сервере, разрешены ли входящие подключения к используемому порту!
предполагая, что вы можете получить доступ к серверу Apache извне успешно, вы также можете попробовать это:
- остановите сервер Apache, так что порт
80бесплатно.- запустите сервер разработки с помощью
sudo python manage.py runserver 0.0.0.0:80
мне пришлось добавить эту строку settings.py для того, чтобы заставить его работать (в противном случае он показал ошибку при доступе с другого компьютера)
ALLOWED_HOSTS = ['*']затем запустил сервер с:
python manage.py runserver 0.0.0.0:9595также убедитесь, что брандмауэр будет разрешать подключения к этому порту
Выберите один или несколько из:
- ваше приложение не успешно прослушивает назначенный IP: порт
- потому что вы не правильно настроили его
- потому что у пользователя нет разрешения на
- ваше приложение успешно прослушивает назначенный IP: порт, но клиенты не могут его достичь, потому что
- локальный iptables сервера предотвращает это.
- брандмауэр предотвращает его.
таким образом, вы можете проверить, что ваше приложение успешно слушал, запустив
lsof -iкак корень на машине и искатьpythonзапись с соответствующим портом, который вы указали.некорневые пользователи обычно не могут привязываться к портам
вам нужно будет посмотреть на
iptables -nvLчтобы узнать, есть ли правило, которое запрещает доступ к IP: порту, к которому вы пытаетесь привязать свое приложение.Если есть восходящий брандмауэр, и вы не знаете много об этом, вам нужно будет поговорить с администраторами сети.
просто сделать это:
python manage.py runserver 0:8000по приведенной выше команде вы фактически привязываете его к внешнему IP-адресу. так что теперь, когда вы получаете доступ к вашему IP-адресу с номером порта, вы сможете получить доступ к нему в браузере без каких-либо проблем.
просто введите в адресной строке браузера:
<your ip address>:8000например:
192.168.1.130:8000возможно, вам придется отредактировать settings.py добавить в текст следующее: settings.py в последний раз линия:
ALLOWED_HOSTS = ['*']надеюсь, что это поможет...
Я собираюсь добавить это здесь:
sudo python manage.py runserver 80перейдите на свой телефон или компьютер и введите свой внутренний IP-адрес компьютера (например
192.168.0.12) в браузере.в этот момент Вы должны быть подключены к серверу Django.
Это должно работать без sudo:
python manage.py runserver 0.0.0.0:8000
для пользователей AWS.
Я должен был использовать следующие шаги, чтобы получить там.
1) убедитесь, что pip и django установлены на уровне sudo
- sudo apt-get install python-pip
- sudo pip install django
2) убедитесь, что правила группы безопасности in-bound включают 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 runserver 0: 80
сайт теперь доступен на любом из следующее (Нет необходимости :80, как это по умолчанию для http):
- [Public DNS] т. е. ec2-54-528-27-21.compute-1.amazonaws.com
- [публичный IP] т. е. 75.254.65.19
Comments