проф. В.К.Толстых, Технологии разработки Internet- приложений Архитектура и администрирование IIS 7 исполняющая среда ASP.NET в IIS 7, администрирование, конфигурирование IIS 7 (архитектура, администрирование IIS 5, IIS 6) архитектураадминистрированиеархитектураадминистрирование Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета
Ядро ОС Исполняющая среда ASP.NET в IIS 7 Отличия от IIS 5, 6 IIS 5, 6 Ответ XML HTTP (ASP.NET, WCF) Драйвер http.sys Среда выполнения ASP.NET, WCF в IIS Пул приложений Домен приложения Собственные модули ASP.NET Ответ HTML Рабочий процесс W3WP.exe Web (браузер), WCF-клиент Svchost.exe Windows Activation Service (WAS) WWW Service (W3SVC) applicationHost.config TCP, IPC… (WCF) Для создания сервис-ориентированных приложений с WCF (Windows Communication Foundation), работающих не только по протоколам глобальных сетей HTTP, но и локальных – TCP, а также – IPC (именованные каналы одного компьютера) и др. добавлен WAS (Windows process Activation Service) для активации сервисов WCF при поступлении к ним запросов от Svchost.exe. Запросы, не связанные с HTTP, не проходят конвейер обработки IIS 7, а направляются непосредственно среде выполнения WCF, которая активируется при помощи WAS и деактивируется через некоторое время, если новые запросы не поступают. Отметим, что классические службы Windows NT запускаются, обычно, во время загрузки всего сервера и работают до его выключения. Среда выполнения WCF
Консоль администрирования IIS 7
Особенности IIS 7 IIS 7.0 разбивает веб-сервер (IIS 6) на небольшое ядро сервера ( Svchost.exe ) и более чем 40 собственных модулей-компонентов (см. рис.) Модули – это ASP.NET компоненты, используемые сервером для обработки запросов вместо aspnet_isapi.dll. Например, для проверки подлинности учетных данных клиентов используются модули проверки подлинности, для управления кэшем – модули кэширования и т. д. Необходимые модули встраиваются непосредственно в HTTP-конвейер обработки запросов, при этом сервер приобретает строго заданную и не избыточную функциональность. Преимущества модульной конструкции – это уменьшение количества возможных направлений атак и размера веб- сервера. Хранилище конфигураций IIS 6 – метабаза заменена на файл конфигурации windows\system32\inetsrv\config\applicationHost.config, в котором содержатся значения по умолчанию глобальных настроек сервера, и на файлы web.config, находящиеся в структуре каталогов приложения. Локальные файлы web.config в IIS 7 инкапсулируют (могут делегировать от applicationHost.config ) требуемую настройку сервера и приложения в структуру каталогов приложения. Это существенно упрощает развертывание, которое сводится просто к копированию приложения в каталог на целевом сервере.
Пример web.config настроек IIS Система конфигурации позволяет настраивать приложения путем делегирования разделов из applicationHost.config в Web.config. По умолчанию разделы конфигурации IIS заблокированы и могут быть настроены только в applicationHost.config за исключением разделов: Документ по умолчанию, Просмотр каталога, Протокол HTTP, Перенаправление HTTP. При необходимости можно разблокировать дополнительные разделы конфигурации через диспетчер IIS Объекты конфигурации: веб-сервер, узел (сайт), приложение, виртуальный или физический каталог, файл. Параметры приложения Параметры делегирования Параметры настройки CLR.NET Framework Настройки реализуются через модуль IIS – Configuration Editor
IIS_IUSRS – группа, члены которой могут запускать рабочий процесс ASP.NET в IIS 7 с минимальными правами. IUSR – учётная запись для анонимного доступа к Web-сайтам в IIS 7. Она входит в IIS_IUSRS. NetworkService – системная учётная запись от имени которой выполняются рабочие процессы ASP.NET в IIS 7 а также все приложения и системные процессы, запущенные рабочим процессом. Имеет ограниченные права на локальном компьютере, а также может использоваться для доступа к ресурсам в сети Active Directory на основании учетной записи компьютера. ApplicationPoolIdentity – виртуальная учетная запись удостоверения пула приложений в IIS 7.5. Для каждого пула получает своё реальное имя, совпадающее с именем пула. Создается автоматически, при создании каждого нового пула, и рабочий процесс пула запускается под этой учетной записью. Запись имеет самые минимальные права на локальном компьютере. Это наиболее безопасный вариант. Другие записи, которые можно использовать в IIS: LocalService – системная учетная запись, которая имеет ограниченные права на локальном компьютере. Примерно то же самое, что и NetworkService, но ограничена только локальным компьютером. LocalSystem – системная учетная запись, имеющая неограниченные права на локальном компьютере. Наименее безопасный вариант, по возможности не рекомендуется использовать эту запись в IIS. Рабочие процессы IIS можно запускать и от других учётных записей с использованием олицетворения (имперсонализации).олицетворения (имперсонализации) Основные учётные записи для IIS 7
Иногда Web-приложению может потребоваться доступ к определенной папке или файлу на диске. Чтобы добавить ApplicationPoolIdentity в Access Control List (ACL) необходимо: Запускаем Windows Explorer; Выбираем нужный файл или директорию, кликаем по ней правой клавишей мыши и выбираем ункт Свойства (Properties); Переходим на вкладку Безопасность (Security), Настройка доступа к ресурсам Кликаем по кнопке Изменить (Edit), затем Добавить (Add); В поле Размещение (Locations) выбираем локальную машину; Вводим имя пользователя в видеIIS AppPool\имя пула приложений. Так для пула приложений PubSite1 имя пользователя будет выглядетьIIS AppPool\PubSite1; Проверяем имя клавишей Проверить имена (Check Names) и жмем ОК.
Компоненты конвейера обработки запросов IIS 7 (см. подробнее Модель процесса ASP.NET, конвейер HTTP.ppt) включают в себя:Модель процесса ASP.NET, конвейер HTTP.ppt пулы приложений, модули ASP.NET – компоненты сервера, фильтры ISAPI, обработчики для файлов.asp,.aspx… пользовательские обработчики в файлах.asp,.aspx… Элементы конвейера НТТP в IIS 7
Пулы приложений в IIS 7 работают в одном из двух режимов: встроенный (интегрированный) и классический (ISAPI). Если приложение запущено в пуле, работающем во встроенном режиме, то веб-сервер применяет интегрированные конвейеры IIS + ASP.NET, т. е. всем сервером и запросами к нему можно управлять из ASP.NET. Если приложение запущено в пуле c классическим режимом, то веб-сервер направляет запросы через aspnet_isapi.dll, т.е. обрабатывает их аналогично IIS 6.0. «Основные настройки» Пулы IIS 7 Три приложения работают в пуле по умолчанию: корень сервера, people, script. Остальные – в отдельных именных пулах Пулы работают от имени NetworkService
Модули в IIS 7 Модули делятся на три типа: собственные (машинные), управляемые (управляются средой.NET Framework, см. Модули HTTP, события приложения - Global.asax.ppt ) и неуправляемые (приложения Win32 для IIS 5, 6, которые не управляются средой.NET Framework).Модули HTTP, события приложения - Global.asax.ppt Собственные модули – это собственный код библиотек DLL веб-сервера, который выполняет специфическую работу по обслуживанию запросов. Например, WindowsAuthModule выполняет интегрированную проверку подлинности Windows с использованием NTLM. Модуль управляемого кода можно задать как файл класса в папке App_Code приложения. Также можно создать модуль как проект библиотеки классов, скомпилировать его и добавить в папку Bin приложения. Эти модули могут выполнять работу по обработке запроса параллельно с собственными модулями. Управляемые модули позволяют создавать уникальные серверы и управлять их работой. Например, можно реализовать проверку подлинности с помощью форм не только с содержимым ASP.NET, но и другими типами, например, PHP.скомпилировать его и добавить Модули, зарегистрированные в элементе globalModules файла ApplicationHost.config, обладают глобальной областью действия для всех веб-приложений. Если глобальный модуль в веб-приложениях не используется, его можно отключить через диспетчер IIS. Фильтры ISAPI в IIS 7 Фильтры ISAPI – это программы, которые можно добавить в IIS для улучшения работы веб-сервера. В службах IIS 7 модули и обработчики событий в Global.asax заменяют функциональные возможности, которые обеспечивали фильтры ISAPI в службах IIS 6.0. Однако все еще можно добавлять фильтры ISAPI, если необходимо использовать предоставляемые ими функциональные возможности.
Обработчики запросов в IIS 7 В службах IIS 7 обработчики формируют ответы на запросы к узлам и приложениям. Как и модули, обработчики внедряются как собственный или как управляемый код. При наличии определенного типа содержимого на узле или в приложении необходимо иметь обработчик, который сможет обработать запрос к этому типу содержимого. Следует сопоставить этот обработчик с типом содержимого. Например, обработчик страниц ASP реализован в модуле IsapiModule и по умолчанию включён (колонка «Состояние» на рисунке) в службы IIS 7. Он сопоставляется (колонка «Путь» на рисунке) со всеми запросами к.asp -файлам. Для внедрения неуправляемых кодов обработчиков CGI и ISAPI версий IIS 5,6 необходимо (см. следующие слайды) сначала в заданных каталогах приложения включить собственные модули IIS 7: CGI-exe, ISAPI-dll для поддержки неуправляемых кодов. Далее можно добавить и включить выполнение файлов неуправляемых обработчиков. Установка модуля FastCGI позволяет подключать CGI-обработчики PHP, Perl, Python… Модуль FastCGI допускает повторное использование процесса благодаря поддержке пула рабочих процессов, таким образом обеспечивая значительно большую производительность. Скопировать и настроить модуль PHP для IIS 7 можно, например, по адресу ru/magazine/cc aspx. ru/magazine/cc aspx Модули Файлы сопоставления
Запуск приложений в IIS 7 (В IIS 5, 6 – это «Разрешён запуск» - «Сценарии и исполняемые файлы») Включить модуль IsapiModule (файл isapi.dll) для подключения собственных обработчиков.dll Включить разрешение выполнения для этого модуля Шаг 1 – создать в консоли IIS приложение или виртуальный каталог для хостинга неуправляемого (не.NET) CGI-ISAPI обработчика запросов. Шаг 2 – в созданном приложении при помощи «Сопоставления обработчиков» разрешить управляемым модулям CgiModule и IsapiModule исполнять неуправляемые CGI и ISAPI
Шаг 3 – добавить ISAPI-обработчик – «Добавить сопоставление сценария» Допустимые типы файлов для собственных обработчиков, например, *.dll Адрес собственного обработчика
Итог – запись в «Ограничениях ISAPI и CGI» компьютера и фиксация настроек приложения в его файле конфигурации web.config Можно проверить добавление обработчика в ограничениях ISAPI и CGI вашего компьютера
Источники 1.Эспозито Д. Microsoft ASP.NET 2.0. Базовый курс / Пер. с англ. – М.: «Русская редакция»; СПб.: Питер, с.: ил. 2.Эспозито Д. Microsoft ASP.NET 2.0. Углублённое изучение / Пер. с англ. – М.: «Русская редакция»; СПб.: Питер, с.: ил. 3.Основы архитектуры IIS, или запросопровод для ASP.NET Библиотека MSDN.