Как организовать несколько сайтов на одном сервере IIS. Запуск сайта на iis


Как запустить несколько сайтов на IIS

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

Нет ничего сложного в установке дополнительно корневого веб-сайта в 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, необходимо изменить расширение файла в блокноте как показано здесь:

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

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

Можно добавить любое имя хоста и связать его с 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 адреса.

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

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

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

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

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

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

mojoportal.net.ua

Установка Asp.Net и регистрация в IIS

Сегодня мы поговорим о том, как перенести Asp.Net-приложение из среды разработки Visual Studio на веб-сервер IIS.

При запуске в Visual Studio веб-приложение разворачивается на Visual Studio Development Server. Это внутренний веб-сервер, работающий локально в операционной системе. Он создан специально для запуска сайтов на локальной машине и не обслуживает запросы с других компьютеров. Иными словами, другой пользователь со своего компьютера не будет видеть наш сайт.

Чтобы сайт стал доступен другим пользователям, нужно разместить его на веб-сервере IIS. Это один из основных веб-серверов, использующихся на данный момент, и позволяющий запускать веб-сайты на платформе Asp.Net.

С другой стороны, чтобы наш сайт функционировал, необходимо установить .Net Framework и зарегистрировать Asp.Net в IIS. Об этом и пойдет речь.

Установка Asp.Net

На сервере, где будет располагаться сайт, необходимо установить .Net Framework. Это набор файлов и утилит, позволяющие выполнять и разрабатывать приложения, написанные в среде разработки Ms Visual Studio. Устанавливать нужно ту версию .Net Framework, с помощью которой разрабатывался наш сайт.

Как установить Asp.Net правильной версии? Проверить ее можно следующим образом: открыть проект в Visual Studio, зайти в свойства проекта (меню Проект->Свойства…). На вкладке «Построение» в поле «Требуемая версия .Net Framework» будет указана версия, под которую написано приложение.

Скачать .Net Framework можно с официального сайта Microsoft. Будем считать, что наш сайт написан на .Net 4.0. Скачать установщик можно здесь.

Качаем нужную версию .Net Framework, устанавливаем на сервере. Все, установка Asp.Net завершена!

Как зарегистрировать Asp.Net в IIS

В составе пакета .Net Framework есть утилита aspnet_regiis.exe, с помощью которой мы, собственно, и сможем зарегистрировать Asp.Net в IIS.

Отдельная статья посвящена тому, как установить и настроить IIS. Здесь будем считать, что IIS у нас уже установлен.

Чтобы зарегистрировать Asp.Net в IIS, нужно выполнить команду aspnet_regiis.exe с ключом –i. Эта команда проводит установку Asp.Net, регистрирует или обновляет пулы приложений, обновляет метабазу IIS и многое-многое другое.

Можно выполнить эту команду из командной строки cmd.exe, но гораздо удобнее воспользоваться каким-нибудь файловым менеджером (Far Manager, Total Commander и т.д.).

Покажу на примере Total Commander: Откройте Total, зайдите в папку Windows\Microsoft.NET\Framework\v4.0.30319\ (версию Framework выбирайте ту, под которую написан сайт), встаньте курсором на файл aspnet_regiis.exe, нажмите Ctrl+Enter, имя файла скопируется в командную строку. Далее введите –i и нажмите Enter.

Примечание: если у вас 64-разрядная версия операционной системы, то нужно запускать aspnet_regiis.exe из каталога Framework64, а не Framework.

После этого появится окно установки Asp.Net:

Итоги

Мы узнали, как установить и зарегистрировать Asp.Net в IIS. Теперь можно настроить сайт под IIS.

stud-work.ru

ASP.NET Запуск IIS Express и сайта

Иногда вам потребуется запустить WEB сайт ASP.NET из папки Windows. Сайт можно определить,  если в папке есть файл Default.aspx (запускаемая по умолчанию страница сайта) и файл конфигурации web.config. 

ЗАПУСК IIS EXPRESS ИЗ КОМАНДНОЙ СТРОКИ

Ранее это было сложно, надо было копировать файлы  в определенную папку и назначать права. Теперь все просто сделать, если использовать IIS Express.

  • Запускаем IIS Express сервер из командной строки и указываем ему папку с сайтом "C:\Program Files\IIS Express\iisexpress.exe" /path:"D:\www\site" /port:9090 /clr:v2.0

  • Запускаем сайт: http://localhost:9090/

Примечание

  • Параметр /clr:v4.0 - установлен по умолчанию (его можно не указывать), для ASP.NET сайтов Framework версии 2.0, 3.5 надо указывать /clr:v2.0

  • Указывайте пути в кавычках, т.к. если в пути будет пробел, то сайт не запуститься.

  • /port:9090 можно не указывать, тогда сайта надо будет запускать http://localhost:8080/

  • В командной строке наберите Q для выгрузки сайта после его использования

АВТОМАТИЗАЦИЯ ЗАПУСКА IIS EXPRESS

Эта программа позволит вам автоматически запускать сайты ASP.NET из любой папки windows. При этом используется сервер Microsoft IIS Express, для которого разработан удобный интерфейс запуска. Программа бесплатная, но если вам нужно интегрировать ее в свою программу, то можно купить исходники.

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

IIS Express. Интерфейс запуск севера.

Проверка сервера

Если на компьютере пользователя нет сервера, то вы можете перейти к его загрузке. Интерфейс проверки выглядит так. Красным цветом показано сообщение об ошибке.

IIS Express. Ошибка при отсутствии сервера на компьютере пользователя

Проверка запуска сервера

При запуске сервера могут возникать разные виды ошибок. Данный интерфейс позволяет контролировать из и принимать решение по их исправлению.

IIS Express. Ошибка сервера при неправильном указании порта

ССЫЛКИ по теме

Параметры запуска сервера

Для получения всех команд сервера запускаем "C:\Program Files\IIS Express\iisexpress.exe" /?

iisexpress [/config:config-file] [/site:site-name] [/siteid:site-id] [/systray:true|false] [/trace:trace-level] [/userhome:user-home-directory] iisexpress /path:app-path [/port:port-number] [/clr:clr-version] [/systray:true|false] [/trace:trace-level] /config:config-fileПолный путь к файлу applicationhost.config. Значением по умолчанию является файл IISExpress\config\applicationhost.config, который расположен в папке документы пользователя./site:site-nameИмя узла для запуска, как описано в файле applicationhost.config./siteid:site-idИдентификатор сайта для запуска, как описано в файле applicationhost.config./path:app-pathПолный физический путь для запуска приложения. Этот параметр нельзя сочетать с /config и связанные параметры./port:port-numberПорт, к которому привязывается приложение. Значение по умолчанию — 8080. Необходимо также указать параметр /path./clr:clr-versionВерсия .NET Framework (например, v2.0) использовать для запуска приложения. Значение по умолчанию — v4.0. Необходимо также указать параметр/path./Systray:true|falseВключает или отключает сообщения системы. Значение по умолчанию — true./userhome:user-home-directoryIIS Express пользовательский домашний каталог пользователя (по умолчанию используется % userprofile%\documents\iisexpress)./trace:trace-levelДопустимыми являются значения 'none', 'n', 'info', 'i', 'warning', 'w', 'error', и 'e'. Значение по умолчанию — none.\Examples:iisexpress /site:WebSite1Эта команда запускает WebSite1 сайта из файла конфигурации профиля пользователя.iisexpress /config:c:\myconfig\applicationhost.configЭта команда запускает первый сайт в указанный файл конфигурации.iisexpress /path:c:\myapp\ /port:80Эта команда запускает сайт из папки «c:\myapp» порт «80».

blog.leadersoft.ru

Как организовать несколько сайтов на одном сервере IIS | Windows IT Pro/RE

Обычно я получаю от читателей до сотни вопросов ежедневно. Когда один и тот же вопрос повторяется несколько раз, я посвящаю ему отдельную статью. Так, вопрос о Microsoft IIS, повторяющийся чаще других, звучит следующим образом: как разместить более двух сайтов на одном Web-сервере? Например, у нас имеется сервер IIS, и его требуется использовать для организации двух не связанных между собой сайтов: www.apples.com и www.oranges.com. Как быть?

Казалось бы, ответ прост. В состав IIS входит прекрасно «упакованная» программа Web Site Creation Wizard (в консоли Microsoft Management Con-sole (MMC) Internet Information Ser-vices нужно открыть контекстное меню Web-сервера, затем выбрать New, Web Site). Но дело в том, что мастер не поможет создать на одном сервере несколько сайтов.

Для организации (хостирования) нескольких сайтов на одном Web-сервере необходимо сделать следующее. Во-первых, требуется разместить HTML-файлы различных сайтов в разных каталогах. Во-вторых, нужно указать Web-серверу метод, позволяющий определить, какой именно сайт намерен посетить клиент. И, наконец, следует настроить DNS так, чтобы Web-браузеры посетителей смогли отыскать Web-сервер.

Первый шаг прост. Для каждого Web-сайта необходимо создать на жестком диске сервера свой каталог. Имена каталогов должны отражать их содержимое - например, Apples и Oranges (разместить эти каталоги следует в стороне от каталога Inetpub и не на системном диске).

Уместно упомянуть и о системе безопасности. Любая система, на которой устанавливаются IIS или Personal Web Server, имеет локальную учетную запись IUSR_servername, так что любой посетитель сайта регистрируется под этой учетной записью. Например, если я установил IIS на сервере под названием T21.acme.com, имя этой учетной записи будет IUSR_T21, и все посетители сайта станут регистрироваться на сервере под этим именем. Пользователь, который регистрируется с записью IUSR, входит в группу Guests и, по умолчанию, как член этой группы, обладает правом доступа к различным данным на сервере. Анонимные Web-пользователи, как правило, в домене не регистрируются и с разделяемыми каталогами не работают. Вместо этого они обращаются к ресурсам сервера через программное обеспечение IIS. Соответственно, в составе IIS должен быть инструмент управления с доступом к различным каталогам сайта. Однако IIS имеет множество «дыр», через которые настойчивые пользователи могут без труда добраться до всей сети.

Чтобы избежать проблем, необходимо установить разрешения NTFS, напрямую запрещающие доступ IUSR в те каталоги, куда обычным посетителям сайта обращаться нельзя. «Линия обороны» NTFS - вторая после образуемой программным обеспечением IIS. Причем я настоятельно рекомендую пользоваться самыми последними «заплатками» системы безопасности Web-сервера.

Завершив настройку каталогов, следует сообщить серверу IIS о наличии двух сайтов. Необходимо запустить мастер Web Site Creation Wizard, затем щелкнуть Next - появится панель с запросом о наименовании нового Web-сайта. Это имя отображается только в программе администрирования, поэтому оно может быть любым. Если требуется создать сайт под названием Apple, нужно набрать Apple в поле Description и нажать Next.

Экран 1. Окно назначения IP-адреса и порта TCP.

На следующей панели (см. Экран 1) серверу IIS сообщается способ, позволяющий установить, содержание (content) какого сайта требуется посетителям. На выбор предлагается три варианта, но я не сомневаюсь, что достаточно и одного. Два из трех методов работают для каждого Web-сервера, из тех, что мне приходилось видеть, начиная с 1994 г. Хотя обычно в этих методах нет необходимости, все же поясню, как они работают.

В списке Enter the IP address to use for this Web site имеются адреса IP, назначенные Web-серверу. Как правило, для Web-серверов используется только один адрес IP, поскольку в системе имеется, вероятно, только одна сетевая карта, и ей присваивается только один IP-адрес. Однако той же самой сетевой карте можно присвоить дополнительные адреса IP - здесь нет никаких ограничений, и об этом сказано в документации Windows 2000. Когда для одной карты используется несколько адресов, она станет отвечать на все запросы, посылаемые на любой из них. Так, назначая для сетевой карты Web-сервера два адреса (например, 1.1.1.1 и 1.1.1.2), можно воспользоваться панелью мастера установки IP Address and Port Settings для ассоциации www.apples.com с 1.1.1.1 и www.oranges.com с 1.1.1.2 (то же самое следует сделать при настройке DNS, о чем будет сказано ниже).

Однако адреса IP - слишком большая роскошь, чтобы каждому Web-сайту выдавать свой. Можно поддерживать работу двух сайтов с одного адреса IP, но тогда нужно настроить Web-сервер на использование более одного порта TCP.

Для тех, кто никогда не слышал о портах TCP, приведу простой пример. Поскольку один и тот же сервер может выступать в разных ипостасях - например, как Web-сервер, или как почтовый сервер, или как сервер-синхронизатор (time server) - просто сказать клиенту, чтобы он обращался на http://www.acme.com, недостаточно: клиенту не хватает информации для взаимодействия с соответствующим программным обеспечением сервера. По умолчанию, Web-сайт использует порт под номером 80, поэтому, когда пользователь запускает, скажем, Microsoft Internet Explorer и указывает некоторое имя DNS, например www.acme.com, Web-клиент «предполагает», что предстоит связаться с Web-сервером http://www.acme.com через 80-й порт. Когда пользователь запускает Microsoft Outlook и намеревается загрузить из Internet свою почту, предполагается, что для этих целей используется не 80-й порт, а порт 110. Когда в роли клиента выступает программа синхронизации времени между клиентом и сервером, используется порт сервера под номером 123. Названные порты приняты по умолчанию, но в большинстве случаев серверное и клиентское программное обеспечение допускает использование нестандартных портов, отличных от принятых по умолчанию.

Поле TCP port this web site should use (см. Экран 1) позволяет поменять порт по умолчанию для Web-сайта. Предположим, требуется запустить www.oranges.com, используя стандартный порт 80, а www.apples.com, используя порт 10000. Если адрес Web-сервера 1.1.1.1, то для этого создаются записи DNS, которые указывают на IP-адрес 1.1.1.1, как для www.apples.com, так и для www.oranges.com. Однако для того, чтобы переписать принятую по умолчанию установку, посетителям www.apples.com нужно использовать URL вида http://www.apples.com:10000.

Необходимость всякий раз при посещении «нестандартного» сайта добавлять суффикс с адресом порта - незавидная перспектива для ежедневной работы с Web, поэтому можно выбрать третий подход: использовать записи заголовков хоста (host header record). Поле Host Header for this site дает возможность Web-клиентам - браузерам - сообщить Web-серверу, какой именно сайт нужен пользователю. При помощи заголовка записи хоста можно разместить на одном Web-сервере с 80-м портом любое количество Web-сайтов. Web-сервер может установить, какой сайт хочет посетить клиент, проанализировав запрос Web-браузера. Вместо того чтобы просто запросить страничку default.htm, браузер просит показать default.htm с сайта www.oranges.com. Дополнительная информация, с помощью которой идентифицируется конкретный сайт, называется записью заголовка хоста.

В таком случае почему бы всем Web-сайтам не воспользоваться записями заголовков хоста? Я думаю, что в настоящее время дело обстоит именно так. Однако Web-серверы, способные распознать заголовки записей хоста, появились только три года назад. Но даже в этом случае Web-браузеры, написанные достаточно давно (скажем, IE 2.0, Netscape 1.0), не в состоянии сформировать такую запись. Современные Web-браузеры «знают», о чем идет речь, однако для надежности следует поддерживать для своих сайтов заголовки хоста.

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

Настройка DNS

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

Конечно, необходимо в надлежащем порядке зарегистрировать в Internet домены apples.com и oranges.com. Часть процедуры регистрации требует предоставления имен двух DNS-серверов, которые выступят в роли хостов адресной информации о доменах. Поскольку эти DNS-серверы должны быть подключены к Internet по схеме 24*7*365, в большинстве случаев клиенты не станут создавать собственные DNS-серверы, а воспользуются серверами провайдера. Так или иначе, необходимо обеспечить зоны apples.com и oranges.com записью host record, указывающей на IP-адрес Web-сервера.

В заключение нужно добавить, что, если вместо записей информации из host header record решено выделить различным Web-сайтам раздельные адреса IP, необходимо указать для каждой записи на сервере DNS ассоциированный с данным сайтом IP-адрес (в нашем случае 1.1.1.1 для apples.com и 1.1.1.2 для www.oranges.com). Если используются раздельные порты в сочетании с адресом IP или записями host header record, необходимо в записях DNS указать один и тот же адрес IP для всех Web-сайтов.

Марк Минаси - редактор Windows NT Magazine, MCSE и автор книги «Mastering Windows NT Server 4.0» (издательство Sybex). С ним можно связаться по адресу: [email protected].

www.osp.ru