Как получить доступ к локальному веб-серверу 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. Думаю, ты все еще в своей локальной сети.
Если вы действительно хотите получить доступ к серверу извне, вам также нужно настроить маршрутизатор для пересылки порта, например 8000
to ваш сервер.
Проверьте брандмауэр на сервере, разрешены ли входящие подключения к используемому порту!
предполагая, что вы можете получить доступ к серверу 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
как root на машине и искать python
запись с соответствующим портом, который вы указали.
некорневые пользователи обычно не могут привязываться к портам
вам нужно посмотреть на iptables -nvL
чтобы узнать, есть ли правило, которое предотвратит доступ к порту ip:, к которому вы пытаетесь привязать свое приложение.
Если есть upstream firewall, и вы мало знаете об этом, вам нужно будет поговорить с сетевыми администраторами.
просто сделать это:
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-адрес компьютера (e.g
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 установить 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 runserver 0: 80
сайт теперь доступен на любом из следующее (Нет необходимости :80, поскольку это значение по умолчанию для http):
- [публичный DNS] т. е. ec2-54-528-27-21.compute-1.amazonaws.com
- [публичный IP] i.e 75.254.65.19