Как получить доступ к локальному веб-серверу 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.



есть идеи, как это сделать?

1632   6  

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 как корень на машине и искать 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 = ['*']

надеюсь, что это поможет...

Я собираюсь добавить это здесь:

  1. sudo python manage.py runserver 80

  2. перейдите на свой телефон или компьютер и введите свой внутренний 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

    Ничего не найдено.