Я запускаю веб-сервер Django локально и хочу иметь возможность ввести www.my-site.dev или username.my-site.dev и получить эту карту для моего приложения Django.
Я видел множество решений для Apache и пытался добавить следующее в мой файл / etc / hosts, предполагая, что сервер Django также проверит /etc/hosts.
127.0.0.1:8000 www.my-site.dev
127.0.0.1:8000 username.my-site.dev
/etc/hosts
может указать доменное имя на IP, но это все. Они не могут указать порт 8000. Это работа браузера. setcap
, чтобы позволить Python подключить порт 80 . Последние два очень хакерские, но они бесконечно лучше, чем запуск сервера Django от имени root. Пожалуйста, никогда не делай этого. Для разработки я просто загружаю dev-сервер как и когда мне это нужно. Я запускаю только по одному, и он работает по умолчанию 127.0.0.0:8000
. Если эта модель вам подходит, и вы просто хотите разместить на своем доменном имени, просто что-то вроде этого к вашему /etc/hosts
:
127.0.0.1 my.domain.ext sub.my.domain.ext
Вы можете просто продолжать цепочку их, но помните, что это будет переопределить весь исходящий трафик для запросов в этих доменах. Ака: не забывайте, что вы взломали свой собственный DNS! Оттуда вы просто загружаете http://my.domain.ext:8000
и смотрите на свой сервер разработки.
Если вы хотите http://my.domain.ext
, вам придется либо взломать вещи (см. Выше), либо перейти к более традиционной инфраструктуре (ниже).
Если вам нужно запустить несколько серверов, я могу только предложить запустить правильный стек. Я бы запустил стек nginx + uwsgi + virtualenv. Что-то вроде того, что вы использовали бы в производстве. На самом деле, чем ближе вы сможете отразить производственную среду, тем лучше. Если вы используете Apache и modwsgi, сделайте это.
Это дает вам лучшую платформу для тестирования. Если вам нужно подключиться к отладке, я нахожу настройку uwsgi для ведения журнала (и отслеживания журнала) подходящей заменой для вывода с консоли в реальном времени.
Несколько вещей
1) Django, вероятно, не ссылается на ваш файл hosts. (Я говорю, вероятно, потому что я не использую Django, но для него нет смысла ссылаться на файл hosts, так как он не должен искать сам по себе).
2) Хосты предназначены для локального разрешения имен. Это не имеет ничего общего с портами. Если вы хотите, чтобы эти два сайта разрешались на вашем локальном компьютере, вы должны указать это в файле hosts.
127.0.0.1 www.my-site.dev username.my-site.dev
После этого вы можете получить доступ к сайту через веб-браузер, перейдя на
www.my-site.dev:8000
Единственный способ не набирать 8000 - это заставить Django прослушивать порт 80 (или если вы делаете SSL, 443). Это должно настраиваться в Django и не должно вызывать каких-либо проблем (если вы уже не запускаете что-то, использующее порт 80).
Я не эксперт, но, похоже, вам нужен DNS-сервер. В противном случае ваш браузер проверит всемирную паутину, чтобы попытаться найти www.my-site.dev, и не найдет ваш локальный компьютер, если вы не настроите DNS-сервер и не настроите клиентов, обращающихся к www.my-site.dev использовать DNS-сервер, который вы настроили. Затем DNS-сервер направит клиента на ваш локальный компьютер. Не обращай на меня внимания, если я ошибаюсь :)