Скрипты 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
Запустите командное окно PowerShell.
Щелкните значок PowerShell на панели задач или нажмите кнопку "Пуск", введите PowerShell и выберите Windows PowerShell.
(Синий значок)Убедитесь, что политика выполнения позволяет выполнять скрипты.
Введите Get-ExecutionPolicy. Если оно ограничено (значение по умолчанию), необходимо сбросить его в более разрешительный параметр, например, введя "Set-ExecutionPolicy AllSigned". Параметр AllSigned позволяет запускать подписанные скрипты, но запрашивать, если они не являются доверенными
Дополнительные сведения о параметрах политики выполнения см. в разделе "Использование командлета Set-ExecutionPolicy".
Перейдите в каталог сценариев веб-развертывания.
- Тип
cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts'
(но замените%programfiles%
фактическим путем, напримерC:\Program Files
).
- Тип
Используйте скрипт SetupSiteForPublish для создания веб-сайта публикации по умолчанию (без баз данных)
Запустите скрипт SetupSiteForPublish.ps1 без аргументов:
Что это делает:
Скрипт создает пользователя и сайт для публикации без администратора и сохраняет сведения профиля публикации в файле на рабочем столе. В частности, он создает сайт с именем 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
Включите публикацию нового пользователя на новом сайте с пользовательским именем и расположением для файла параметров публикации:
.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings
Файл 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
Создайте новую базу данных и добавьте сведения строка подключения в существующий файл 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
Создание базы данных 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
Создайте новую базу данных и добавьте сведения строка подключения в существующий файл c:\profiles\UserA.PublishSettings
параметров публикации:
.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
Настройка правил делегирования для сервера с помощью скрипта 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. Обратите внимание также, что новый пароль пользователя не хранится и не может быть получен позже. |