Скрипты PowerShell для автоматизации настройки веб-развертывания

Кристина Олсон

Выпуск Web Deploy версии 2.1 устанавливает несколько сценариев PowerShell, упрощающих настройку сервера IIS, чтобы пользователи могли публиковать на него, используя Web Deploy. На этой странице показано, как использовать эти скрипты для создания сайта публикации по умолчанию, включения публикации для нового или существующего сайта и пользователя, создания баз данных SQL или MySQL или настройки правил делегирования — все с помощью PowerShell.

Используемые скрипты:

  • SetupSiteForPublish.ps1
  • CreateSqlDatabase.ps1
  • CreateMySqlDatabase.ps1
  • AddDelegationRules.ps1

Требования

  • Сервер должен иметь операционную систему, которая поставляется с IIS7— это означает windows Server 2008 или Windows Server 2008 R2. Вам необходимо иметь права администратора на компьютере.

  • Убедитесь, что выполнены следующие условия:

    • Необходимо установить PowerShell2 (это встроенное в Windows Server 2008 R2; для Windows Server 2008, вы можете получить PowerShell2 в качестве обновления: https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid=0be83604-db27-4b99-976a-136a92bd579b Может потребоваться перезагрузка.
    • Роль веб-сервера (IIS) должна быть включена в диспетчере серверов.
    • Служба роли веб-службы управления IIS ("Служба управления") должна быть включена в диспетчере серверов.
    • Чтобы использовать скрипты базы данных PowerShell, сервер должен иметь доступ к базе данных SQL или MySQL. Объекты управления SQL Server также должны быть установлены для SQL.
    • Программа Web Deploy должна быть установлена с компонентом интеграции службы управления. (Чтобы этот параметр отображался в установщике веб-развертывания, сначала необходимо включить службу веб-управления.)

Общие инструкции PowerShell

  1. Запустите командное окно PowerShell.

    Щелкните значок PowerShell на панели задач или нажмите кнопку "Пуск", введите PowerShell и выберите Windows PowerShell.
    Снимок экрана: панель задач Windows, отображающая кнопку
    (Синий значок)

  2. Убедитесь, что политика выполнения позволяет выполнять скрипты.

    1. Введите Get-ExecutionPolicy. Если оно ограничено (по умолчанию), необходимо сбросить его в более разрешительный параметр, например, введя "Set-ExecutionPolicy AllSigned". Параметр AllSigned позволяет запускать подписанные скрипты, но будет запрашивать подтверждение, если они не считаются доверенными.

    2. Дополнительные сведения о настройках политики выполнения см. раздел Использование командлета Set-ExecutionPolicy.

  3. Перейдите в каталог сценариев веб-развертывания.

    1. Введите cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts' (но замените %programfiles% фактическим путем, например C:\Program Files).

Используйте скрипт SetupSiteForPublish для создания веб-сайта публикации по умолчанию (без баз данных)

Запустите скрипт SetupSiteForPublish.ps1 без аргументов:

Снимок экрана: консоль PowerShell с выходными данными.

Что это делает:

Скрипт создает пользователя и сайт для публикации без администратора и сохраняет сведения профиля публикации в файле на рабочем столе. В частности, он создает сайт с именем WDeploySite с физическим корнем сайта %systemdrive%\inetpub\WDeploySite. Сайт будет иметь соответствующий пул приложений WDeployAppPool и будет назначен порту 8080 по умолчанию (или следующий доступный порт, если другой сайт использует 8080). Этот скрипт также создает локального пользователя Windows с именем WDeploySiteuser без административных прав и предоставляет этому пользователю полные права управления доступом на папку WDeploySite, а также разрешения диспетчера IIS на сайт. Сведения о параметрах сохраняются на рабочем столе в файле с именем WDeploy.PublishSettings. Этот файл может использоваться WebMatrix (или потенциально Visual Studio) для публикации на сайте. Этот профиль не содержит сведения о публикации базы данных на данный момент.

Настройка веб-развёртывания для любых сайтов и пользователей при помощи скрипта SetupSiteForPublish:

Сценарий: SetupSiteForPublish.ps1

Описание: для указанного сайта и учетной записи пользователя позволяет указанному пользователю публиковать на указанном сайте. Скрипт создает учетную запись пользователя, сайт и пул приложений; задает разрешения ACL каталога и диспетчера IIS для сайта; и сохраняет сведения о параметрах в файле.

Параметры:

Имя Описание Значение по умолчанию Примечания
название сайта Имя сайта. Если сайт не существует, он будет создан. WDeploySite
sitePhysicalPath Физическое расположение файла для контента сайта. Если каталог не существует, он будет создан. %systemdrive%\inetpub\WDeploySite
siteAppPoolName Имя пула приложений, который будет связан с сайтом. Если пул приложений не существует, он будет создан. WDeployAppPool Рекомендуется выделить один пул приложений на сайт.
sitePort Порт для привязок сайта. Первый из портов в диапазоне от 8080 до 8200, который не используется другим сайтом. Правило брандмауэра может потребоваться для открытия порта для удаленного трафика.
deploymentUserName Имя пользователя для предоставления доступа к сайту. Если пользователь не существует, будет создан пользователь с правами не администратора. WDeploySiteuser
парольПользователяДляРазвертывания Пароль для пользователя развертывания. Если пароль не указан, он будет автоматически создан и сохранен в файле параметров. [автоматическое создание]
managedRunTimeVersion При указании попытается задать указанную версию времени выполнения для пула приложений. Если соответствующая версия среды выполнения не найдена, будет использоваться пул приложений по умолчанию. Настройки по умолчанию для пула приложений Пример формата "v2.0" или "v4.0"
путь_сохранения_настроек_публикации Существующий каталог, в котором будет сохранен файл параметров. Рабочий стол текущего пользователя Должен быть существующим каталогом. Если указанный каталог не существует, это приведет к ошибке.
имя_файла_настроек_публикации Имя файла параметров, включая расширение. WDeploy.PublishSettings Не забудьте включить расширение. Если файл уже существует, сведения о сайте в нем будут перезаписаны.

Примеры:

Включите публикацию существующего пользователя на существующем сайте (пароль не будет сохранен в файле параметров):

.\SetupSiteForPublish.ps1 -siteName ExistingSite -deploymentUserName UserA -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Снимок экрана: консоль PowerShell с результатами скриптов.

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

.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings

Снимок экрана: консоль PowerShell с скриптами и выходными данными для параметров публикации.

Файл PublishSettings также содержит новый пароль пользователя. Обратите внимание, что поля строки подключения пустые— их можно заполнить вручную или добавить его в профиль с помощью скриптов создания базы данных:

<?xml version="1.0" encoding="utf-8"?>
<publishData>
  <publishProfile publishUrl="RWS-2008R2" msdeploySite="NewSite" destinationAppUrl="http://RWS-2008R2:81" mySQLDBConnectionString="" SQLServerDBConnectionString="" profileName="Default Settings" publishMethod="MSDeploy" userName="NewSiteUser" userPWD="Passw0rd" savePWD="True" />
</publishData>

Создание базы данных SQL для учетной записи публикации с помощью скрипта CreateSqlDatabase

Сценарий: CreateSqlDatabase.ps1

Описание: Создает базу данных, логин, пользователя базы данных с разрешениями db_owner на эту базу данных и сохраняет соответствующую информацию о строке подключения в файле параметров.

Параметры:

Имя Описание Значение по умолчанию Примечания
databaseName Имя создаваемой базы данных. wDeploySqldb
имя пользователя базы данных Имя пользователя базы данных и имени входа. wdeploySqlUser Укажите нового пользователя каждый раз, иначе вы можете в конечном итоге сбросить пароль для входа пользователя и сделать недействительными предыдущие учетные данные пользователя.
парольПользователяБазыДанных Пароль для пользователя базы данных и имени входа. Если пароль не указан, создается автоматически. [автоматическое создание] В некоторых случаях автоматически созданный пароль может содержать символы, которые вызывают проблемы с определенными клиентами публикации. Попробуйте изменить скрипт, если вы используете скрипт для автоматического создания базы данных.
databaseAdminUser Имя пользователя администратора SQL Server (обычно "sa"). ОБЯЗАТЕЛЬНО
пароль администратора базы данных Пароль для учетной записи администратора SQL Server. ОБЯЗАТЕЛЬНО
sqlServerInstanceName Расположение SQL Server. .\Sqlexpress

Общие сведения

путь_сохранения_настроек_публикации Существующий каталог, в котором будет сохранен файл параметров. Рабочий стол текущего пользователя Должен быть существующим каталогом. Если указанный каталог не существует, это приведет к ошибке.
имя_файла_настроек_публикации Имя файла параметров, включая расширение. WDeploy.PublishSettings Не забудьте включить расширение. Если файл уже существует, сведения о сайте в нем будут перезаписаны.

Примеры:

Создайте базу данных с пользователем, используя значения по умолчанию (локальная база данных SQLExpress):

.\CreateSqlDatabase.ps1

Снимок экрана: консоль PowerShell с скриптами и выходными данными для создания базы данных S Q L.

Создайте новую базу данных и добавьте сведения о строке подключения в существующий файл c:\profiles\UserA.PublishSettingsпараметров публикации:

PS C:\Program Files\IIS\Microsoft Web Deploy V2\Scripts> .\CreateSqlDatabase.ps1 -databaseName UserADb -databaseUserName UserADbUser -databaseUserPassword Passw0rdA -databaseAdminUser sa -databaseAdminPassword Passw0rd -sqlServerInstanceName .\SQLExpress -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Снимок экрана: консоль PowerShell с скриптами и выходными данными с подключением к существующему файлу параметров публикации.

Создание базы данных MySQL для учетной записи публикации с помощью скрипта CreateMySqlDatabase

Скрипт: CreateMySqlDatabase.ps1

Описание. Создает базу данных, пользователя базы данных со всеми привилегиями в базе данных (в localhost) и сохраняет сведения о строке подключения в файле параметров.

Параметры:

Имя Описание Значение по умолчанию Примечания
databaseName Имя создаваемой базы данных. WDeployDb
имя пользователя базы данных Имя пользователя базы данных. WDeployUser
ПарольПользователяБазыДанных Пароль для пользователя базы данных и имени входа. Если пароль не указан, создается автоматически. [автоматическое создание] В некоторых случаях автоматически созданный пароль может содержать символы, которые вызывают проблемы с определенными клиентами публикации. Попробуйте изменить скрипт, если вы используете скрипт для автоматического создания базы данных.
databaseAdminUser Имя администратора базы данных, обычно "root". ОБЯЗАТЕЛЬНО Если этот параметр не указан, вам будет предложено ввести этот параметр.
парольАдминистратораБазыДанных Пароль для учетной записи администратора сервера. ОБЯЗАТЕЛЬНО Если этот параметр не указан, вам будет предложено указать значение.
имяСервера Расположение сервера MySQL localhost *См. примечание под таблицей

Общие

путь_сохранения_настроек_публикации Существующий каталог, в котором будет сохранен файл параметров. Рабочий стол текущего пользователя Должен быть существующим каталогом. Если указанный каталог не существует, это приведет к ошибке.
имя_файла_настроек_публикации Имя файла параметров, включая расширение. WDeploy.PublishSettings Не забудьте включить расширение. Если файл уже существует, сведения о сайте в нем будут перезаписаны.

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

Строка разрешений скрипта по умолчанию:

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'localhost' identified by '{2}';"

Изменена строка разрешений скрипта:

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'%' identified by '{2}';"

Примеры:

Создайте базу данных с пользователем, используя значения по умолчанию:

.\CreateMySqlDatabase.ps1

Снимок экрана: консоль PowerShell с скриптами для создания базы данных.

Создайте новую базу данных и добавьте сведения о строке подключения в существующий файл c:\profiles\UserA.PublishSettingsпараметров публикации:

.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Снимок экрана: консоль PowerShell с скриптами и выходными данными подключения к существующим параметрам публикации.

Настройка правил делегирования для сервера с помощью скрипта AddDelegationRules

Сценарий: AddDelegationRules.ps1

Описание. Этот скрипт выполняется автоматически во время установки установщиком во время полной установки, но если вы не выполнили полную установку или хотите восстановить правила в любое время, можно повторно запустить этот скрипт AddDelegationRules.

Параметры:

Имя Описание Значение по умолчанию Примечания
учётная запись с повышенными правами Имя учетной записи пользователя, которому будет предоставлен доступ на запись к файлу applicationHost.config сервера. Этот пользователь будет использоваться в качестве пользователя для выполнения в appPoolPipeline, appPoolNetFx и createApp rule. WDeployUser Создает только локального пользователя Windows и не будет работать, если включена общая конфигурация. Пароль для этой учетной записи пользователя будет сброшен, если скрипт будет выполнен во второй раз.
повышенный пароль Автоматически создается, если это не указано. [автоматическое создание]
adminUsername Имя учетной записи администратора, которая будет использоваться в качестве пользователя, от имени которого выполняется действие по правилу recycleApp. WDeployAdmin Создает только локального пользователя Windows и не будет работать, если включена общая конфигурация. Пароль для этой учетной записи пользователя будет сброшен, если скрипт будет выполнен повторно.
пароль администратора Автоматическая генерация, если значение не указано [автоматическое создание]
ignorePasswordResetErrors Переключатель. Если имя пользователя с повышенными привилегиями и правами администратора ссылается на существующую учетную запись, этот параметр позволяет скрипту сбросить пароль для учетной записи. [опущено — сброс паролей пользователей не разрешен] Сброс пароля пользователя может привести к потере доступа к данным. Этот параметр следует использовать с осторожностью. Дополнительные сведения см. в разделе https://windows.microsoft.com/windows-vista/What-are-the-risks-of-resetting-a-password. Обратите внимание также, что новый пароль пользователя не хранится и не может быть получен позже.