Присматриваемся к IIS 7.х

Статья написана для журнала Системный Администратор

Вместе с Windows Server 2008 и вышедшей следом обновленной 2008 R2 администраторы получили в свое распоряжение следующую версию IIS под номером 7.х, получивший больше возможностей по сравнению с предшественником.

Не смотря на то, что IIS (Internet Information Services) входит по умолчанию в состав операционной системы, количество его установок по сравнению с Apache меньше как минимум в двое. Так по данным Netcraft [1] на октябрь 2010 года сервер от Microsoft используется на 22.99% Интернет-ресурсах, конкурент Apache обошел его с цифрой 58.07%. И тенденция к уменьшению этого разрыва совпавшая с анонсом Windows Server 2008 (версия IIS 7.0), начала сокращаться (тогда разрыв был всего 10%). В принципе если сравнить статистику по языкам используемым в веб [2], то среди наиболее популярных находим Java, PHP, Perl, Python и другие, которые традиционно считаются наиболее удобными при совместном использовании с Apache. Хотя некоторые администраторы “недолюбливают” IIS по причине наличия большого числа критических ошибок в первых версиях, но это уже в прошлом. Начиная с IIS 6.0 особых проблем с безопасностью уже не было. C другой стороны в списке компаний, входящих в рейтинг Fortune 1000 [3], IIS уже доминирует над Apache с показателем 55% и 24.9% соответственно. И хотя последнее его обновление датируется 2007 годом, этот пример показывает, что крупный бизнес предпочитает решение от Microsoft. Причин, наверное, много. Основная — IIS входит по умолчанию всех операционных систем разрабатываемых этой корпорацией и тесно интегрируется с технологиями и другими решениями от Microsoft — ASP.NET, Silverlight, Smooth Streaming, SharePoint, ActiveDirectory, Exchange, Forefront и другие. Этот список можно дополнять достаточно долго.
Но в итоге такая интеграция упрощает управление большими порталами, обеспечивает проверку подлинности пользователей, обеспечение безопасности, как говорится “из коробки”. Что в условиях больших компаний весьма и весьма востребовано. Есть даже для IIS свой движок для блогов — Orchard, разрабатываемый в рамках проекта CodePlex.org при поддержке Microsoft и написанный на ASP.NET. Хотя, забегая вперед скажу, что на сегодня существуют модули, позволяющие IIS 7.х запускать сценарии на PHP, Perl, Python и других популярных языках программирования применяемых в веб.
Дизайн IIS 7.х значительно переработан. Перед нами новый продукт существенно отличающийся от своего предшественника 7.х, содержащий большое число новинок, которые будут интересны для специалистов разного рода деятельности.

IIS в Windows Server 2008 и R2

В Windows Server 2008 и R2 IIS является одной из ролей сервера, и очень просто устанавливается при помощи Диспетчера сервера. Причем многие моменты в установке и настройке IIS 7.х еще боле упрощены, возможно, благодаря этому удастся избежать проблем с неправильной настройкой веб сервера.
После выбора «Веб сервер IIS», будут проанализированы уже имеющиеся сервисы и компоненты (features), и случае необходимости будет выдан запрос на установку недостающих. В IIS реализован тот же подход, что в Windows Server 2008. Администратор устанавливает лишь минимальный набор, а уже затем добавляет действительно необходимые в работе функции, хотя, соглашусь, что это уже требует некоторой подготовки.
Windows Server 2008 функционально состоит из ролей и компонентов, которые также не являются неделимыми, а разбиты на модули. В терминологии Windows такие модули называются службами ролей (Role Services). Большая часть ролей состоят из нескольких Role Services.
Модульная структура призвана уменьшить число возможных уязвимостей, а также количество обновлений, так как неустановленные и неиспользуемые компоненты обновляться не будут. Теперь администратор, по сравнению с IIS 6.0, получает больший контроль на веб-сервером.

В поставке IIS имеются 40 служб ролей разделенных на несколько категорий, каждая из Role Services устанавливается независимо. Хотя в случае, когда для работы одного модуля требуется наличие другого, мастер установки предупредит о необходимости их включения. По умолчанию выбрано 9 из них, которые обеспечивают только основные функции HTTP, статическое содержимое и его сжатие, ведение журнала, монитор и фильтрацию запросов. Плюс будет установлена консоль управления IIS (IIS Manager). Среди категорий особое внимание хотелось бы обратить на IIS 6.0 Management Compatibility (совместимость метабазы IIS 6), отвечающий за совместимость по API с предыдущей версией веб-сервера. Например, при установке Microsoft Exchange Server 2007 активация этого пункта обязательна. Дополнительный модуль FastCGI обеспечивает быструю обработку Perl, PHP, Ruby и других веб-технологий, позволяя обслуживать большее число пользователей. В IIS 7.5 в установщик интегрированы модули FTP сервера, WebDav, IIS7 Administration Pack, фильтрации запросов, Powershell, которые ранее необходимо было доустанавливать отдельно.

Установить Windows Server 2008 можно как традиционно с графическим интерфейсом, так и без в режиме Server Core. Если в IIS 7.0 в режиме Server Core были доступны не все роли, в частности отсутствовала поддержка ASP.NET, то теперь приложения ASP.NET могут полноценно работать в Server Core установке.
Установить IIS в Server Core можно при помощи утилиты Pkgmngr.exe. Например, в базовой конфигурации IIS устанавливается одной командой:

> start /w pkgmgr /l:log.etw /iu:IIS-WebServerRole;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI

Если потребуются другие модули их следует указать, в результате команда выглядит достаточно большой.
Как вариант можно использовать заранее подготовленный командный или XML-файл или PowerShell. В дальнейшем управлять работой IIS можно при помощи утилиты appcmd.exe. Последняя имеет большое количество параметров, чтобы просмотреть полный их список достаточно ввести «appcmd /?».
Модуль IIS для Windows PowerShell представляет собой набор командлетов позволяющих управлять настройками IIS и администрировать веб-сервер. В Server Core PowerShell по умолчанию не устанавливается. Возможно несколько вариантов добавления его в систему. Самый простой — использовать команду Sconfig.cmd, затем выбрать в меню Configure Remote Management — Enable Windows PowerShell. Список командлетов можно найти в документации TechNet [4]. Так чтобы создать веб и FTP сайты, выполняем следующие команды.

PS> Set-ExecutionPolicy -ExecutionPolicy Unrestricted 
PS> import-module WebAdministration
PS>mkdir "$env:systemdrive\inetpub\MyNewWebSite"
PS >New-Website -name "MyNewWebSite" -PhysicalPath "$env:systemdrive\inetpub\MyNewWebSite" -port 81
PS> New-WebFTPSite -Name “FTPSite” -port 21 -physicalPath C:\ -IPAddress 192.168.1.100

В IIS 7.х концепция пулов приложений, использованная в IIS 6.0, расширена за счет использования компонента NET Framework 3.0 – Windows Process Activation Service (WAS). WAS делает доступным пул приложений не только для HTTP, но и для других протоколов. Также он на себя берет управление настройками для сайтов и приложений, а также и поддержку жизненного цикла процессов, запуская и останавливая их по мере необходимости и контролируя их работу. Кстати, динамический запуск и остановка приложений – это одна из новинок Windows Server 2008, обеспечивающая более эффективное использование системных ресурсов. Если компонент WAS еще не установлен, он будет указан в качестве одной из зависимостей вместе со своими составляющими: Process Model, Configuration API и .NET Environment.
Также в IIS 7.х добавлен новый интерфейс API – Microsoft.Web.Administration и новый поставщик WMI, которые предоставляют большое поле деятельности для создания автоматизации управления путем создания сценариев и средств для управления IIS.
Настройку IIS также можно произвести путем непосредственного редактирования .config-файлов.

Файлы настроек

В IIS 7.х по сравнению с предыдущей версией используются простые и понятные .config-файлы в формате XML, располагающиеся в тех же файлах, используемых системой настройки ASP.NET.
Параметры сервера и параметры веб-узла хранятся отдельно. В Apache подобная схема реализована давно, и мне кажется более прозрачной и удобной.
Параметры сервера хранятся в файле applicationHost.config, который находится в папке %systemroot%\windows\system32\inetsrv\config. Здесь указаны параметры всех установленных модулей, узлов, пулов приложений, безопасности и прочее. В этом же каталоге имеется файл administration.config, в котором регистрируются модули и некоторые другие связанные настройки.
Параметры отдельных веб-узлов хранятся в файлах web.config, для каждого узла на сервере существует свой web.config. В них находится описание документа по умолчанию, параметры приложений и ASP.NET.
Система настроек не зависит от компьютера, и теперь без проблем все настройки можно производить на тестовой системе, а затем после тестирования достаточно скопировать .config-файлы на рабочие серверы.
Для удобства переноса поддерживаются переменные, и если на серверах установлен один и тот же набор модулей, проблем с работой быть не должно. Причем переносимость конфигурационных файлов позволяет использовать один .config-файл на всех узлах фермы. Такая функция получила название общая конфигурация (Shared Configuration). После создания конфигурационного файла администратор его экспортирует, и во избежание попытки его подделки защищает его паролем ключа шифрования.
Для включения на другом сервере достаточно выбрать одноименный пункт, активировать флажок «Enable shared configuration», указать путь к файлу настроек, ввести необходимые для доступа учетные данные и пароль шифрования.

Управление IIS

После установки IIS получает свою вкладку в Диспетчере сервера, где доступны настройки модулей и вывод связанных событий. Плюс консоль Диспетчер служб IIS (IIS Manager, inetmgr), можно вызвать отдельно из меню Администрирование. Причем появившиеся для IIS 7.0 инструменты управления в версии IIS 7.5 претерпели существенные изменения. В Диспетчер служб IIS (inetmgr) интегрирован IIS7 Administration Pack (ранее устанавливался отдельно), который содержит редактор конфигурация сервера, вкладки управления настройками FastCGI, авторизации ASP.NET, управлять ошибками и редактировать правила фильтрации HTTP запросов. Интерфейс последнего существенно переработан, и главное он стал на порядок проще и понятнее в использовании, назначение пунктов должно быть понятна даже новичку. что, учитывая большее количество функций, доступных в IIS 7.х, не может не радовать. Кроме этого в поле Ресурсы в сети (Resources and Support) показаны основные рекомендации по эффективной настройке IIS. В версии Windows Server 2008 R2 возможно удаленное управление IIS с другого сервера при помощи Диспетчера сервера, а также Диспетчер служб IIS. IIS Manager не является оснасткой MMC. Поддерживается подключение к удаленным серверам по протоколу НТТР или HTTPS без использования внутренних протоколов Windows. В настольных версиях операционных систем Windows Vista или Windows 7, для удаленного управления следует установить Web Management Service (WMSVC).
Для подключения к серверу, сайту или приложению достаточно перейти в Файл (Start Page) и выбрать нужную задачу. Запустится простой мастер подключения, который поможет произвести все нужные действия. Естественно, в целях безопасности такие соединения можно ограничить или полностью блокировать.

Интерфейс IIS Manager выполнен в том же стиле, что и Server Manager, и визуально разделен на три части.
В левой панели выводятся все веб-серверы, к которым он подключен, сайты и пулы приложений отображаются в виде раскрывающегося дерева. Выбор любого пункта приведет к появлению специфических для него настроек в рабочей области в центре и задач в правом.
В рабочей области доступны все функции управления IIS, которые в ранней версии были распределены по разным вкладкам, теперь искать ничего не нужно, каждый имеет понятный значок, поэтому разобраться в доступных функциях просто.
Так как консоль является приложением WinForm, его возможности легко расширить, добавив сторонние модули.
В этом же окне находятся параметры настройки для ASP.NET, что избавляет от необходимости использовать дополнительные инструменты, а также функции делегирования управления.
Последняя функция весьма удобна и востребована, так как позволяет снизить нагрузку на персонал, передав часть полномочий непосредственно владельцу сайта.
Кроме настроек, консоль IIS позволяет быстро разрешать проблемы с веб-узлами и приложениями, выводя всю возможную диагностическую информацию в реальном времени начиная с момента получения сервером запроса и его прохождения по всем элементам.
Выбрав пункт Рабочие процессы (Worker Processes), можно получить данные о том, как долго выполняется запрос, приложение его выполняющее, загрузку процессора.
Дважды щелкнув по интересующему событию, администратор может получить более подробную информацию (URL, IP-адрес клиента, состояние, название модуля и время).
Выбрав Ведение журнала (Logging), можно настроить параметры ведения журнала, в который включить любое интересное событие, которое может заинтересовать администратора в случае возникновения сбоев.
Если установлен модуль Tracing, администратор может активировать трассировку любых событий.
При необходимости для URL можно сконфигурировать обработчики, которые будут собирать данные, подпадающие под определенный критерий.
Диагностикой, кроме консоли IIS, можно управлять при помощи appcmd и через WMI.
Кроме настроек, при помощи консоли можно быстро получить доступ к содержимому конкретного сайта и при необходимости выполнить с ним определенные действия (установить разрешения, виртуальный каталог, произвести откат к предыдущей версии файла и другие установки). При наличии большого количества серверов и сайтов это очень удобно.
Дополнительную информацию о IIS можно получить на сайте, посвященном IIS 7.0 [5,6].

Мал да удал — IIS Express

Веб-разработчку часто необходимо для отладки проектов иметь установленный на локальной системе веб-сервер. Причем учитывая, что IIS входит в состав настольных версий ОС Windows, хотя и с некоторыми ограничениями [7], для локального веб-сервера не потребуется нужно иметь под рукой серверную версию Windows. Но часто такая возможность не совпадает с политикой безопасности компании. Хотя бы потому, что для управления потребуется дать пользователю права администратора, что не всегда приемлемо. Да и неправильно настроенный веб-сервер – это потенциальная брешь в защите. Для этих целей обычно используют ASP.NET Developer Server входящий в состав Visual Studio. Теперь Microsoft предлагает ему замену IIS Express (IIS Developer Express) — легковесный веб-сервер, полностью совместимый с IIS и поддерживающий все необходимые функции с минимумом настроек. Его можно установить и запускать параллельно IIS 7.х и ASP.NET Development Server без конфликтов. Прав администратора не требуется. Как вариант IIS Express может заменить собой ASP.NET Development Server в Visual Studio. Поддерживается установка на Windows XP SP3 и выше. На сегодня доступна бета версия, которая входит в пакет Microsoft WebMatrix beta [8].

***

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

Ссылки:

1. Сайт Netcraft – http://www.netcraft.com.
2. Статистика по языкам программирования — http://langpop.com/
3. Toп веб-серверов в организациях из Fortune 1000 – http://www.port80software.com/surveys/top1000webservers
4. Web Server (IIS) командлеты PowerShell — http://technet.microsoft.com/en-us/library/ee790599.aspx
5. Официальный ресурс Microsoft, посвященный IIS – http://www.iis.net
6. IIS Learning Center — http://learn.iis.net/
7. Таблица сравнение возможностей IIS 7.5 в разных версиях Windows Server 2008 R2 и Windows 7 — http://technet.microsoft.com/en-us/library/cc753473.aspx
8. Microsoft WebMatrix — http://www.microsoft.com/web/webmatrix/

Теги: ,

Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.

Комментарии

Комментариев пока что нет

Оставить комментарий

(required)

(required)