Доступ к серверу запуска Django на виртуальном хостинге - PullRequest
2 голосов
/ 24 ноября 2011

Я занимаюсь разработкой приложения Django на сервисе общего хостинга (hostmonster) и, конечно, не могу получить доступ к серверу выполнения по умолчанию по IP-адресу localhost 127.0.0.1:8000 через Firefox.Документация сайта Django Project подробно описывает, как настроить удаленный доступ к серверу выполнения, но я не добиваюсь успеха.Установка сервера запуска на 0.0.0.0:8000 оставляет его недоступным.Хотя я подумал, что это не сработает, я попытался настроить сервер запуска на свой домашний IP-адрес.Это дало мне ошибку «Этот IP-адрес не может быть назначен», как я и ожидал.

Итак, я попытался настроить его для моего размещенного IP-адреса, через который я SSH в первомместо.Это настроено правильно, но все еще не смог получить доступ к адресу через Firefox.Когда я подключаю IP-адрес сам по себе, я просто получаю страницу ошибки hostmonster.Когда я добавляю номер порта, время соединения истекает.Когда я подключаю IP-адрес, номер порта и / admin для доступа к созданной мной странице администратора Django, у меня также заканчивается время ожидания.

Ответы [ 4 ]

6 голосов
/ 24 ноября 2011

Другие комментарии о (не) использовании runserver в производственных средах применимы.

Если вам действительно нужно запустить его таким образом, я бы рекомендовал использовать туннелирование SSH через ключ -L.

например. ssh -L 8888:127.0.0.1:8000 <user>@<remotehost>

Тогда вы сможете просматривать сайт на своем локальном компьютере через http://localhost:8888

.

Предполагается, что вы пытаетесь сделать приложение доступным для себя во время разработки.

2 голосов
/ 24 ноября 2011

Работает: python manage.py runserver 0.0.0.0:8000

Размещает веб-сайт на порту 8000 и может быть доступен через http://site.com:8000/

Работает: python manage.py runserver 0.0.0.0:80 (Вам потребуется root-доступ)

Здесь размещается веб-сайт с портом 80, доступ к которому можно получить через http://site.com/ (здесь неявно указан порт 80).

Но, поскольку вы говорите, что находитесь на общем ресурсехостинг - так что вы не получите root-доступ, поэтому вы не можете разместить на порту 80, как это.Для портирования хостинга через порт 80 на виртуальном хостинге вам необходимо создать виртуальный хостинг на веб-сервере, работающем на этом общем сервере, и это можно сделать только при наличии доменного имени.

Итак, для целей тестирования -Я бы посоветовал вам использовать порт 8000 и использовать его через http://site.com:8000/ из вашего дома.

Здесь 0.0.0.0 означает, что он размещен для всех диапазонов ip.(замените site.com своим IP-адресом, если у вас нет имени домена)

Если вы все еще не можете получить доступ - это может означать, что хостинг портов на этом сервере запрещен для пользователей, посколькунелегко на общем сервере со многими многими разделяющими пользователями.

0 голосов
/ 24 ноября 2011

Во-первых, веб-сервер обычно имеет как минимум два «интерфейса», каждый с одним или несколькими IP-адресами. Интерфейс «loopback» будет иметь IP-адрес 127.0.0.1 и доступен ТОЛЬКО с компьютера, на котором работает сервер.

Итак, работа на 127.0.0.1:8000 означает, что вы указываете runserver, что он доступен ТОЛЬКО с самого сервера на порту 8000. Это безопасно, но немного сложно для тестирования. Чтобы увидеть результат в веб-браузере, вам нужно использовать туннель SSH с переадресацией портов. (Я бы объяснил, как это сделать, но, честно говоря, это не решит вашу реальную проблему. Но я вернусь к этому.)

Запуск: 8000 означает, что вы указываете runserver, чтобы он был доступен из Интернета - что, вероятно, вам и нужно. Если это не работает, то это, вероятно, означает, что они брандмауэр порта. Вы можете связаться со службой поддержки и попросить их открыть дыру, ИЛИ использовать SSH-туннель, но на этом этапе я должен спросить: чего вы пытаетесь достичь?

Вы не должны использовать runserver для производства. Используйте runserver на своем локальном компьютере для тестирования, затем разверните его на Hostmonster. (Очевидно, они поддерживают Django через FastCGI, согласно их веб-сайту.) Не используйте runserver на Hostmonster, он не будет делать то, что вы хотите.

0 голосов
/ 24 ноября 2011

Держу пари, что порт 8000 заблокирован.Это объясняет таймауты, которые вы упоминаете в последних двух предложениях: брандмауэр настроен так, чтобы просто отбрасывать пакеты и не возвращать ответы об отказе в соединении.

Вам придется спросить свою хостинговую компанию, есть ли способвокруг этого, но не может быть одного.По крайней мере, им придется открыть некорневой порт (8000 или что-то еще через 1023), но ОС не может сказать, когда вы открываете порт или что-то еще, так что это будет потенциальная дыра в безопасности(например, злоумышленник может настроить что-то для прослушивания команд на этом порту, точно так же, как вы).

runserver на самом деле не было предназначено для запуска на рабочей коробке.Он предназначен для работы на компьютере разработчика с небольшой тестовой базой данных или чем-то еще.Это позволяет вам вытащить большинство ошибок.Затем вы отправляете свой код на бета-сервер, сконфигурированный с реальными серверными приложениями (например, apache на порту 80) и базами данных и т. Д., Чтобы выполнить тяжелое тестирование (по крайней мере, убедитесь, что есть фильтр для подключения IP-адресов).Затем вы продвигаетесь к производству оттуда.Или нет;Есть много способов сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...