mojoPortal на русском

 

Добавление имени хоста в файл hosts для локального тестирования

Некоторые пользователи застопориваются на создании сайта по умолчанию и запуске всего под виртуальными папками, на машине разработчика. Этот способ отличается от стандартного создания сайта на сервере, при котором всё расположено в корневой директории. Также это может создать трудности при переносе проекта с компьютера разработчика на рабочий сервер.

Нет ничего сложного в установке дополнительно корневого веб-сайта в IIS на машине разработчика и использования файла hosts для построения карты дополнительных имен хостов  для тестирования.

Что такое имя хоста?

Для начала постараемся объяснить разницу между именем хоста и доменным именем. Когда Вы приобретаете доменное имя (вроде "mydomain.com"), оно же является именем хоста, но таковым оно является по умолчанию только потому, что у домена нет разделов (сегментов). Для любого доменного имени Вы можете установить множество имён хостов (например "www.mydomain.com", "foo.mydomain.com" или "cheeseburger.mydomain.com" будут корректны для Вашего домена). Иногда их называют субдомены, но, на наш взгляд, для большей ясности, это разные имена хостов. Если имя хоста - компьютер, то доменное имя - название группы компьютеров. Стандартная структура  "hostname.domainname". В случае с  "www.mydomain.com", "www" - часть хоста, а "mydomain.com" часть имени домена. При их объединении получается имя хоста, идентифицируемое по имени домена.

Исторически сложился следующий порядок в названиях хостов: "www.mydomain.com" для веб-сервера, "mail.mydomain.com" для почтового сервера и т.д. Но это не обязательные аббревиатуры. Вы можете использовать имя "www" или нет, на своё усмотрение. Люди просто привыкли видеть "www' в начале адреса сайта. У Вас может быть несколько сайтов (например "web1.mydomain.com", "web2.mydomain.com", "test.mydomain.com" и т.д.)

Имена хостов могут вести на разные ip адреса, или же несколько имён хостов указывает на один ip адрес. Компьютер может иметь один или больше ip адресов, следовательно один или больше имён хостов будут указывать на него.

Понимание того, как именам (именам хостов) присваиваются IP-адреса

Именам хостов присваиваются IP-адреса в DNS (Сервере доменных имен), но до проверки DNS серверов идёт обращение к данным на локальной машине, которые хранятся в файле хостов и, если находится необходимый адрес, то он используется вместо адреса из DNS. В локальной сети Вашего ИТ-отдела может быть установлен локальный сервер DNS для присвоения именам компьютеров в локальной сети IP-адресов. В Интернете есть множество DNS-серверов и, как правило, провайдер, которым Вы пользуетесь для подключения к Интернету, предоставляет DNS-сервер(ы) для Вас при указании IP-адреса. Эти DNS сервера в сочетании с другими серверами DNS из Интернета перенаправляют с имен хостов на IP-адреса, чтобы Ваш компьютер мог подключаться к ним.

Но, как упоминалось выше, до проверки серверов DNS ваша машина заглянет в файл хостов для проверки наличия имени хоста.

В Windows файл хостов расположен в папке "C:\Windows\system32\drivers\etc"

файл "hosts" не имеет расширения файла, но это просто текстовый файл. Чтобы изменить его нужно щелкнуть правой кнопкой на блокноте и выбрать "Запуск от имени администратора", затем перейти по адресу "C:\Windows\system32\drivers\etc"

Чтобы просмотреть все файлы, а не только TXT, необходимо изменить расширение файла в блокноте как показано здесь:

просмотр файла hosts

Затем Вы можете добавить свои собственные имена хостов, и присвоить им адрес, замкнутый на себя - 127.0.0.1

Вы можете видеть как именно работает имя хоста "localhost". Оно прописывается в Вашем файле хостов.

Файл hosts

Можно добавить любое имя хоста и связать его с ip адресом, просто поместив их в одну строку. Например:

127.0.0.1      mojotest1

Ip адрес 127.0.0.1  это специальный ip, который есть на каждом компьютере. Его также называют "внутренняя петля" (loopback address). Для любого компьютера этот адрес указывает сам на себя. Внутренняя петля даже не нуждается в наличии сетевой платы. "localhost" всегда указывает на внутреннюю петлю. В приведённом выше примере мы просто добавили дополнительное имя хоста для внутренней петли. Если у Вашей сетевой карты имеется фиксированый IP адрес, то Вы легко можете связать его с именем хоста вместо 127.0.0.1. Пусть Ваша карта имеет ip адрес  192.168.0.100, тогда следует внести следующую запись:

192.168.0.100 mojotest1

Что делает Узел по умолчанию (The Default Web Site) "Default"

В IIS можно установить  столько корневых уровней, сколько необходимо. Каждому сайту можно присвоить любой ip адрес. Следовательно, любые имена хостов приписанные к этому ip  адресу могут быть обработаны соответствующим IIS, привязанным к данному ip.

Однако, как уже говорилось, несколько имён хостов могут указывать на один ip адрес. Для запуска нескольких сайтов под разными именами хостов, ссылающимися на один ip адрес, у IIS есть специальная опция. На самом деле Вам даже не нужно указывать определённый ip. Достаточно просто оставить "All Unassigned" ("Все неназначенные") и добавить имя хоста. После этого запрос к конкретному имени будет перенаправлен к правильной корневой папке (сайту). В IIS, при выборе конкретного сайта, в правом окне отобразиться ссылка "Привязка" ("Bindings"), нажав на которую можно прописать имена хостов и ip адреса.

IIS присваивание имени хоста

Заметим, что не обязательно для тестирования привязывать имена хостов к соответствующим доменам. Можно использовать простой вариант вида "mojotest1" или, если Вам больше нравится - "www.fake.com",  "www.fake.home", "fake.home".

Что же такое "Узел по умолчанию" ("Default Web Site "Default")? Это обычный узел, не имеющий никаких привязок к ip и к именам хостов. Т.е., при обращению к какому-либо не прописанному имени хоста, запрос будет переадресован на узел по умолчанию. Это единственное предназначение данного узла. В случае если Вы укажете ему конкретное имя хоста, то он перестанет быть узлом по умолчанию. В нём нет ничего особенного, кроме отсутствия указания на имя хоста и ip адрес, поэтому можно легко удалить его и создать заново. Причем его имя может быть произвольным, т.к. для IIS не имеет значения, как называется узел по умолчанию.

Для добавления нового сайта в IIS? необходимо указать уникальный ip адрес или имя хоста. Если Вы попытаетесь создать сайт без уникальных ip или имени, то у Вас получится второй  узел по умолчанию, который не запустится или нарушит работу первого. С этим сталкиваются новички, которые не могут добавить новый сайт (по причине указанной выше) и идут по пути наименьшего сопротивления, просто присваивая веб сайту по умолчанию различные имена доменов и перенаправляя их на соответствующие виртуальные папки. Но это не отдельные сайты, а, всего лишь, папки в корневой директории.

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

Также смотрите

Оригинал на английском

http://mojoportal.net.ua/как-запустить-несколько-сайтов-на-iis.aspx