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

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

Выпуск веб-развертывания версии 2.1 устанавливает несколько сценариев PowerShell, которые упрощают настройку сервера IIS, чтобы пользователи могли публиковать его с помощью веб-развертывания. На этой странице показано, как использовать эти скрипты для создания сайта публикации по умолчанию, включения публикации для нового или существующего сайта и пользователя, создания баз данных 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.
    • Веб-развертывание должно быть установлено с компонентом интеграции службы управления. (Чтобы этот параметр отображалась в установщике веб-развертывания, сначала необходимо включить службу веб-управления.)

Общие инструкции 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.Publish Параметры — этот файл может использоваться WebMatrix (или потенциально Visual Studio) для публикации на сайте. Этот профиль не содержит сведения о публикации базы данных на данный момент.

Включите публикацию веб-развертывания для любого сайта и пользователя с помощью скрипта SetupSiteForPublish:

Скрипт: SetupSiteForPublish.ps1

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

Параметры:

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

Примеры:

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

.\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 с скриптами и выходными данными для параметров публикации.

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

<?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
databaseUserName Имя пользователя базы данных и имени входа. wdeploySqlUser Укажите нового пользователя каждый раз или вы можете в конечном итоге сбросить пароль для входа пользователя и недопустимые учетные данные подключения пользователя.
databaseUserPassword Пароль для пользователя базы данных и имени входа. Если пароль не указан, создается автоматически. [автоматическое создание] В некоторых случаях автоматически созданный пароль может содержать символы, которые вызывают проблемы с определенными клиентами публикации. Попробуйте изменить скрипт, если вы используете скрипт для автоматического создания базы данных.
database Администратор User Имя пользователя администратора SQL Server (обычно "sa"). ОБЯЗАТЕЛЬНО
database Администратор Password Пароль для учетной записи администратора SQL Server. ОБЯЗАТЕЛЬНО
sqlServerInstanceName Расположение SQL Server. .\Sqlexpress

Общие

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

Примеры:

Создайте базу данных с пользователем, используя значения по умолчанию (локальная база данных 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
databaseUserName Имя пользователя базы данных. WDeployUser
databaseUserPassword Пароль для пользователя базы данных и имени входа. Если пароль не указан, создается автоматически. [автоматическое создание] В некоторых случаях автоматически созданный пароль может содержать символы, которые вызывают проблемы с определенными клиентами публикации. Попробуйте изменить скрипт, если вы используете скрипт для автоматического создания базы данных.
database Администратор User Имя администратора базы данных, обычно "root". ОБЯЗАТЕЛЬНО Если этот параметр не указан, вам будет предложено ввести этот параметр.
database Администратор Password Пароль для учетной записи администратора сервера. ОБЯЗАТЕЛЬНО Если этот параметр не указан, вам будет предложено указать значение.
serverHostName Расположение сервера MySQL localhost *См. примечание ниже

General:

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

*Если вы указываете значение, отличное от 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.

Параметры:

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