Я следовал инструкциям здесь для выполнения 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:порту, к которому вы пытаетесь привязать ваше приложение.
Если есть вышестоящий брандмауэр, а вы не очень много о нем знаете, вам нужно поговорить с администраторами сети.