Оснастка 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. Создание новых каталогов
Мы используем командлет 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.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по