Поделиться через


Оснастка PowerShell: создание веб-сайтов, веб-приложений, виртуальных dirs и пулов приложений

Томас Демл

В этом пошаговом руководстве вы узнаете, как создавать веб-сайты, веб-приложения, виртуальные каталоги и пулы приложений.

Введение

Пространство имен IIS PowerShell состоит из таких элементов, как веб-сайты, приложения, виртуальные каталоги и пулы приложений. Создавать новые элементы пространства имен и управлять ими очень легко с помощью встроенных командлетов PowerShell.

Создание Web-Sites

Если вы знакомы с PowerShell, вы знаете, что командлет New-Item используется для создания новых элементов в различных пространствах имен PowerShell. Например, команда New-Item c:\TestDirectory создает новый каталог файловой системы (большинство пользователей MD используют псевдоним или MKDIR для New-Item ). New-Item также используется для создания новых Web-Sites в пространстве имен IIS PowerShell.

Параметры

Указание имени каталога является единственным аргументом, необходимым при создании нового каталога файловой системы. К сожалению, этого недостаточно при создании веб-сайта. Для создания веб-сайта требуются дополнительные параметры, такие как путь к файловой системе и сетевые привязки. Ниже приведена команда для создания нового Web-Site за которой следует команда dir:

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test
PS IIS:\Sites> dir
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
TestSite         2    Started    c:\test                        http :80:TestSite

Использовать аргумент -physicalPath довольно просто. Но вы можете спросить себя, почему аргумент -bindings выглядит так сложно.

Используемая конструкция является хэш-таблицей (см. раздел здесь , чтобы узнать больше о хэш-таблицах PowerShell). В хэш-таблице пары "ключ=значение" указывают параметры, отражающие атрибуты в разделе привязки сайта IIS:

<bindings>
    <binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>

Вот почему мы используем хэш-таблицу: конфигурация IIS полностью расширяема (дополнительные сведения см. в разделе здесь) с дополнительными разделами и атрибутами. Вы можете себе представить, что кто-то расширяет элемент привязки <> с помощью дополнительных атрибутов. Пары "Ключ-значение" в хэш-таблице обеспечивают гибкость при внедрении этих новых атрибутов без необходимости полного перезаписи оснастки IIS PowerShell.

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

Удаление сайтов

Вот как удалить только что созданный сайт.

PS IIS:\ >Remove-Item IIS:\Sites\TestSite

Создание веб-приложений

Создавать веб-приложения проще, чем создавать сайты. Вот так:

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application
Name                     ApplicationPool          EnabledProtocols         PhysicalPath
----                     ---------------          ----------------         ------------
DemoApp                  DefaultAppPool           http                     c:\test

Единственным параметром, который необходимо указать, является тип (-type), так как под Web-Site может потребоваться создать приложения или виртуальные каталоги. Указав параметр -type, вы указываете оснастке IIS создать приложение.

Чтобы удалить приложение, можно также воспользоваться командой Remove-Item.

Создание виртуальных каталогов

Для создания виртуального каталога также используется командлет New-Item. Давайте создадим виртуальный каталог под веб-сайтом по умолчанию, а второй — под веб-приложением, созданным на предыдущем шаге.

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir1                                   c:\test\virtualDirectory1

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir2                                   c:\test\virtualDirectory2

Создание пулов приложений

Но это становится еще проще. Для создания нового AppPool требуется только указать имя.

PS IIS:\> new-item AppPools\DemoAppPool
Name                     State
----                     -----
DemoAppPool              {}

Просто, не так ли? Теперь давайте рассмотрим комплексный сценарий.

Объединение всего этого

В следующем комплексном сценарии мы выполним следующий шаг:

  1. Создайте набор новых каталогов файловой системы для сайтов, веб-приложений и виртуальных каталогов, которые мы создадим чуть позже.
  2. Скопируйте очень простое веб-содержимое в только что созданные каталоги.
  3. Создание пула приложений
  4. Создайте новый сайт, новое приложение и два новых виртуальных каталога и назначьте их только что созданному пулу приложений.
  5. Запросите веб-содержимое через веб-браузер.

Шаг 1. Создание новых каталогов

Мы используем командлет New-Item для создания четырех новых каталогов файловой системы. Выполните следующие команды (используйте md вместо New-Item, если вы не хотите указывать параметр -type):

New-Item C:\DemoSite -type Directory
New-Item C:\DemoSite\DemoApp -type Directory
New-Item C:\DemoSite\DemoVirtualDir1 -type Directory
New-Item C:\DemoSite\DemoVirtualDir2 -type Directory

Шаг 2. Копирование содержимого

Теперь давайте напишем простое html-содержимое в эти каталоги:

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"
Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"
Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"
Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

Шаг 3. Создание пула приложений

Создайте новый пул приложений DemoAppPool для нового сайта, если вы удалили созданный в предыдущем примере.

New-Item IIS:\AppPools\DemoAppPool

Примечание

Приведенный выше командлет завершится ошибкой, если модуль WebAdministration не был импортирован. Для этого можно добавить следующий командлет в качестве первого шага скрипта, содержащего указанный выше командлет:

Import-Module "WebAdministration"

Шаг 4. Создание новых сайтов, веб-приложений и виртуальных каталогов и назначение пулу приложений

Вот и говяжья говядина. Мы создаем DemoSite, DemoApp и два виртуальных каталога: DemoVirtualDir1 находится непосредственно под DemoSite, а DemoVirtualDir2 — под DemoApp. Мы назначаем DemoSite и DemoApp для DemoAppPool, созданного на предыдущем шаге. DemoSite назначается порту 8080, чтобы не конфликтовать с веб-сайтом по умолчанию

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application
Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory
New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory

Вуаля. Остается только запросить веб-содержимое.

Шаг 5. Запрос веб-содержимого

Вы, конечно, можете открыть браузер и ввести http://localhost:8080/ и все остальные URL-адреса. Но это пошаговое руководство по PowerShell, и мы будем использовать PowerShell, чтобы сделать это с помощью классов .NET WebClient:

$webclient = New-Object Net.WebClient
$webclient.DownloadString("http://localhost:8080/");
$webclient.DownloadString("http://localhost:8080/DemoApp");
$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");
$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");

Если вы чувствуете себя предприимчивым, вы также можете использовать интернет-Обозреватель объект:

$ie = new-object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("http://localhost:8080/");

Итоги

В этом пошаговом руководстве вы узнали, как создавать веб-сайты, веб-приложения, виртуальные каталоги и пулы приложений с помощью PowerShell. Для создания комплексного функционального сценария использовались дополнительные функции PowerShell.