Настройка службы IIS World Wide Web Publishing Service в отказоустойчивом кластере Windows Server
В этой статье описывается, как настроить Microsoft IIS (IIS) World Wide Web Publishing Service (W3SVC) в отказоустойчивом кластере Windows Server (WSFC).
Исходная версия продукта: Windows Server 2008 и более поздних версий, Internet Information Services 8.0 и более поздних версий
Исходный номер базы знаний: 970759
Введение
Процедуры, описанные в этой статье, применяются только к службе веб-публикации. Инструкции по настройке службы публикации FTP в отказоустойчивом кластере см. в статье «Настройка FTP для IIS в отказоустойчивом кластере Windows Server».
Дополнительные сведения
В более ранних версиях служб Internet Information Services корпорация Майкрософт предоставила универсальные компоненты мониторинга ресурсов для поддержки экземпляров веб-сервера высокой доступности с помощью инфраструктуры кластеризации Майкрософт. Однако для полного реализации потенциал такого решения необходим пользовательский код. Кроме того, универсальные скрипты, предоставленные корпорацией Майкрософт, не соответствуют потребностям клиентов. Чтобы настроить IIS 7.0 или более позднюю версию в кластерной среде, использующей отказоустойчивую кластерию Windows Server, необходимо использовать пользовательский код (скрипты), чтобы обеспечить высокий уровень доступности. После этого пользователи могут настроить настройку в соответствии со своими требованиями. предоставляет им полный контроль над интеграцией веб-приложений с высоким уровнем доступности. Кроме того, интерфейсы сценариев для администрирования и мониторинга, появившиеся в IIS 7.0, предоставляют более широкие возможности по сравнению со сценариями, которые были предоставлены ранее.
Файлы установки IIS 7.0 неправильно включают файлы скриптовClusweb.vbs иClusftp.vbs, которые используются в IIS 6.0 для задач администрирования кластера IIS. Не используйте эти скрипты в IIS 7.0 или более поздней версии.
Мы рекомендуем администраторам тщательно оценить использование балансировки сетевой нагрузки (NLB) в качестве основного и предпочтительного метода для повышения масштабируемости и доступности веб-приложений с несколькими серверами под управлением IIS 7.0 или более поздней версии, а не с использованием отказоустойчивой кластеризации. Одним из преимуществ NLB является то, что все серверы могут активно участвовать в одновременной обработке входящих http-запросов. Еще одно преимущество заключается в том, что в среде NLB IIS гораздо проще поддерживать последовательные обновления и откаты, обеспечивая при этом высокий уровень доступности веб-приложений. Дополнительные сведения об использовании IIS 7.0 или более поздней версии в среде балансировки сетевой нагрузки см. в следующих статьях:
- Установка и настройка балансировки сетевой нагрузки
- Балансировка сетевой нагрузки
Важно учитывать, что кластеризация IIS с помощью кластеризации служб IIS не всегда гарантирует высокий уровень доступности для веб-приложений. Хотя службы IIS (в частности, служба WWW) могут быть запущены и запущены, процесс размещения определенного пула приложений мог завершиться или приложение могло вызывать внутренние ошибки HTTP сервера. Кластеризация веб-приложений и мониторинг их работоспособности с помощью пользовательского скрипта — правильный и рекомендуемый способ обеспечения высокой доступности кластера IIS с помощью отказоустойчивой кластеризации. Ниже приведен пример скрипта, который отслеживает состояние пула приложений, чтобы определить, запущен ли он.
Чтобы настроить высокий уровень доступности для веб-сервера IIS 7.0 или более поздней версии с помощью отказоустойчивой кластеризации, выполните следующие действия. Шаги 3–7 более подробно описаны ниже. Пример скрипта далее в этой статье можно использовать в качестве примера для IIS 7.0 или более поздней версии.
- Установите роль веб-сервера на всех узлах кластера. Дополнительные сведения см. в руководстве по развертыванию IIS 7.
- Установите компонент отказоустойчивой кластеризации на всех узлах кластера и создайте кластер. Дополнительные сведения см. в руководстве по развертыванию отказоустойчивого кластера.
- Настройка общей папки, которая будет использоваться для общей конфигурации IIS.
- Настройте общую конфигурацию IIS на всех узлах кластера.
- Настройте автономные файлы IIS для общей конфигурации на всех узлах кластера.
- Настройте веб-сайт (включая связанный пул приложений) и укажите расположение его содержимого на одном узле кластера.
- Настройте высокий уровень доступности веб-сайта, создав универсальный скрипт в отказоустойчивой кластеризации.
Настройка общей папки, которая будет использоваться для общей конфигурации IIS
- Создайте пользователя, который будет получать доступ к общей папке, которая будет использоваться для общей конфигурации IIS.
- Создайте общую папку. Эта общая папка будет использоваться для хранения общей конфигурации IIS, которая будет совместно использоваться службами IIS на всех узлах кластера. Существует несколько вариантов:
- На автономном сервере, который не является частью отказоустойчивого кластера, создайте общую папку.
- В другом отказоустойчивом кластере Windows Server создайте общую папку с высоким уровнем доступности. Дополнительные сведения см. в пошаговом руководстве по настройке отказоустойчивого кластера Two-Node отказоустойчивого кластера файлового сервера.
- В том же отказоустойчивом кластере, где будет размещен веб-сайт с высоким уровнем доступности, создайте общую папку с высоким уровнем доступности. Дополнительные сведения см. в пошаговом руководстве по отказоустойчивому кластеру. Настройка Two-Node отказоустойчивого кластера файлового сервера.
- Задайте разрешения для общей папки, созданной на шаге 2. Предоставьте пользователю, созданному на шаге 1, разрешения на полный доступ к общей папке и разрешения NTFS.
- Убедитесь, что все узлы кластера могут перейти к общей папке. Путь к общей папке: \\\
Настройка общей конфигурации IIS на всех узлах кластера
Возникла проблема с общей конфигурацией IIS в Windows 2008 Server из-за отсутствия привилегий для Application Host Helper Service . Для работы общей конфигурации необходимо выполнить следующие действия при настройке общей конфигурации IIS в Windows 2008 Server.
- Откройте командную команду администратора.
- Выполните следующую команду:
net stop apphostsvc
sc privs apphostsvc SeChangeNotifyPrivilege/SeTcbPrivilege/SeImpersonatePrivilege
net start apphostsvc
После выполнения этих действий на каждом сервере Windows 2008 в кластере продолжайте настройку общей конфигурации IIS, как описано в этом разделе.
На одном из узлов кластера экспортируйте общую конфигурацию в общую папку:
- Перейдите к разделу «Администрирование» и выберите диспетчер служб IIS.
- В левой области выберите узел имени сервера.
- Дважды щелкните значок общей конфигурации .
- На странице «Общая конфигурация» выберите «Экспорт конфигурации» в области действий (справа), чтобы экспортировать файлы конфигурации с локального компьютера в другое расположение.
- В диалоговом окне «Конфигурация экспорта» введите путь к общей папке ( \\\ ) в поле «Физический путь «.
- Выберите «Подключить как«, а затем введите имя пользователя и пароль для учетной записи пользователя, которая имеет доступ к общей папке, в которой хранится общая конфигурация, а затем нажмите кнопку «ОК». Эта учетная запись будет использоваться для доступа к общей папке. Следует использовать ограниченную учетную запись Active Directory, которая не является администратором домена.
- В диалоговом окне «Экспорт конфигурации» введите пароль, который будет использоваться для защиты ключей шифрования, а затем нажмите кнопку «ОК».
- На странице «Общая конфигурация » установите флажок «Включить общую конфигурацию».
- Введите физический путь, учетную запись пользователя и пароль, введенные ранее, а затем выберите «Применить » в области действий.
- В диалоговом окне «Пароль ключей шифрования» введите пароль ключа шифрования, который вы настроили ранее, а затем нажмите кнопку «ОК «.
- В диалоговом окне «Общая конфигурация» нажмите кнопку «ОК».
- Нажмите кнопку ОК.
На каждом из других узлов кластера используйте общую конфигурацию, которую вы только что экспортируете в общую папку:
- Перейдите к разделу «Администрирование» и выберите диспетчер служб IIS.
- Выберите узел имени сервера.
- Дважды щелкните значок общей конфигурации .
- На странице «Общая конфигурация » установите флажок «Включить общую конфигурацию».
- Введите физический путь к общей папке ( \\\ ), учетную запись пользователя и пароль, введенные ранее, а затем выберите «Применить» в области действий.
- В диалоговом окне «Пароль ключей шифрования» введите пароль ключа шифрования, который вы настроили ранее, а затем нажмите кнопку «ОК «.
- В диалоговом окне «Общая конфигурация» нажмите кнопку «ОК».
- Нажмите кнопку ОК.
Дополнительные сведения о настройке общих конфигураций в IIS см. в разделе «Общая конфигурация».
Настройка автономных файлов IIS для общей конфигурации на всех узлах кластера
На каждом узле кластера включите автономные файлы:
- Установка интерфейса рабочего стола
- Перейдите к разделу «Администрирование» и выберите диспетчер сервера.
- В левой области выберите » Компоненты».
- Выберите «Добавить компоненты » в правой области.
- Выполните одно из следующих действий в соответствии с вашей версией Windows:
- Дополнительные Windows Server 2016 на странице «Установка сервера с рабочим столом».
- Для Windows Server 2102 и 2012 R2 выберите «Возможности рабочего стола» в разделе «Пользовательские интерфейсы и инфраструктуры» в списке функций.
- Для Windows Server 2008 и 2008 R2 выберите «Возможности рабочего стола».
- Выберите «Установить» , чтобы установить возможности рабочего стола.
- Перезагрузите компьютер.
- Для Windows Server 2012 2012 R2 и 2016 выберите центр синхронизации в панель управления, а затем выберите «Управление автономными файлами».
- Для Windows Server 2008 и 2008 R2 выберите автономные файлы в панель управления.
REG ADD "HKLM\System\CurrentControlSet\Services\CSC\Parameters" /v ReadOnlyCache /t REG_DWORD /d 1 /fПримечание. Если вы настроили общую папку для высокой доступности в том же отказоустойчивом кластере, где размещены узлы IIS, параметр Always Available Offline не будет отображаться при щелчке правой кнопкой мыши общей папки, если на узле кластера размещен высокодоступный файловые серверы. Необходимо переместить приложение файлового сервера с высоким уровнем доступности на другой узел.
Дополнительные сведения о настройке автономных файлов для общей конфигурации в IIS см. в разделе «Автономные файлы для общей конфигурации».
Настройте веб-сайт и укажите расположение его содержимого на одном узле кластера.
Найдите узел кластера, которому принадлежит ресурс диска кластера, в котором будут находиться файлы содержимого веб-сайта:
- Перейдите к разделу «Администрирование» и выберите диспетчер отказоустойчивости кластеров.
- Подключитесь к кластеру. Если вы используете один из узлов кластера, кластер автоматически появится в списке.
- В разделе «Хранилище» найдите ресурс диска, на котором будет находиться содержимое веб-страницы. Для этого разверните дерево хранилища для ресурса диска. Убедитесь, что хранилище не используется другим приложением высокой доступности в кластере. Хранилище находится в разделе » Доступное хранилище».
- Узел кластера, на котором находится этот ресурс в сети. Вы настроите службы IIS на этом узле кластера.
- Имя ресурса диска кластера.
Он будет использоваться для файлов содержимого. На узле кластера, на котором находится ресурс в сети, настройте веб-сервер для использования общего диска для содержимого веб-сайта:
- Перейдите к разделу «Администрирование» и выберите диспетчер служб IIS.
- В левой области разверните узел имени сервера.
- Разверните «Сайты», а затем в разделе «Сайты» выберите сайт, который вы настраиваете.
- В области справа выберите » Дополнительные параметры» в разделе «Управление веб-сайтом».
- Найдите свойство «Физический путь» в разделе «Общие параметры», а затем введите расположение, в котором находятся файлы содержимого веб-сайта. Это расположение ресурса диска кластера, которое вы записали на шаге 5 предыдущей процедуры.
- Нажмите кнопку ОК.
Настройка высокой доступности веб-сайта путем создания универсального скрипта в диспетчере отказоустойчивости кластеров
На последнем шаге настройки высокой доступности для веб-серверов IIS настройте ресурс универсального скрипта, который будет использоваться для мониторинга веб-сайта и пула приложений для веб-сайта:
- На каждом узле кластера скопируйте скрипт, предоставленный в конце этой статьи, в Windows\System32\inetsrv\Clusweb7.vbs .
- По умолчанию скрипт отслеживает веб-сайт с именем « Веб-сайт по умолчанию» и пул приложений с именем DefaultAppPool. Если это не правильный веб-сайт и пул приложений, измените SITE_NAME and APP_POOL_NAME переменные. Убедитесь, что один и тот же веб-сайт и пул приложений в скрипте существуют на всех узлах кластера.
Примечание. В именах учитывается регистр.
- Для Windows Server 2012 2012 R2 и 2016 щелкните правой кнопкой мыши «Роли», а затем выберите » Настроить роль», чтобы создать ее.
- Для Windows Server 2008 и 2008 R2 щелкните кластер правой кнопкой мыши и выберите «Настроить службу или приложение». Мастер создает рабочую нагрузку с высоким уровнем доступности.
Примечание. Если общая папка, используемая для общей конфигурации IIS, размещена в том же кластере, здесь следует использовать другой ресурс диска.
Примечание. Чтобы разместить несколько веб-сайтов с высоким уровнем доступности в одном отказоустойчивом кластере, выполните те же действия, что и выше. Однако используйте разные файлы скриптов для каждого веб-сайта и разных кластеризованных общих хранилищ. Например, используйтеclusweb7.vbs %systemroot%\System32\Inetsrv для первого веб-сайта ,clweb7-2.vbsдля второго,clweb7-3.vbs для третьего и т. д. Каждый файл скрипта отслеживает разные веб-сайт и пул приложений.
Следующий сценарий предназначен только для примера и не поддерживается корпорацией Майкрософт явным образом. Использование этого скрипта в кластеризованной среде IIS 7.0 или более поздней версии находится под вашим риском.
' 'This script provides high availability for IIS websites 'By default, it monitors the "Default Web Site" and "DefaultAppPool" 'To monitor another website, change the SITE_NAME below 'To monitor another application pool, change the APP_POOL_NAME below 'More thorough and application-specific health monitoring logic can be added to the script if needed Option Explicit DIM SITE_NAME DIM APP_POOL_NAME Dim START_WEB_SITE Dim START_APP_POOL Dim SITES_SECTION_NAME Dim APPLICATION_POOLS_SECTION_NAME Dim CONFIG_APPHOST_ROOT Dim STOP_WEB_SITE 'Note: 'Replace this with the site and application pool you want to configure high availability for 'Make sure that the same website and application pool in the script exist on all cluster nodes. Note that the names are case-sensitive. SITE_NAME = "Default Web Site" APP_POOL_NAME = "DefaultAppPool" START_WEB_SITE = 0 START_APP_POOL = 0 STOP_WEB_SITE = 1 SITES_SECTION_NAME = "system.applicationHost/sites" APPLICATION_POOLS_SECTION_NAME = "system.applicationHost/applicationPools" CONFIG_APPHOST_ROOT = "MACHINE/WEBROOT/APPHOST" 'Helper script functions 'Find the index of the website on this node Function FindSiteIndex(collection, siteName) Dim i FindSiteIndex = -1 For i = 0 To (CInt(collection.Count) - 1) If collection.Item(i).GetPropertyByName("name").Value = siteName Then FindSiteIndex = i Exit For End If Next End Function 'Find the index of the application pool on this node Function FindAppPoolIndex(collection, appPoolName) Dim i FindAppPoolIndex = -1 For i = 0 To (CInt(collection.Count) - 1) If collection.Item(i).GetPropertyByName("name").Value = appPoolName Then FindAppPoolIndex = i Exit For End If Next End Function 'Get the state of the website Function GetWebSiteState(adminManager, siteName) Dim sitesSection, sitesSectionCollection, siteSection, index, siteMethods, startMethod, executeMethod Set sitesSection = adminManager.GetAdminSection(SITES_SECTION_NAME, CONFIG_APPHOST_ROOT) Set sitesSectionCollection = sitesSection.Collection index = FindSiteIndex(sitesSectionCollection, siteName) If index = -1 Then GetWebSiteState = -1 End If Set siteSection = sitesSectionCollection(index) GetWebSiteState = siteSection.GetPropertyByName("state").Value End Function 'Get the state of the ApplicationPool Function GetAppPoolState(adminManager, appPool) Dim configSection, index, appPoolState set configSection = adminManager.GetAdminSection(APPLICATION_POOLS_SECTION_NAME, CONFIG_APPHOST_ROOT) index = FindAppPoolIndex(configSection.Collection, appPool) If index = -1 Then GetAppPoolState = -1 End If GetAppPoolState = configSection.Collection.Item(index).GetPropertyByName("state").Value End Function 'Start the w3svc service on this node Function StartW3SVC() Dim objWmiProvider Dim objService Dim strServiceState Dim response 'Check to see if the service is running set objWmiProvider = GetObject("winmgmts:/root/cimv2") set objService = objWmiProvider.get("win32_service='w3svc'") strServiceState = objService.state If ucase(strServiceState) = "RUNNING" Then StartW3SVC = True Else 'If the service is not running, try to start it response = objService.StartService() 'response = 0 or 10 indicates that the request to start was accepted If ( response <> 0 ) and ( response <> 10 ) Then StartW3SVC = False Else StartW3SVC = True End If End If End Function 'Start the application pool for the website Function StartAppPool() Dim ahwriter, appPoolsSection, appPoolsCollection, index, appPool, appPoolMethods, startMethod, callStartMethod Set ahwriter = CreateObject("Microsoft.ApplicationHost.WritableAdminManager") Set appPoolsSection = ahwriter.GetAdminSection(APPLICATION_POOLS_SECTION_NAME, CONFIG_APPHOST_ROOT) Set appPoolsCollection = appPoolsSection.Collection index = FindAppPoolIndex(appPoolsCollection, APP_POOL_NAME) Set appPool = appPoolsCollection.Item(index) 'See if it is already started If appPool.GetPropertyByName("state").Value = 1 Then StartAppPool = True Exit Function End If 'Try To start the application pool Set appPoolMethods = appPool.Methods Set startMethod = appPoolMethods.Item(START_APP_POOL) Set callStartMethod = startMethod.CreateInstance() callStartMethod.Execute() 'If started return true, otherwise return false If appPool.GetPropertyByName("state").Value = 1 Then StartAppPool = True Else StartAppPool = False End If End Function 'Start the website Function StartWebSite() Dim ahwriter, sitesSection, sitesSectionCollection, siteSection, index, siteMethods, startMethod, executeMethod Set ahwriter = CreateObject("Microsoft.ApplicationHost.WritableAdminManager") Set sitesSection = ahwriter.GetAdminSection(SITES_SECTION_NAME, CONFIG_APPHOST_ROOT) Set sitesSectionCollection = sitesSection.Collection index = FindSiteIndex(sitesSectionCollection, SITE_NAME) Set siteSection = sitesSectionCollection(index) if siteSection.GetPropertyByName("state").Value = 1 Then 'Site is already started StartWebSite = True Exit Function End If 'Try to start site Set siteMethods = siteSection.Methods Set startMethod = siteMethods.Item(START_WEB_SITE) Set executeMethod = startMethod.CreateInstance() executeMethod.Execute() 'Check to see if the site started, if not return false If siteSection.GetPropertyByName("state").Value = 1 Then StartWebSite = True Else StartWebSite = False End If End Function 'Stop the website Function StopWebSite() Dim ahwriter, sitesSection, sitesSectionCollection, siteSection, index, siteMethods, startMethod, executeMethod, autoStartProperty Set ahwriter = CreateObject("Microsoft.ApplicationHost.WritableAdminManager") Set sitesSection = ahwriter.GetAdminSection(SITES_SECTION_NAME, CONFIG_APPHOST_ROOT) Set sitesSectionCollection = sitesSection.Collection index = FindSiteIndex(sitesSectionCollection, SITE_NAME) Set siteSection = sitesSectionCollection(index) 'Stop the site Set siteMethods = siteSection.Methods Set startMethod = siteMethods.Item(STOP_WEB_SITE) Set executeMethod = startMethod.CreateInstance() executeMethod.Execute() End Function 'Cluster resource entry points. More details here: 'http://msdn.microsoft.com/en-us/library/aa372846(VS.85).aspx 'Cluster resource Online entry point 'Make sure the website and the application pool are started Function Online( ) Dim bOnline 'Make sure w3svc is started bOnline = StartW3SVC() If bOnline <> True Then Resource.LogInformation "The resource failed to come online because w3svc could not be started." Online = False Exit Function End If 'Make sure the application pool is started bOnline = StartAppPool() If bOnline <> True Then Resource.LogInformation "The resource failed to come online because the application pool could not be started." Online = False Exit Function End If 'Make sure the website is started bOnline = StartWebSite() If bOnline <> True Then Resource.LogInformation "The resource failed to come online because the web site could not be started." Online = False Exit Function End If Online = true End Function 'Cluster resource offline entry point 'Stop the website Function Offline( ) StopWebSite() Offline = true End Function 'Cluster resource LooksAlive entry point 'Check for the health of the website and the application pool Function LooksAlive( ) Dim adminManager, appPoolState, configSection, i, appPoolName, appPool, index i = 0 Set adminManager = CreateObject("Microsoft.ApplicationHost.AdminManager") appPoolState = -1 'Get the state of the website if GetWebSiteState(adminManager, SITE_NAME) <> 1 Then Resource.LogInformation "The resource failed because the " & SITE_NAME & " web site is not started." LooksAlive = false Exit Function End If 'Get the state of the Application Pool if GetAppPoolState(adminManager, APP_POOL_NAME) <> 1 Then Resource.LogInformation "The resource failed because Application Pool " & APP_POOL_NAME & " is not started." LooksAlive = false Exit Function End if 'Web site and Application Pool state are valid return true LooksAlive = true End Function 'Cluster resource IsAlive entry point 'Do the same health checks as LooksAlive 'If a more thorough than what we do in LooksAlive is required, this should be performed here Function IsAlive() IsAlive = LooksAlive End Function 'Cluster resource Open entry point Function Open() Open = true End Function 'Cluster resource Close entry point Function Close() Close = true End Function 'Cluster resource Terminate entry point Function Terminate() Terminate = true End Function 'Обратная связь
Были ли сведения на этой странице полезными?
Open IIS Manager (IIS 8)
You can open IIS Manager if you want to configure IIS 8 settings by using the user interface (UI). This procedure assumes that you are viewing the Control Panel in the default Category view.
IIS is not enabled be default when you install a Windows operating system. To use the IIS Manager, you must install or enable IIS on your computer. For information about installing IIS, see IIS 8 Installation and Deployment.
To open IIS Manager from the Start screen
- On the Start screen, click Control Panel.
- Click System and Security, and then click Administrative Tools.
- In the Administrative Tools window, double-click Internet Information Services (IIS) Manager.
To open IIS Manager from the Desktop.
- On the desktop, hover the mouse cursor in the upper right corner of the screen, and then click Settings.
- Click Control Panel.
- Click System and Security, and then click Administrative Tools.
- In the Administrative Tools window, double-click Internet Information Services (IIS) Manager.
To open IIS Manager from the Search box
- On the desktop, hover the mouse cursor in the upper right corner of the screen, and then click Search.
- In the Search box, type inetmgr and press ENTER.
Установка IIS сервера на Windows 10

Одна из самых необходимых вещей, которую веб-разработчики захотят установить в Windows 10 для работы веб сервера – это службы IIS (Internet Information Services) . Подробнее про IIS и его сравнение с Apache, другим популярным веб сервером, можно прочесть в нашей статье.

Установка IIS
На самом деле это даже не установка, как таковая, а включение службы, потому что в Windows 10 этот компонент есть сразу, но он просто выключен.
Первым делом нам нужно нажать комбинацию клавиш Win + R, и после того как появится окно “Выполнить”, нам нужно набрать “appwiz.cpl” и нажать OK. Либо мы просто можем пойти в Панель управления и там выбрать пункт Программы – Программы и компоненты – Установка и удаление программ.
Тут нам нужно выбрать пункт “Включение или отключение компонентов Windows”.
Тут находим пункт “Службы IIS”, ставим на против него галочку и нажимаем ОК, после чего служба будет включена.
Если вам, как разработчику, нужны дополнительные параметры, то мы можете раскрыть этот пункт, нажав на плюсик, и включить или отключить те функции, которые вам необходимы.
После того как все сделано можно запустить браузер, и вбить в адресной строке localhost, чтобы убедиться, что все работает. Также в меню Пуск и в папке «Средства администрирования» появится пункт «Диспетчер служб IIS». Также туда можно попасть снова нажав Win + R и набрав inetMgr.
Установка и конфигурирование IIS

В большинстве случаев в реальных производственных проектах один или несколько серверов будут использоваться для обслуживания клиентских запросов веб-сайта. Эти серверы могут принадлежать и управляться непосредственно вами, специализированной командой или же сторонней компанией, предоставляющей услуги хостинга. В любом случае рано или поздно наступает момент, когда написание кода и его тестирование завершено, и работа должна быть представлена широкой публике — в этом и заключается развертывание веб-сайта.
В этой и следующих статьях мы рассмотрим различные варианты развертывания. Однако во всех случаях основные предпосылки остаются неизменными. На рабочей станции имеется готовый веб-сайт, который нужно развернуть на сервере, чтобы он был доступен клиентам. Для ASP.NET таким сервером является , а его текущей версией — IIS 8. Когда он был впервые реализован, IIS представлял собой базовый веб-сервер. С годами IIS развился в сложный сервер приложений, предоставляющий широкое множество функциональных средств, наиболее важным из которых является поддержка хостинга приложений ASP.NET.
В этой статье основное внимание уделяется IIS 8. Хотя машина, на которой запущен IIS 8, здесь называется сервером, IIS можно запускать под управлением версий Windows как для рабочей станции, так и для сервера. На рабочих станциях доступны не все, но большинство функциональных возможностей, что позволяет размещать сложные веб-сайты. По возможности мы рекомендуем использовать Windows Server, однако недорогой альтернативой могут послужить Windows 7 или Windows 8.
В Microsoft привязывают выпуски IIS с выпусками Windows. В состав Windows Server 2008 и Windows Vista входит версия IIS 7.0, в состав Windows Server 2008 R2 и Windows 7 — версия IIS 7.5, а в состав Windows Server 2012 и Windows 8 — IIS 8. Версии — 7.0 и 7.5 — в Microsoft обобщенно называют IIS 7, что может вносить путаницу. Версию IIS, поддерживаемую операционной системой, изменить нельзя — Windows Server 2008 будет использовать только IIS 7.0. Например, модернизировать ее до версии IIS 7.5, используемой в Windows Server 2008 R2, не получится.
Установка IIS
Компонент IIS включен как часть установки Windows (как для сервера, так и для рабочих станций) и требует активизации и конфигурирования. Далее представлены три способа активации IIS для различных операционных систем.
Установка IIS на настольных версиях Windows (Windows Vista, Windows 7 и Windows 8)
Каждая версия операционной системы Windows предлагает свою версию IIS — IIS 8 (в Windows 8), IIS 7.5 (в Windows 7) или IIS 7 (в Windows Vista). Во всех этих версиях Windows, IIS включен, но изначально не установлен. Чтобы установить его, необходимо выполнить следующие действия:
- Откройте панель управления.
- Выберите «Программы».
- Нажмите кнопку «Включение или отключение компонентов Windows». Теперь вам нужно подождать, пока Windows исследует вашу систему.
- Найдите элемент Internet Information Services (Службы IIS) в верхней части списка и нажмите на галочку чтобы включить его:


Установка IIS в Windows Server 2008
Установка и настройка IIS одинакова для Windows Server 2008 и Windows Server 2008 R2. Необходимые шаги описаны ниже:
- Запустите диспетчер сервера. Чтобы сделать это, нажмите кнопку Start и выберите All Programs —> Administrative Tools —> Server Manager.
- Выберите узел Roles в дереве слева.
- В правой части окна нажмите на ссылке Add Roles. Это открывает мастер, позволяющий добавить новую роль сервера.
- Выполните необходимые действия в мастере. Вас вероятно попросят установить дополнительные необходимые роли — если это так, нужно просто принять операции и продолжить.
- После установки вам будет предложено настроить веб-сервер. Как в настольных версиях Windows, вы можете выбрать специфические особенности IIS 7, которые должны быть включены.
- Если вы работаете в ASP.NET с версией .NET Framework 4.5, то эту версию .NET Framework необходимо будет установить (центр разработчиков .NET Framework)
Установка IIS в Windows Server 2012
Процесс установки IIS в Windows Server 2012, по существу, такой же, как и в Windows Server 2008. Основное различие заключается в том, что пользовательский интерфейс несколько отличается. Подробное описание вы можете найти перейдя по ссылке Installing IIS 8 on Windows Server 2012.
Управление IIS
При установке IIS, он автоматически создает каталог с именем C:\inetpub\wwwroot, который представляет ваш веб-сайт. Все файлы в этом каталоге будет отображаться, как будто они находятся в корневом каталоге вашего веб-сервера.
Чтобы добавить дополнительные страницы на ваш веб-сервер, можно скопировать файлы HTML, ASP или ASP.NET напрямую в каталог C:\Inetpub\wwwroot. Например если добавить файл TestFile.html в этот каталог, вы можете запросить его в браузере через URL-адрес http://localhost/TestFile.html. Вы даже можете создавать вложенные папки для группирования связанных ресурсов. Например, вы можете получить доступ к C:\inetpub\wwwroot\MySite\MyFile.html через браузер, используя URL-адрес http://localhost/MySite/MyFile.html.
Каталог wwwroot удобен для запуска простых примеров и статичных страниц. Для правильного использования ASP.NET вы должны сделать свой собственный виртуальный каталог для каждого веб-приложения, которое вы создаете. Например, вы можете создать папку с любым именем на любом диске вашего компьютера и поместить ее в виртуальный каталог IIS как будто она расположена в каталоге C:\inetpub\wwwroot.
Прежде чем начать работу, вам нужно запустить диспетчер служб IIS. Его можно найти в меню Start (Пуск). Конкретное расположение может зависеть от используемой версии Windows (IIS —> Диспетчер служб IIS). Ярлык программы будет располагаться в разделе Programs (Программы) или Administrative Tools (Администрирование). Начальная страница IIS Manager показана на рисунке ниже:

Теперь нужно ознакомиться с рядом терминов, используемых в IIS. В левой части окна IIS Manager отображается запись с именем используемого сервера. Наш сервер имеет имя PROFESSORWEB, сгенерированное по умолчанию Windows 8, которое будет использоваться в большинстве примеров. В центральной области отображается представление сервера. Это представление отображает набор значков, которые позволяют конфигурировать параметры сервера. В правой части экрана расположен список доступных действий. Например, в этом представлении можно запускать, останавливать и перезапускать сервер.
Если развернуть элемент сервера в древовидном представлении в левой части экрана, отобразится элемент Sites (Сайты), содержащий единственную запись Default Web Site (Веб-сайт по умолчанию). Сайт — это коллекция файлов и каталогов, образующих веб-сайт. На одном сервере IIS может поддерживать несколько сайтов, как правило, на различных портах TCP/IP (по умолчанию используется порт 80). Сочетание имени сервера и порта сайта образует первую часть URL-адреса. Например, при использовании сервера mywebserver с сайтом, подключенным к порту 80, URL-адрес выглядит следующим образом:
http://mywebserver:80
Каждый сайт может содержать множество файлов и каталогов. Каждый из них образует часть URL-адреса. Так, URL-адрес статической страницы mypage.html, расположенной в каталоге myfiles, будет следующим:
http://mywebserver:80/myfiles/mypage.html
В некоторых ситуациях имя, под которым сервер известен вам, и имя, которое клиенты используют для получения содержимого, будут различаться. Мы оставим этот нюанс без внимания, но администратор сервера или компания, предоставляющая услуги хостинга, предоставят необходимые сведения, если это важно для конкретного сервера.
Чтобы проверить работоспособность IIS выберите Default Web Site и в правой области диспетчера служб IIS выберите пункт «Запустить». После этого нажмите кнопку «Обзор *.80 (http)» чтобы открыть страницу сайта в браузере:

Как видите, в моем случае я поменял порт используемый по умолчанию (с 80 на 8080). Я сделал это, т.к. на 80-м у меня запущен локальный Apache-сервер. Если у вас возникает такая же проблема, то изменить порт можно щелкнув правой кнопкой мыши по сайту (Default Web Site) и выбрав в контекстном меню «Изменить привязки» (Bindings). После этого в диалоговом окне можно изменить порт, используемый по умолчанию.
Итак, каждый сервер может поддерживать множество сайтов, каждый из которых работает на другом порту или с другим IP-адресом. Каждый сайт может иметь множество файлов и каталогов, и сочетание этих элементов предоставляет информацию о URL-адресе. Мы вернемся к URL-адресам и использованию IIS Manager при рассмотрении каждого из подходов к развертыванию.