Настройка службы iiS World Wide Web Publishing Service — Internet Information Services
- Статья
- Чтение занимает 15 мин
В этой статье описывается, как настроить 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.
Примечание.
Файлы установки IIS 7.0 неправильно включают файлы скриптовClusweb.vbs иClusftp.vbs, которые используются в IIS 6.0 для задач администрирования кластера IIS. Не используйте эти скрипты в IIS 7.0 или более поздней версии.
Мы рекомендуем администраторам тщательно оценить использование балансировки сетевой нагрузки (NLB) в качестве основного и предпочтительного метода для повышения масштабируемости и доступности веб-приложений с несколькими серверами под управлением IIS 7.0 или более поздней версии, а не с использованием отказоустойчивой кластеризации. Одним из преимуществ NLB является то, что все серверы могут активно участвовать в одновременной обработке входящих http-запросов. Еще одно преимущество заключается в том, что в среде NLB IIS гораздо проще поддерживать последовательные обновления и откаты, обеспечивая при этом высокий уровень доступности веб-приложений.
- Установка и настройка балансировки сетевой нагрузки
- Балансировка сетевой нагрузки
Важно учитывать, что кластеризация 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.
- Убедитесь, что все узлы кластера могут перейти к общей папке. Путь к общей папке:
\\<fileserver>\<share>
Настройка общей конфигурации 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.
- В левой области выберите узел имени сервера.
- Дважды щелкните значок общей конфигурации .
- На странице «Общая конфигурация» выберите «Экспорт конфигурации» в области действий (справа), чтобы экспортировать файлы конфигурации с локального компьютера в другое расположение.
- В диалоговом окне «Конфигурация экспорта» введите путь к общей папке (
\\<fileserver>\<share>) в поле «Физический путь «. - Выберите «Подключить как«, а затем введите имя пользователя и пароль для учетной записи пользователя, которая имеет доступ к общей папке, в которой хранится общая конфигурация, а затем нажмите кнопку «ОК»
.
Эта учетная запись будет использоваться для доступа к общей папке. Следует использовать ограниченную учетную запись Active Directory, которая не является администратором домена. - В диалоговом окне «Экспорт конфигурации» введите пароль, который будет использоваться для защиты ключей шифрования, а затем нажмите кнопку «ОК».
- На странице «Общая конфигурация » установите флажок «Включить общую конфигурацию».
- Введите физический путь, учетную запись пользователя и пароль, введенные ранее, а затем выберите «Применить » в области действий.
- В диалоговом окне «Пароль ключей шифрования» введите пароль ключа шифрования, который вы настроили ранее, а затем нажмите кнопку «ОК «.
- В диалоговом окне «Общая конфигурация» нажмите кнопку «ОК».
- Нажмите кнопку ОК.
На каждом из других узлов кластера используйте общую конфигурацию, которую вы только что экспортируете в общую папку:
- Перейдите к разделу «Администрирование» и выберите диспетчер служб IIS.

- Выберите узел имени сервера.
- Дважды щелкните значок общей конфигурации .
- На странице «Общая конфигурация » установите флажок «Включить общую конфигурацию».
- Введите физический путь к общей папке (
\\<fileserver>\<share>), учетную запись пользователя и пароль, введенные ранее, а затем выберите «Применить» в области действий. - В
диалоговом окне «Пароль ключей шифрования» введите пароль ключа шифрования, который вы настроили ранее, а затем нажмите кнопку «ОК «. - В диалоговом окне «Общая конфигурация» нажмите кнопку «ОК».
- Нажмите кнопку ОК.
Примечание.
Дополнительные сведения о настройке общих конфигураций в 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, а затем выберите «Всегда доступно в автономном режиме».
Примечание.
Если вы настроили общую папку для высокой доступности в том же отказоустойчивом кластере, где размещены узлы IIS, параметр Always Available Offline не будет отображаться при щелчке правой кнопкой мыши общей папки, если на узле кластера размещен высокодоступный файловые серверы. Необходимо переместить приложение файлового сервера с высоким уровнем доступности на другой узел.

В панель управления откройте автономные файлы. Выберите «Открыть центр синхронизации«, а затем выберите » Расписание».
Запланируйте автономную синхронизацию файлов на каждый день или в соответствии с вашими требованиями. Вы также можете настроить автономную синхронизацию для выполнения каждые несколько минут. Даже если планировщик не настроен, при изменении чего-либо в файлеApplicationhost.config изменения отражаются на веб-сервере.
Примечание.
Дополнительные сведения о настройке автономных файлов для общей конфигурации в 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 щелкните кластер правой кнопкой мыши и выберите «Настроить службу или приложение». Мастер создает рабочую нагрузку с высоким уровнем доступности.
Выберите универсальный скрипт.

Выберите файл скрипта из
%systemroot%\System32\Inetsrv\clusweb7.vbs.Задайте для имени точки доступа клиента (CAP) имя веб-сайта, которое клиенты будут использовать для подключения к веб-сайту с высоким уровнем доступности. Укажите статические IP-адреса, которые будут использовать для cap веб-сайта. Если вы используете протокол DHCP, этот параметр не будет отображаться.
На шаге «Выбор хранилища » выберите общий диск кластера, на котором находятся файлы содержимого веб-сайта. Хранилище должно быть неиспользуемо любым другим приложением высокой доступности в кластере.
Примечание.
Если общая папка, используемая для общей конфигурации IIS, размещена в том же кластере, здесь следует использовать другой ресурс диска.
После подтверждения параметров мастер создаст группу кластера, ресурсы кластера и зависимости между ресурсами, а затем подключит ресурсы к сети.
Примечание.
Чтобы разместить несколько веб-сайтов с высоким уровнем доступности в одном отказоустойчивом кластере, выполните те же действия, что и выше.
Однако используйте разные файлы скриптов для каждого веб-сайта и разных кластеризованных общих хранилищ. Например, используйтеclusweb7.vbs%systemroot%\System32\Inetsrvдля первого веб-сайта ,clweb7-2.vbsдля второго,clweb7-3.vbs для третьего и т. д. Каждый файл скрипта отслеживает разные веб-сайт и пул приложений.
Следующий сценарий предназначен только для примера и не поддерживается корпорацией Майкрософт явным образом. Использование этого скрипта в кластеризованной среде IIS 7.0 или более поздней версии находится под вашим риском.
'<begin script sample> '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 '<end script sample>
Информационные службы Интернета — frwiki.wiki
Для одноименных статей см. IIS .
Информационные службы Интернета, ранее называвшиеся Информационным сервером Интернета, широко известные какIIS(обычно произносится как «2 i s»), представляют собой веб-сервер (HTTP) для различных операционныхсистем Windows NT.
Резюме
- 1 История
- 2 IIS под Windows XP
- 2.1 Функции
- 3 Статистика
- 4 ASP / ASP.NET
- 5 Разработка IIS
- 6 См. Также
- 6.1 Примечания и ссылки
- 6.2 Статьи по теме
- 6.3 Внешние ссылки
Исторический
PWS (en) (Personal Web Server): веб-сервер, предназначенный для широкой публики. Поставляется с версиями Windows 95, 98 и ME .
| Версия IIS | Версия для Windows | Новости и комментарии |
|---|---|---|
| IIS 1.0 | Windows NT 3.51 | |
| IIS 2.0 | Windows NT 4.0 | |
| IIS 3.0 | Пакет обновления 3 для Windows NT 4.0 | Обеспечивает поддержку так называемых «серверных» скриптов Active Server Pages . |
| IIS 4.0 | Пакет опций Windows NT 4.0 | Убрана поддержка протокола Gopher . Теперь он будет предоставлен, но не установлен по умолчанию.![]() |
| IIS 5.0 | Windows 2000 | |
| IIS 5.1 | Windows XP Professional | Эта версия не позволяет принимать более 10 одновременных подключений. |
| IIS 6.0 | Windows Server 2003 | |
| IIS 7.0 | Windows Server 2008 и Windows Vista | |
| IIS 7.5 | Windows Server 2008 R2 и Windows 7 | |
| IIS 8.0 | Windows Server 2012 и Windows 8 | |
| IIS 8.5 | Windows Server 2012 R2 и Windows 8.1 | |
| IIS 10.0 | Windows Server 2016 и Windows 10 | Эта версия включает поддержку HTTP / 2 . |
Репутация этого программного обеспечения многократно ухудшалась в прошлом после обнаружения нескольких уязвимостей в системе безопасности. Первые версии были установлены с множеством дополнительных модулей, что расширило горизонты возможных атак взломщиков .
За последние несколько лет Microsoft приняла это во внимание; Таким образом, движок версии 6.0 был переписан, чтобы сделать его более стабильным и безопасным.
IIS под Windows XP
Сервер IIS поставляется только с «профессиональными» версиями системы Windows XP. Лицензионное соглашение ( « Лицензионное соглашение пользователя », перевод аббревиатуры EULA, или „Лицензионное соглашение пользователя“) от „Home“ редакции Windows XP не позволяет использовать его в судебном порядке.
Функции
IIS поддерживает несколько веб-технологий, таких как CGI, ASP, .NET ASP и специфичный для IIS API, называемый ISAPI, для создания расширений и фильтров. IIS также поддерживает PHP в режиме CGI или ISAPI.
Статистика
Согласно опросу Netcraft (), У IIS было около 34,94% доли рынка. В тот же день другой опрос, проведенный SecuritySpace, предоставил серверу IIS только 20,47% акций по сравнению с 73,28% для Apache .
Исследование Netcraft в объявляет о доле 12,14% для серверов Microsoft.
ASP / ASP.NET
ASP и, совсем недавно, ASP.NET — это две технологии веб-разработки от Microsoft. Оба они изначально поддерживаются сервером IIS (версии IIS 6 и более поздние только для ASP.NET). Консультации по одноименным статьям предлагают более подробную информацию о создании, функционировании и развитии этих языков.
Разработка IIS
Microsoft предлагает интегрированную и совместную среду разработки под названием Visual Studio и несколько .Net совместимых структур существуют (ASP.NET AJAX, UltimateMenu, поиск управление, RadScheduler, DotNetNuke ). Эти платформы используют несколько API, которые редко на 100% совместимы с .NET ( управляемый код ).
Смотрите также
Примечания и ссылки
- ↑ Майк Бишоп; Дэвид Со, « HTTP / 2 в IIS », Microsoft,
- ↑ http://www.microsoft.com/fr-fr/download/details.aspx?id=13331
- ↑ Исследование Netcraft «Обзор веб-серверов, январь 2012 г.»
Статьи по Теме
- ISAPI
- ASP.NET
- Nginx
- HTTP-сервер Apache
- (in) сравнение веб-серверов
- (in) Веб-сервер UltiDev Cassini
Внешние ссылки
- IIS на сайте Microsoft
- IIS.net
HTTP-серверы | |
|---|---|
| ПРОТИВ | Apache · Cherokee · Hiawatha · lighttpd · Веб-сервер Monkey · NGINX · Zeus · Веб-сервер Abyss |
| C ++ и C # | ZMWS: ZazouMiniWebServer |
ASP. NET | IIS |
| Ява | Tomcat · GlassFish · wildfly · Причал · JOnAS |
| JavaScript / TypeScript | Node.js · Deno |
| Python | Gunicorn · Zope |
| Щука | Каудиум |
| Рубин | WEBrick · Дворняга |
| Erlang | Фрамбезия |
<img src=»//fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1×1″ alt=»» title=»»>
404: Страница не найдена
Страница, которую вы пытались открыть по этому адресу, похоже, не существует. Обычно это результат плохой или устаревшей ссылки. Мы приносим свои извинения за доставленные неудобства.
Что я могу сделать сейчас?
Если вы впервые посещаете TechTarget, добро пожаловать! Извините за обстоятельства, при которых мы встречаемся. Вот куда вы можете пойти отсюда:
Поиск- Узнайте последние новости.
- Наша домашняя страница содержит самую свежую информацию о Windows Server.

- Наша страница «О нас» содержит дополнительную информацию о сайте, на котором вы находитесь, SearchWindowsServer.
- Если вам нужно, свяжитесь с нами, мы будем рады услышать от вас.
Просмотр по категории
SearchCloudComputing
- Сравните AWS Global Accelerator и Amazon CloudFront
AWS Global Accelerator и Amazon CloudFront решают схожие проблемы. Но пользователи должны знать, когда использовать одно вместо другого. Откройте для себя…
- Лучшие практики для многооблачной стратегии Kubernetes
Мультиоблачная среда имеет свои преимущества, но также создает сложности. Ознакомьтесь с передовыми практиками и конфигурациями для мультиоблачной …
- Руководство для конференции по AWS re:Invent 2022
Ознакомьтесь с последними новостями, выпусками продуктов и обновлениями технологий, а также анализом и рекомендациями экспертов от AWS re:Invent 2022 .
..
SearchEnterpriseDesktop
- Как контролировать файлы Windows и какие инструменты использовать
Мониторинг файлов в системах Windows имеет решающее значение для обнаружения подозрительных действий, но существует так много файлов и папок, которые необходимо хранить…
- Как Microsoft Loop повлияет на службу Microsoft 365
Хотя Microsoft Loop еще не общедоступен, Microsoft опубликовала подробную информацию о том, как Loop может соединять пользователей и проекты…
- В последнем обновлении Windows 11 добавлен проводник с вкладками
Последнее обновление Windows 11 предлагает проводник с вкладками для изменения порядка файлов и переключения между папками. ОС тоже…
SearchVirtualDesktop
- Сравнение функций программного обеспечения Citrix и VMware VDI
Citrix и VMware предлагают инструменты, упрощающие развертывание и управление VDI для ИТ.
Разобраться в ключевых отличиях Citrix… - После слияния Citrix и TIBCO остаются вопросы
Инвестиционные компании Vista Equity Partners и Evergreen Coast Capital завершили сделку по приобретению Citrix, но вопросы по…
- VMware обновляет Horizon Cloud, чтобы сократить потребности в инфраструктуре
Компания VMware улучшила Horizon Cloud и добавила функции в Workspace One UEM. Также планируется запустить управляемый виртуальный рабочий стол…
Что такое веб-сервер IIS: (Internet Information Services)?
В этом посте мы подробно рассмотрим IIS (Internet Information Services). Мы посмотрим, что он делает и как он работает. Вы узнаете, как включить его в Windows. И после того, как мы установим базовый уровень управления IIS с помощью графического интерфейса, вы увидите, как работать с ним с помощью интерфейса командной строки. Давайте начнем!
Что такое веб-сервер IIS?
Веб-сервер IIS работает на платформе Microsoft .
NET в ОС Windows. Хотя можно запустить IIS на Linux и Mac с помощью Mono, это не рекомендуется и, вероятно, будет нестабильно. (Есть и другие варианты, которые я представлю позже). Он универсален и стабилен, и уже много лет широко используется в производстве. Версия 10 самая актуальная. После установки вы увидите эту страницу приветствия в своем браузере. «Терветулоа!»
Но прежде чем мы углубимся в тонкости IIS, давайте начнем с определения веб-сервера в общем смысле.
Что такое веб-сервер?
Интернет хороший. И Интернет не может существовать без веб-серверов. Но что такое веб-сервер? Давайте определим это абстрактно, чтобы у нас был некоторый контекст того, как IIS выполняет эту роль.
Веб-сервер — это процесс для размещения веб-приложений. Веб-сервер позволяет приложению обрабатывать сообщения, поступающие через определенные порты TCP (по умолчанию). Например, порт по умолчанию для HTTP-трафика — 80, а для HTTPS — 443.
Когда вы посещаете веб-сайт в своем браузере, вы обычно не указываете номер порта, если только веб-сервер не настроен на получение трафика через порты, отличные от портов по умолчанию.
Посещение http://www.example.com неявно отправит ваш запрос на порт 80. Вы можете указать номер порта, если хотите http://www.example.com:80, и https://www.example.com:443 для TLS (Transport Layer Security).
Если предположить, что конфигурация по умолчанию и TLS настроены для вашего веб-приложения, веб-сервер будет получать весь входящий трафик на порты 80 и 443. Что веб-сервер будет делать с трафиком оттуда, зависит. Существует бесчисленное множество вариантов того, как веб-сервер может обрабатывать эти запросы.
Как IIS обрабатывает веб-запросы?
Две основные модели процессов для веб-серверов — либо обрабатывать все запросы в одном потоке, либо создавать новый поток для каждого запроса. Хотя однопоточная модель (например, Node.js) имеет несколько доступных рабочих потоков, она обычно использует их только для определенных видов работы, таких как доступ к файловой системе. Модель потока на запрос, которую использует IIS (и его упрощенный родственник IIS Express), будет захватывать поток из пула потоков для каждого запроса.
Веб-серверы обычно обрабатывают запросы, используя шаблон запрос-ответ. Клиент отправляет запрос и получает ответ, если все идет хорошо. Протокол HTTP является распространенным выбором при общении между клиентом и веб-сервером через Интернет.
Функции
IIS имеет множество функций. Чаще всего IIS используется для размещения веб-приложений ASP.NET и статических веб-сайтов. Его также можно использовать в качестве FTP-сервера, размещать службы WCF и расширять для размещения веб-приложений, созданных на других платформах, таких как PHP.
Существуют встроенные параметры проверки подлинности, такие как базовая, ASP.NET и проверка подлинности Windows. Последнее полезно, если у вас есть среда Windows Active Directory — пользователи могут автоматически входить в веб-приложения, используя свою учетную запись домена. Другие встроенные функции безопасности включают управление сертификатами TLS и привязку для включения HTTPS и SFTP на ваших сайтах, фильтрацию запросов для внесения в белый или черный список трафика, правила авторизации, ведение журнала запросов и богатый набор параметров безопасности для FTP.
Одной из ключевых функций IIS является пул приложений. Нам нужно более подробно рассмотреть пул приложений, так как это критический компонент модели процесса IIS.
Неоценимой функцией является удаленное управление. IIS также можно управлять через интерфейс командной строки или с помощью PowerShell. Вы можете написать все, что угодно, и это здорово, если вам нравится сила, которая дает возможность сделать это.
К настоящему моменту у вас должно сложиться хорошее представление о конфигурируемости и универсальности IIS. Вы также должны знать, что его можно расширить для обслуживания (каламбур) многих целей, помимо размещения приложений ASP.NET. Благодаря расширению IIS становится очень универсальным и стабильным веб-сервером для платформы Windows. Давайте посмотрим, как установить IIS в Windows 10. (Тот же процесс применим к Windows 7 и 8.)
Настройка IIS
Назвать это «установкой» было бы слишком. В конце концов, IIS — это функция Windows. Что вам действительно нужно сделать, так это включить эту функцию.
В Windows 10 вы можете нажать клавишу Windows и ввести «turn win». Вы должны увидеть «Включение или отключение функций Windows».
Выберите это, чтобы открыть диалоговое окно «Функции Windows». Отсюда вы можете включить всевозможные дополнительные функции, в том числе PowerShell 2.0, глубокое дерево каталогов параметров для информационных служб Интернета (IIS) и подсистему для Linux. (Должен сказать, что последнее мне пригодилось много раз, например, когда приложение Node имеет несколько сценариев оболочки как часть сборки npm).
Информационные службы Интернета (IIS) — это то, что нам нужно!
Просто щелкнув по нему, вы получите хорошую отправную точку. Однако вы можете захотеть копнуть глубже. World Wide Web Services > Application Development Features — здесь вы включаете ASP.NET, CGI и протокол WebSocket. Вы всегда можете вернуться к этому, если вам нужно внести коррективы.
Чтобы включить IIS на Windows Server, вы можете использовать PowerShell или диспетчер сервера для установки «веб-роли (IIS)».
Подробнее см. в этом пошаговом руководстве.
Выбрав все необходимые функции IIS, нажмите кнопку «ОК» и отправляйтесь за чашечкой свежего кофе. После завершения установки вы можете перейти к графическому интерфейсу IIS, введя «IIS» в поиске Windows или запустив «inetmgr».
Графический интерфейс пользователя
Прежде чем мы углубимся в детали, я хочу кратко рассказать вам о диспетчере IIS. Я выделил области, представляющие интерес, потому что это такой беспорядок. К этому нужно привыкнуть, но есть несколько вещей, с которыми я могу помочь, поскольку это касается передвижения здесь.
Прежде всего, есть три панели. Слева есть подключенные серверы. (Вы также можете подключаться к удаленным серверам.) На средней панели вы найдете все функции, такие как безопасность приложений, ведение журнала, фильтрация и перенаправление. Или, когда вы выберете «Просмотр содержимого», вместо этого вы увидите содержимое здесь посередине. Справа находится панель действий.
Это меняется в зависимости от выбранного контекста.
Я не знаю, зачем там эта маленькая дополнительная иконка внизу справа, но вы также можете изменить размер окна внизу.
СОВЕТ: вы можете щелкнуть правой кнопкой мыши большинство значков и использовать контекстное меню для выполнения наиболее распространенных действий.
Если вы развернете «соединение» на панели подключений, первое, что вы должны увидеть, это «Пулы приложений», а затем «Сайты». Мы собираемся сосредоточиться на них в следующих двух разделах.
Пулы приложений… Что это такое и как они работают?
Вот пулы приложений, настроенные по умолчанию в IIS. Как видите, есть и комбинации v2.0 и v4.0, и классические и интегрированные.
Интегрированный конвейер отличается от классического конвейера тем, что ASP.NET интегрирован в конвейер запросов IIS. В классическом режиме запросы должны были проходить через один конвейер для IIS и другой для ASP.NET. Интегрированный режим был предпочтительным с тех пор, как IIS 7 был выпущен с Windows Server 2008 и Vista.
Не используйте классику, если в этом нет необходимости. То же самое касается версии 2.0. Они предназначены только для устаревшей поддержки. На самом деле, если вам не нужны эти пулы приложений, вы можете просто удалить их. Нам не нужно, чтобы всякая дрянь висела вокруг!
В одном пуле приложений одновременно может быть запущено от нуля до многих рабочих процессов (w3wp.exe). Рабочие процессы запускают экземпляры вашего приложения.
Создание пулов приложений
На панели «Действия» в правой части окна IIS нажмите «Добавить пул приложений…», чтобы открыть диалоговое окно. Это довольно просто. Обычно вы можете просто ввести имя и нажать «ввод» или нажать «ОК».
Вы также можете добавить пул приложений, щелкнув правой кнопкой мыши узел «Пулы приложений» на панели «Подключения». Предыдущий совет уже доказал свою ценность!
Пользователи пула приложений
IIS создает виртуального пользователя для каждого пула приложений (общая номенклатура для пула приложений).
Эти рабочие процессы по умолчанию запускаются от имени виртуального пользователя пула приложений. Они могут работать от имени другого пользователя (например, учетной записи домена), если им нужны специальные разрешения.
Несмотря на то, что я удалил пулы приложений с сервера, виртуальные пользователи продолжают жить!
Эти виртуальные пользователи по-прежнему получают свои собственные стандартные папки, такие как «Рабочий стол», «Музыка» и «Изображения». Они не занимают так много места (110 МБ), но после удаления пула приложений эти пользовательские папки становятся бесполезными и могут быть удалены.
Повторное использование пула приложений
Одной из ключевых функций пулов приложений является повторное использование. По умолчанию пулы приложений перезапускаются каждые 1740 минут (29 часов) и при изменении файла конфигурации. Вы можете настроить переработку в соответствии с вашими потребностями. Перезапуск пула приложений освобождает память, потребляемую приложениями, работающими в пуле приложений.
Повторное использование может помешать безудержным процессам потреблять всю память на вашем сервере.
Какие процессы используют память в вашем процессе? Все в стеке и куче — статические переменные и свойства, все в кеше памяти, любые объекты, на которые ссылается другой объект, любые блоки памяти, ожидающие сборки мусора, вы получаете картину.
Вы можете выбрать, какие события вы хотите регистрировать (или не регистрировать). Как видите, не все параметры показаны в предыдущем диалоговом окне — «События перезапуска во время выполнения» не настраиваются. Это не совсем так.
Перезапуск запускает новый процесс, а затем останавливает текущий процесс. Новый процесс, как и следовало ожидать, будет иметь новый PID. Вы можете изменить это поведение, а также другое поведение повторного использования в «Дополнительных настройках…». На самом деле, вы можете отредактировать любую из конфигураций утилизации в этом меню. Диалог «Переработка…» в этом отношении излишен.
Однако здесь вы можете отключить повторное использование изменений конфигурации. Хотя вы, наверное, не хотите. Ваше работающее приложение не будет получать обновления конфигурации.
Обратите внимание, что «перекрывающаяся переработка» подразумевает, что возможно иметь более одного экземпляра приложения. Вы должны отключить это, только если ваше приложение требует этого. Перекрывающийся повторный цикл предотвращает сбои, которые могли бы произойти, если бы повторный цикл ждал, пока текущий процесс истощит запросы, прежде чем запускать новый процесс. Другими словами, никакие новые запросы не будут обрабатываться до тех пор, пока не будут выполнены текущие запросы или не истечет настраиваемый период ожидания (по умолчанию 90 секунд).
Расширенная конфигурация
Слишком много конфигураций пула приложений, чтобы подробно повторять их в этом посте. На данный момент будет достаточно краткого обзора. Я быстро расскажу о каждой из областей «Дополнительных настроек», как показано ниже.
- Настройка «Общие» позволит вам
- Изменить версии .NET CLR
- Разрешить 32-разрядные приложения
- Изменить режим конвейера
- Установить длину очереди (по умолчанию 1000 запросов)
- Запуск всегда или по запросу
- Опция «CPU» охватывает
- Дросселирование
- Привязка процессора
- «Модель процесса» позволит вам выбрать настройки для
- Личность
- Тайм-аут простоя
- Максимальное количество рабочих процессов
- Мониторинг работоспособности (вы должны отключить это локально для отладки, потому что остановленный отладчик не будет отвечать на ping)
- «Отключение процессов» полезно для отладки не отвечающих процессов
- «Защита от быстрого сбоя» хороша, когда вы хотите настроить реакцию балансировщика нагрузки на сбои
Сайты
«Сайты» — это узел рядом с «Пулы приложений» в узле сервера диспетчера IIS.
Именно здесь вы можете добавлять веб-сайты и FTP-сайты (если они установлены) и управлять ими. В то время как пулы приложений имеют диалоговое окно расширенных настроек, сайты имеют гораздо больше параметров конфигурации! Сайты имеют множество функций, каждая из которых имеет свои собственные настройки.
Эти функции относятся к трем заголовкам в диспетчере IIS:
- ASP.NET (если он у вас установлен)
- ИИС
- Менеджмент
Контекстное меню
Вы можете переключаться между «Функциями» и «Содержанием», когда у вас выбран сайт. Вы можете щелкнуть сайт правой кнопкой мыши и открыть папку из контекстного меню, выбрав «Исследовать». Есть и другие вещи, которые вы можете сделать из этого контекстного меню, например, права на редактирование.
На самом деле это просто вызывает свойства папки сайта. Оттуда вам нужно будет перейти на вкладку «Безопасность», чтобы фактически изменить разрешения.
Как и в Windows, существует несколько других способов редактирования разрешений.
Дополнительные сведения о том, как установить права доступа к папкам, см. на ваших любимых справочных сайтах Windows.
Вы можете выполнить несколько общих задач из контекстного меню. Внутри пункта «Управление веб-сайтом» вы можете запускать и останавливать веб-сайт, открывать его в браузере и переходить к дополнительным настройкам. Мы определенно хотим взглянуть на них, но сначала давайте поговорим о том, что вы увидите, когда выберете «Редактировать привязки…», который также доступен на панели «Действие» как «Привязки…».
Bindings
Вам необходимо добавить привязку к сайту в диалоговом окне «Bindings…», если вы включаете HTTPS для своего сайта. Там же можно указать имя хоста и номера портов. Если у вас есть дополнительные привязки для вашего сайта, вы также можете добавить их сюда. Возможно, вы используете привязки net.tcp или net.pipe (если вы добавили функции на сервер и включили их для сайта). Или вы можете установить IP-адрес здесь.
Можно запустить несколько сайтов, прослушивающих один и тот же порт.
Для этого вы будете использовать разные имена хостов. Например, вы можете связать admin.example.com с вашим сайтом администратора, а blog.example.com — с вашим блогом. Весь трафик example.com будет направляться на один и тот же IP-адрес (балансировщик нагрузки/сервер), но IIS будет использовать заголовок хоста для направления трафика на соответствующий сайт. Они также полезны для приложений с белой этикеткой: acme.example.com, foo.example.com, bar.example.com.
Основные настройки
«Основные настройки…» — это то же диалоговое окно, которое появляется при первой настройке сайта. Вам, вероятно, не понадобится туда заходить, если только вы не хотите изменить пул приложений или местоположение сайта или если вы хотите подключиться как другой пользователь, а не как IUSR (сквозной доступ). Если вам нужно использовать учетную запись службы для доступа к каталогу сайта, вы можете выбрать «Подключиться как…» в диалоговом окне «Редактировать сайт».
Примечание: вам следует позаботиться о защите всех каталогов, которые вы используете в IIS.
Вам будет полезно прочитать о том, как защищен каталог inetpub по умолчанию.
Дочерние сайты и виртуальные каталоги
Вы можете размещать несколько приложений и виртуальных каталогов на одном сайте. Приложения могут работать в своих собственных пулах приложений, а виртуальные каталоги — нет. Как показано ниже, я настроил приложение администратора и виртуальный каталог блога на Site2. Доступ к ним можно получить с помощью http://localhost/admin и http://localhost/blog. Оба ответят встроенными страницами ошибок, если в каталогах нет чего-либо.
Исходные каталоги для подприложений и виртуальных каталогов не обязательно должны быть подкаталогами родительского сайта. Вы можете хранить эти каталоги где угодно. Вы можете сопоставить некоторые общие веб-ресурсы (изображения или JS-файлы) с относительным путем для нескольких сайтов. Виртуальные каталоги идеально подходят для этого.
Документы по умолчанию и ошибки
Когда пользователь посещает корень вашего сайта (www.
example.com/), ему будет представлен документ по умолчанию. Значения по умолчанию показаны ниже. Вы можете добавлять свои собственные документы, удалять документы или вообще отключать их. Если вы отключите их, пользователь получит уродливый экран с ошибкой 403, если вы не дали разрешение на просмотр содержимого папки (не рекомендуется). Лучше всего иметь документ по умолчанию.
Я поместил индексный документ в каждый каталог: сайт, приложение и виртуальный каталог.
- Зона 2
- Админ
- index.html
- Блог
- index.html
- index.html
- Админ
- http://localhost/ загрузит документ по умолчанию на Site2/index.html
- http://localhost/admin/ загрузит документ по умолчанию в Site2/Admin/index.html
- http://localhost/blog/ загрузит документ по умолчанию в Site2/Blog/index.html
Если вы беспокоитесь о том, что IIS будет занимать память и ЦП на вашем компьютере, не беспокойтесь.
Если рабочие процессы не запущены (и не обрабатывают запросы с интенсивной обработкой), он простаивает. Если вы наблюдаете высокую загрузку ЦП, это руководство по устранению неполадок может помочь, если вы используете ASP.NET.
Интерфейс командной строки и удаленное управление
AppCmd.exe
AppCmd — это встроенный инструмент командной строки для настройки и управления IIS. Вы можете использовать его для создания сайтов и пулов приложений, связывания виртуальных каталогов и редактирования конфигураций. Давайте посмотрим на несколько вещей, которые он может сделать.
Прежде всего, добавьте %systemroot%\system32\inetsrv\ к вашему пути, чтобы вы могли запускать appcmd из командной строки в любом месте.
Запустите командную строку от имени администратора.
setx ПУТЬ "%ПУТЬ%; %systemroot%\system32\inetsrv\ "
Попробуйте выполнить следующие команды для просмотра appcmd:
- Запустите appcmd /? чтобы увидеть текст справки
- Посмотрите, какие приложения работают с приложением списка appcmd
- Используйте резервную копию списка appcmd для просмотра резервных копий конфигурации IIS
Добавить сайт
appcmd добавить сайт /name:"Dummy Site" /id:10 /bindings:http/*:81:
Теперь снова список приложений.
Вы не увидите добавленный вами новый сайт, потому что он не считается приложением. Если вы перейдете к графическому интерфейсу и обновите свои сайты, вы увидите там новый сайт, но он будет сломан. Нам нужно добавить приложение с помощью appcmd.
appcmd добавить приложение /site.name:"фиктивный сайт" /путь:"/"
Это добавит приложение только в корень сайта. Это создаст приложение с именем «Dummy Site/». Нам все еще нужно связать приложение с виртуальным каталогом, а затем указать физический путь.
appcmd add vdir /app.name:"фиктивный сайт/" путь:"/" appcmd set vdir "Dummy Site/" /physicalPath:"c:\inetpub\wwwroot"
Это подробный способ использования appcmd для создания сайта IIS. Есть более простой способ.
Путь EZ
Вы можете сэкономить много нажатий клавиш при создании сайта, если установите параметр PhysicalPath в первой команде. Это сделает все за один раз:
appcmd add site /name:"Dummy Site" /id:10 /bindings:http/*:81: /physicalPath:"c:\inetpub\wwwroot"
Но знание других команд дает вам лучшее представление о том, как на самом деле работает приложение IIS.
В прошлом я использовал appcmd в сценарии после сборки файлов ASP.NET proj, чтобы обеспечить локальную настройку сайта на новых компьютерах разработчиков. Вы также можете сделать резервную копию и восстановить конфигурацию IIS с помощью appcmd.
Развертывание обновлений
Чтобы дать вам еще одно представление об использовании appcmd, попробуйте сделать следующее:
- Создайте папку «sites».
- Создайте подпапку для каждого сайта.
- Разверните версии в подпапках каждой из них.
- Стадия новых версий.
- Используйте appcmd, чтобы обновить сайт для использования новой папки.
При наличии приложения с именем «Hello World», указывающего на C:\Sites\HelloWorld\1.0.0 , и новой сборки «1.0.1», которая была размещена в C:\Sites\HelloWorld\1.0.1 , когда пришло время go live, то вы можете использовать следующую команду, чтобы перевернуть сайт на новую версию:
appcmd set vdir "фиктивный сайт/" /physicalPath:"c:\Sites\HelloWorld\1.0.1" appcmd перерабатывает пул приложений /apppool.name:defaultapppool
И если вам нужно откатить свой сайт, выполните следующее:
appcmd set vdir "Dummy Site/" /physicalPath:"c:\Sites\HelloWorld\1.0.0" appcmd перерабатывает пул приложений /apppool.name:defaultapppool
Вот отличное руководство от Microsoft с дополнительной информацией об использовании AppCmd.
Сброс IIS
«iisreset» — это отдельный исполняемый файл, используемый для остановки, запуска, перезапуска IIS или события для перезагрузки компьютера (/REBOOT). Вы можете передать ему параметр «имя компьютера», чтобы он управлял IIS на другом компьютере. Вам нужно будет запустить это как администратор. Многие разработчики и системные администраторы любят использовать это после развертывания, и это тоже неплохая идея!
PowerShell
PowerShell имеет мощный набор инструментов для управления IIS. Вы также можете отправить команду iisreset удаленно, используя Invoke-Command -ComputerName «computername» -ScriptBlock {iisreset}, при условии, что вы разрешаете удаленный вызов произвольных команд на своих серверах — и это, как правило, не очень хорошая идея!
Несмотря на мои собственные опасения по поводу безопасности при отправке произвольных удаленных команд с помощью PowerShell, командлет администрирования IIS действительно полезен для администрирования веб-сервера в стиле DevOps.
Вы можете ознакомиться с этой документацией по администрированию IIS с помощью PowerShell, чтобы получить представление о том, что он может делать.
Завершение работы
Несмотря на все функции, конфигурации и команды, которые мы рассмотрели в этом посте, мы только коснулись поверхности. Каждая функция имеет свои собственные конфигурации, и существует множество расширений, которые можно добавить, установив расширение установщика веб-платформы.
И на этом давайте подведем итог этому сообщению и серверу IIS:
iisreset /stop
Но прежде чем мы полностью закончим эту статью, имейте в виду, что существуют такие решения, как Stackify Retrace, которые могут помочь вам с вашим Путешествие по ИИС. Retrace — это решение для управления производительностью приложений (APM), которое может предоставить показатели работоспособности сервера и интеграцию журнала ошибок, что повышает производительность вашего приложения.
Попробуйте бесплатную 14-дневную пробную версию сегодня!
Воспользуйтесь бесплатным профилировщиком кода Stackify Prefix, чтобы писать лучший код на своей рабочей станции.
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
'<end script sample>

NET
0.1"
appcmd перерабатывает пул приложений /apppool.name:defaultapppool