2010-07-25 4 views
26

Я в настоящее время пытаюсь создать рамки Django, и я бы поделился/представил/показал некоторые вещи, которые я сделал своим друзьям/друзьям. Я работаю в Ubuntu под Win7 через VMware. Поэтому мое желание/желание - отправить мой текущий pub-IP с портом (например, http://123.123.123.123:8181/django-app/) моим друзьям, чтобы они могли его протестировать.Как сделать devserver Django общедоступным? Возможно ли это вообще?

Проблема - я использую сервер Dev-сервера django (python /path-to-django-app/manage.py runningerver $ IP: $ PORT).

Как я могу сделать devserver общедоступным?

EDIT:

Ой, что-то я забыл упомянуть. Как мне грустно, я использую VMware с Ubuntu. У меня есть shellscript, который возвращает мне мой текущий INT-IP 192.168.xx.xx сохраняет его в среде переменной ($ CUR_IP) Таким образом, каждый раз, когда я хочу запустить Джанго 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 usabable outise слишком

+0

из того, что я помню из документации Django, я думаю, что они заявляют т Если сервер dev не прошел проверку на безопасность, это действительно нецелесообразно. И, как говорит ребус, он однопоточный, поэтому производительность под нагрузкой будет дерьмом. Лучше всего использовать плагины apache + или что угодно. – James

+0

Безопасность и производительность НЕ являются большим делом. Единственное, что я хочу, это показать, что я сделал и как это выглядит. Есть в настоящее время только один или два человека, которых было бы интересно увидеть этот примитивный дерьмо на работе =) –

ответ

3

192.168.*.* - это локальный адрес локальной сети - после того, как вы сделали правильный VMWare (или другой диспетчер VM) и заклинания брандмауэра, чтобы сделать его доступным из локальной сети, он по-прежнему не будет доступен извне локальной сети, т.е. из Интернета в целом (тоже хорошо, потому что такие серверы разработки не предназначены для обеспечения безопасности и масштабируемости).

Чтобы сделать порт компьютера с локальным IP-доступом, видимым в Интернете в целом, вам нужен маршрутизатор с возможностью «виртуальных серверов» (многие маршрутизаторы, даже дешевые, предлагают его, но это невозможно. быть конкретным в том, чтобы включать его, поскольку каждый бренд имеет свой собственный индивидуальный подход). Я бы также рекомендовал dyndns или другую аналогичную услугу, чтобы связать стабильное DNS-имя с вашим неизменным общедоступным IP-адресом (если вы, разумеется, не пытаетесь использовать статический IP-адрес у своего поставщика подключений, но последний вариант становится все более дорогостоящим).

superuser.com или serverfault.com могут предоставить лучшие ответы и подробную информацию (как только вы дадите каждую небольшую деталь своей конфигурации в вопросе), поскольку этот вопрос не имеет ничего общего с разработкой программного обеспечения и все, что связано с администрированием сервера и конфигурации.

82
python manage.py runserver 0.0.0.0:8181 

Это будет run development server, которые должны слушать на всех IP-адресов на порт 8181.

Обратите внимание, что по состоянию на Jun 17, 2011 Django development сервера резьбе по по умолчанию (ticket #1609).

Из документации:

Note that the default IP address, 127.0.0.1, is not accessible from other machines on your network. To make your development server viewable to other machines on the network, use its own IP address (e.g. 192.168.2.1) or 0.0.0.0.

+0

, так что единственный способ сделать это - это закрепить apache, mod_py и т. Д.? Простой - использовать «обычный» веб-сервер (apache, lighttp и т. Д.) Вместо DevServer django? –

+0

Я бы сказал, что это зависит от количества разработчиков, я работаю в небольшой команде и хвастаюсь, что использую сервер разработки, но если вам нужно много параллельных подключений, я бы предложил использовать реальный веб-сервер (мы используем [Apache и mod_wsgi] (http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/), [mod_python] (http://docs.djangoproject.com/en/dev/howto/deployment/modpython/ ? from = olddocs) больше не поддерживается.) –

+0

И, по состоянию на более позднюю дату, кажется [mod_python] (http://modpython.org/) выпущена в более новой версии –

0

Вам необходимо настроить Мостовое соединение в VMWare, а также предоставить доступ к целевой порт в брандмауэре Ubuntu.

+0

Way bridgeed? Я использую NAT-настройки, и я могу получить доступ к этому IP извне (только HOST) Зачем (зачем) настраивать ubuntu-firewall? Нужно ли разрешать доступ снаружи для других (не-хостских) машин? –

9

Предполагая, что вы установили рубин, вы просто должны получить localtunnel:

gem install localtunnel 

затем запустить сервер разработки питона с:

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 

Всё.

+1

gem install localtunnel дает это на Ubuntu 14.04: ОШИБКА: Не удалось найти действительный gem 'localtunnel' (> = 0) в любом репозитории ОШИБКА: Возможные альтернативы: localone, rack-tunnel @trez –

+1

Ubuntu 12.04: '$ sudo npm установите -g localtunnel', запустите свой сервер разработки python, а затем в другой оболочке '$ lt --port 8000'. Источник: http://localtunnel.me – Moreno

+0

Это хорошо работает, чтобы следить за обновлением @ Moreno до этого ответа. Для тех, у кого еще нет npm, установите https: // nodejs.org/и npm будут связаны с ним. Комбинация этих источников является единственным действительно полным решением, которое я вижу на этой странице. – AlanSE

1

Если вы используете Virtualbox, вам необходимо изменить сетевые настройки в VB с «NAT» на «Bridged Adapter». Затем перезапустите Linux. Теперь, если вы запустите sudo ifconfig, вы сможете увидеть свой IP-адрес, например 192.168.*.*. Последний шаг runserver

python manage.py runserver 192.168.*.*:8000

Ура!

1

Уже ответил, но с добавлением НПМ дублер же localtunnel

sudo npm install -g localtunnel 

lt --port 8000 --subdomain yash 
1

мне пришлось добавить эту строку в settings.py для того, чтобы сделать его работу (в противном случае он показывает ошибки при доступе с другого компьютера)

ALLOWED_HOSTS = ['*'] 

побежал сервер с:

python manage.py runserver 0.0.0.0:9595 
+0

это работает для меня. – DEV

Смежные вопросы