Internet information services веб-сервери

Тепер веб-сервери можна встановлювати швидше і простіше, якщо покликати на допомогу Windows PowerShell.

Джейсон Хелмік

Додайте до цього необхідність автоматизації відновлення в разі аварій. Чи зможете ви за лічені хвилини повернути до життя свою веб-ферму? Встановлювати чи налаштовувати IIS-сервера разом з усіма його веб-сайтами - просте завдання. А якщо серверів багато, процес стає тривалим і нудним.

Нікому не сподобається витрачати вихідні на установку серверів. Вам адже хочеться керувати веб-фермами, веб-сайтами і всіх інших веб-господарством в звичайні робочі години. Тому вам напевно буде цікава можливість прискорити і автоматизувати свою роботу.

Це покрокове керівництво дозволить вам розгорнути IIS і веб-сайти за замовчуванням на багатьох серверах за раз приблизно за чотири хвилини. Це неможливо зробити засобами призначеного для користувача інтерфейсу диспетчера сервера і диспетчера IIS. По суті, графічний інтерфейс - це частина проблеми. Так як зробити цю магію можливої? Windows PowerShell. (Зауважте, що тут мова йде про IIS 7.5 і IIS 8.)

Віддалене взаємодія PowerShell

Перш ніж ми почнемо, переконайтеся, що на ваших серверах включено віддалене взаємодія PowerShell (PowerShell Remoting). Ось як ми вчинимо. Перш ніж перейти до швидкого і простого етапу розгортання, познайомимося, як включити віддалене взаємодія Windows PowerShell, якщо ви цього ще не зробили.

Є два способи вирішення цього завдання. Якщо ви будете робити це в тестовому середовищі, перший метод може виявитися більш швидким. Потрібно включити дві можливості Windows PowerShell: віддалене взаємодія PowerShell і виконання сценаріїв. Перший метод вимагає фізичної присутності на кожному керованому сервері. Можна скористатися віддаленим робочим столом або ж переміщатися між комп'ютерами «на своїх двох».

Відкрийте консоль Windows PowerShell з адміністративними привілеями і скористайтеся Командлети Enable-PSRemoting для включення віддаленого взаємодії Windows PowerShell на кожному з серверів:

На цьому етапі ви готові до розгортання і управління своїми IIS-серверами. Якщо потрібно управляти сотнями серверів, можна створити відповідну групову політику. На обхід всіх цих серверів витрачається багато зайвого часу, тому наводжу інструкції, як включити віддалене взаємодія Windows PowerShell за допомогою об'єкта групової політики.

  1. Увімкніть політику «Allow automatic configuration of listeners» і задайте в параметрах IPv4 і IPv6 значення «*». Цей параметр знаходиться в вузлі Computer Configuration \ Policies \ Administrative templates \ Windows Components \ Windows Remote Management \ WinRM Server.
  2. Увімкніть виконання сценаріїв в «Turn on Script Execution» і виберіть варіант «Allow only signed scripts» (Дозволяти тільки підписані сценарії) або «Allow local scripts and remote signed scripts» (Дозволяти локальні сценарії і віддалені підписані сценарії). Цей параметр знаходиться в вузлі Computer Configuration \ Policies \ Administrative templates \ Windows Components \ Windows PowerShell.
  3. Налаштуйте службу Windows Remote Management (WinRM) на автоматичний запуск в наступному вузлі Computer Configuration \ Policies \ Windows Settings \ Security Settings \ System Services.

Якщо на ваших серверах працюють брандмауери, потрібно створити виходить правило для служби WinRM, якій потрібно прослуховувати порт 5985. Відповідний параметр політики ви знайдете в вузлі Computer Configuration \ Policies \ Windows Settings \ Windows Firewall with Advanced Security.

Розгортання веб-серверів

А тепер починається веселощі. Все робиться досить просто, тому що магічні операції виконуються командами PowerShell, що складаються з одного рядка.

Збережіть в змінної список всіх імен серверів, які потрібно розгорнути. Список можна створити в Блокноті, а потім передати ім'я файлу в Windows PowerShell:

Це досить незручно, особливо якщо серверів багато. Краще доручити цю роботу Windows PowerShell. Чи знаєте ви, що командлети Active Directory дозволяють отримати список імен комп'ютерів. Щоб отримати доступ до Командлети Active Directory, потрібно встановити набір засобів RSAT (Remote Server Administration Tools) для Active Directory. Якщо ви зает секрет неявного віддаленого взаємодії Windows PowerShell, то зможете використовувати його, не встановлюючи комадлети на локальному комп'ютері. Після установки RSAT насамперед треба імпортувати модуль з Командлети для Active Directory:

Після імпорту можна задіяти командлет Get-ADComputer для отримання потрібних імен комп'ютерів. В даному прикладі імена комп'ютерів, на яких потрібно розгорнути IIS, починаються з «Web». Фільтрувати командлет Get-ADComputer, щоб отримати тільки імена, що починаються з «Web», і передайте результат по конвейверу в, щоб отримати ім'я тільки одного комп'ютера:

Рішення на основі сценарію

Найкраще в Windows PowerShell полягає в тому, що після виконання завдання можна просто скопіювати текст з консолі і створити сценарій. Ніякої метушні, ніякого програмування - просто автоматизація. Якщо ви хочете виконувати розгортання серверів в разі аварії або для додаткового тестування, скопіюйте наведені тут команди в текстовий файл на ім'я за замовчуванням IISDeploy.ps1. Потім цей сценарій можна виконувати кожен раз, коли треба розгорнути веб-сервери.

Подібний підхід відкриває масу нових можливостей. Можна автоматизувати розгортання багатьох веб-сайтів на веб-фермі, створювати завдання навантажувального тестування ферм або навіть застосовувати цей підхід для роботи з іншими ролями і компонентами Windows.

Вивчіть детальніше модуль WebAdministration на IIS на предмет наявності командлетів, які дозволяють створювати і конфігурувати веб-сайти, кулі додатків і багато іншого. Якщо потрібно щось автоматизувати, Windows PowerShell дозволить виконати роботу набагато легше і швидше.