Как сделать Django devserver публичным? Это вообще возможно?
В настоящее время я пробую Django-фреймворк, и я бы поделился/подарил/показал некоторые вещи, которые я сделал своим коллегам/друзьям. Я работаю в Ubuntu под Win7 через VMware. Так что мое желание/желание - отправить мой текущий pub-IP с портом (например, http://123.123.123.123:8181/django-app/) моим друзьям, чтобы они могли проверить его.
Проблема в том, что я использую сервер django Dev (python/path-to-django-app/manage.py runserver $ IP: $ PORT).
Как мне сделать общедоступным devserver?
РЕДАКТИРОВАТЬ:
О, я кое-что забыл упомянуть. Как мне грустно, я использую VMware с Ubuntu. У меня есть шеллскрипт, который возвращает мне мой текущий int-IP 192.168.xx.xx и сохраняет его в переменной среды ($ CUR_IP). Поэтому каждый раз, когда я хочу запустить django devserver, я просто выполняю
python /path-to-django-site/manage.py runserver $CUR_IP:8080
Таким образом, я становлюсь http-адресом (например, http://192.168.40.145:8080/app-name/), который я МОГУ ИСПОЛЬЗОВАТЬ ВНЕ МОЕЙ Виртуальной машины. Я мог бы проверить это на моем хосте (win7). Это на самом деле причина, почему я задал вопрос. Я думал, что есть способ использовать ext-IP и сделать runserver пригодным для использования снаружи
Ответы
Ответ 1
192.168.*.*
является локальным адресом LAN - после того, как вы сделали правильный VMWare (или другой диспетчер VM) и брандмауэры, чтобы сделать его доступным из локальной сети, он по-прежнему не будет доступен извне локальной сети, т.е. из Интернета в целом (хорошо, потому что такие серверы разработки не предназначены для обеспечения безопасности и масштабируемости).
Чтобы сделать порт компьютера с локальным IP-доступом, видимым в Интернете в целом, вам нужен маршрутизатор с возможностью "виртуальных серверов" (многие маршрутизаторы, даже дешевые, предлагают его, но это невозможно особенно для его включения, поскольку каждый бренд имеет свой собственный индивидуальный подход). Я бы также рекомендовал dyndns или другую аналогичную услугу, чтобы связать стабильное DNS-имя с вашим постоянно меняющимся общедоступным IP-адресом (если вы не разрываете для статического IP-адреса от вашего провайдера соединений, конечно, но последний вариант становится все дороже).
superuser.com или serverfault.com могут предоставлять более качественные ответы и подробности (как только вы дадите каждую маленькую деталь своей конфигурации в вопросе), поскольку вопрос не имеет ничего общего с разработкой программного обеспечения и всем, что связано с администрированием сервера и конфигурации.
Ответ 2
python manage.py runserver 0.0.0.0:8181
Это будет запустить сервер разработки, который должен прослушивать все IP-адреса на порту 8181.
Обратите внимание, что с 17 июня 2011 г. Django development сервер по умолчанию по умолчанию (билет № 1609).
Из документов:
Обратите внимание, что IP-адрес по умолчанию, 127.0.0.1, недоступен из других компьютеров в вашей сети. к сделать ваш сервер разработки видимым к другим машинам в сети, используйте его собственный IP-адрес (например, 192.168.2.1) или 0.0.0.0.
Ответ 3
Предполагая, что у вас установлен рубин, вам просто нужно получить localtunnel:
gem install localtunnel
затем запустите свой сервер разработки python с помощью:
python manage.py runserver 0.0.0.0:8000
в другой оболочке, запустите localtunnel:
localtunnel -k ~/.ssh/id_rsa.pub 8000
Это приведет к выводу URL-адреса для доступа к вашему локальному серверу.
Port 8000 is now publicly accessible from http://xxxx.localtunnel.com
Что это.
Ответ 4
Уже ответили, но добавили npm alternate того же localtunnel
sudo npm install -g localtunnel
lt --port 8000 --subdomain yash
Ответ 5
Если вы используете Virtualbox, вам необходимо изменить сетевые настройки в VB с "NAT" на "Bridged Adapter". Затем перезапустите Linux. Теперь, если вы запустите sudo ifconfig
, вы сможете увидеть свой IP-адрес, например 192.168.*.*
. Последним шагом является runerver
python manage.py runserver 192.168.*.*:8000
Ура!
Ответ 6
Мне пришлось добавить эту строку в settings.py, чтобы она работала (в противном случае она отображается с ошибкой при доступе с другого компьютера)
ALLOWED_HOSTS = ['*']
затем запустил сервер с помощью:
python manage.py runserver 0.0.0.0:9595
Ответ 7
Вам необходимо настроить мостовую сеть в VMWare, а также предоставить доступ к целевому порту в брандмауэре Ubuntu.