Я выполнил инструкции здесь, чтобы запустить 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 извне успешно, вы также можете попробовать следующее:
80
свободен.sudo python manage.py runserver 0.0.0.0:80
Выберите один или несколько из:
Итак, вы можете проверить, что ваше приложение успешно прослушивается, запустив lsof -i
как root на компьютере и найдите запись python
с соответствующим указанным вами портом.
Пользователи без полномочий root обычно не могут связываться с портами < 1024.
Вам нужно посмотреть iptables -nvL
, чтобы узнать, есть ли правило, которое предотвратит доступ к ip-порту, к которому вы пытаетесь привязать ваше приложение.
Если есть брандмауэр вверх и вы не знаете об этом, вам нужно поговорить с сетевыми администраторами.
you haven't configured it successfully
вы объяснить, что you haven't configured it successfully
?
django runserver
выполнения django runserver
действительно прослушивает то, что вы хотите, например, с помощью lsof
.
просто выполните это:
python manage.py runserver 0:8000
указанной командой вы фактически привязываете ее к внешнему IP-адресу. поэтому теперь, когда вы получаете доступ к своему IP-адресу с номером порта, вы сможете без проблем получить к нему доступ в браузере.
просто введите в адресной строке браузера следующее:
<your ip address>:8000
например:
192.168.1.130:8000
вам может потребоваться отредактировать параметр settings.py добавьте следующее в settings.py в последней строке:
ALLOWED_HOSTS = ['*']
надеюсь, что это поможет...
Мне пришлось добавить эту строку в settings.py, чтобы она работала (в противном случае она обнаружила ошибку при доступе с другого компьютера)
ALLOWED_HOSTS = ['*']
затем запустил сервер с помощью:
python manage.py runserver 0.0.0.0:9595
Также убедитесь, что брандмауэр разрешает подключения к этому порту
Я собираюсь добавить это здесь:
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
2). Убедитесь, что правила безопасности в группе привязки включают http на порт 80 для 0.0.0.0/0
3) Добавить общедоступный IP и DNS в ALLOWED_HOSTS
4) Запустить сервер разработки с помощью sudo на порту 80
Теперь сайт доступен по одному из следующих (нет необходимости: 80, поскольку по умолчанию для http):