Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Введение
В версии 3 Web Deploy вводит функцию автоматического серверного резервного копирования для IIS 7 и выше. Когда на сервере настроены автоматические резервные копии, а пользователь публикует на своем сайте с помощью Web Deploy, сначала выполняется резервное копирование активного сайта и его сохранение на сервере перед внесением любых изменений на сайте. Если публикация завершилась сбоем по какой-либо причине или пользователь хочет восстановить более раннюю версию своего веб-сайта, он сможет восстановить данные из этих резервных копий без участия администратора сервера. Эта функция должна быть включена и настроена администратором сервера, прежде чем пользователь может воспользоваться его преимуществами.
При создании резервных копий
Когда веб-развертывание обнаруживает публикацию пользователя с помощью поставщика contentPath, iisApp или appHostConfig, он автоматически запустит резервную копию (если она включена на сервере). Во многих случаях эти поставщики также включаются в публикации с использованием Web Matrix и Visual Studio. Ниже приведен пример командной строки синхронизации, которая инициирует резервное копирование в remoteComputerName с помощью агента веб-развертывания.
msdeploy.exe -verb:sync -source:iisapp=<siteName> -dest:auto,computername=<remoteComputerName>
Если исходный поставщик является манифестом, веб-развертывание проверяет всех поставщиков манифеста, чтобы определить, является ли любой из поставщиков в манифесте поставщиком contentPath, iisApp или appHostConfig. Если это так, он инициирует резервное копирование для всех поставщиков (см. раздел "Известные проблемы и ограничения" для исключений в этом манифесте). Однако если существуют конфликтующие пути поставщика (например, один указывает на сайт "foo", а другой указывает на сайт "bar"), веб-развертывание не будет создавать резервную копию.
Что содержит резервная копия
По умолчанию Web Deploy будет использовать всех указанных поставщиков для вашей публикации (за исключением setAcl, который никогда не включен) для создания резервной копии. Поэтому, если я публикую с помощью поставщиков iisApp и dbFullSql, Web Deploy создаст резервную копию вашего приложения iisApp и базы данных dbFullSql на сервере. Это будет включать все содержимое и конфигурацию, принадлежащие веб-приложению, а также скрипт базы данных, который можно использовать для повторной публикации веб-приложения. Это поведение по умолчанию можно изменить, изменив настройку резервного копирования ExcludedProviders или указав настройки пропуска до публикации.
Эти резервные копии являются допустимыми пакетами веб-развертывания, которые можно копировать и использовать с веб-развертыванием на любом совместимом сервере IIS.
Настройка функции автоматического резервного копирования на сервере (для администраторов сервера)
Чтобы предоставить пользователям функцию автоматического резервного копирования, администратор сервера должен подготовить место на сервере, где эти резервные копии могут храниться. Это пространство может быть физически расположено на сервере или может находиться в общей сетевой папке, доступной с сервера.
Объем необходимого пространства зависит от того, насколько большие отдельные приложения являются, и количество резервных копий, которые вы планируете хранить на сервере. Если вы хотите управлять пространством, сделанным резервными копиями, следует использовать отдельную папку для каждого сайта и использовать диспетчер ресурсов Файлового сервера Windows (FSRM) для ограничения квот отдельных папок. В рамках лучших практик безопасности рекомендуется настроить контроль доступа (ACL) для этих папок так, чтобы каждый пользователь имел права на чтение и запись только в своей папке.
Резервные копии можно включить глобально на сервере, чтобы все сайты могли воспользоваться им или настроить их на основе каждого сайта.
Настройка параметров резервного копирования на сервере для глобального использования автоматически с помощью PowerShell
Сценарий PowerShell для настройки функции резервного копирования на уровне сервера можно найти в разделе %programfiles%\IIS\Microsoft Web Deploy V3\scripts\BackupScripts.ps1. Чтобы загрузить его, просто перейдите в этот каталог в PowerShell и выполните следующую команду:
. .\BackupScripts.ps1
При этом будут загружены следующие функции в сеанс, который можно использовать для настройки резервных копий.
- TurnOn-Backups: включает и отключает резервные копии для всего сервера.
- Настройка резервного копирования: задает параметры резервного копирования сервера или сайта по умолчанию.
- Configure-BackupSettingsProvider: управляет параметрами сервера, определяющими степень контроля, которую администратор сайта будет иметь над поведением резервного копирования.
- Get-BackupSettings: запросы сервера или параметров резервного копирования для конкретного сайта
- Reset-BackupSettings: сбрасывает параметры резервного копирования сервера или сайта
Функция TurnOn-Backups:
Позволяет администратору сервера включать или отключать резервные копии в области SERVER без перезаписи параметров сайта. По умолчанию резервные копии отключены. Даже после включения резервных копий резервные копии по-прежнему должны быть включены на уровне сервера или сайта, чтобы резервное копирование выполнялось.
# Turns on all backup functionality
TurnOn-Backups -On $true
# Turns off all backup functionality
TurnOn-Backups -On $false
Настройка резервных копий:
Позволяет администратору сервера настроить поведение резервного копирования по умолчанию в определенной области SERVER или SITE . Если администратор задает параметр на уровне сервера, а сайт уже указал свои параметры, Web Deploy предпочтёт параметры сайта над параметрами сервера. Если администратор сервера хочет, чтобы параметры сервера имели приоритет, он должен сбросить параметры резервного копирования сайта, что приведет к автоматическому применению серверных параметров сайтом.
# Changes default global backup behavior to enabled
Configure-Backups -Enabled $true
# Changes default backup behavior for site "foo" to enabled
Configure-Backups -SiteName "foo" -Enabled $true
# Changes the path of where backups are stored to a sibling directory named "siteName_snapshots".
# For more information about path variables, see the "backupPath" attribute in the section
# "Configuring Backup Settings on the Server for Global usage manually in IIS Config"
Configure-Backups -BackupPath "{SitePathParent}\{siteName}_snapshots"
# Configures default backup limit to 5 backups
Configure-Backups -NumberOfBackups 5
# Configures sync behavior to fail if a sync fails for any reason
Configure-Backups -ContinueSyncOnBackupFailure $false
# Adds providers to skip when performing a backup
Configure-Backups -AddExcludedProviders @("dbmysql","dbfullsql")
Configure-BackupSettingsProvider:
Администраторы сайта могут изменять параметры резервного копирования конкретного сайта с помощью BackupSettingsProvider с веб-развертыванием. Эта функция позволяет администратору сервера контролировать, какие параметры может настроить администратор сайта.
# Allows a site administrator to enable backups and set the number of backups at the site level
Configure-BackupSettingsProvider -CanSetEnabled $true -CanSetNumBackups $true
# Allows a site administrator to control which providers they want to skip in a backup, as
# well as whether they can continue a sync after a backup failure
Configure-BackupSettingsProvider -CanSetContinueSyncOnBackupFailure $true -CanAddExcludedProviders $true
Get-BackupSettings
Запрашивает сервер или определенные параметры резервного копирования сайтов.
# Grabs the global default backup settings
Get-BackupSettings
# Grabs a sites-specific backup settings
Get-BackupSettings -SiteName "foo"
Reset-BackupSettings
Сбрасывает параметры резервного копирования сервера или сайта. При сбросе параметров резервного копирования сайтов он автоматически наследуется от параметров резервного копирования серверов.
# Resets the global default backup settings
Reset-BackupSettings
# Resets a sites backup settings
Reset-BackupSettings -SiteName "foo"
Настройка параметров резервного копирования на сервере для глобального использования вручную в конфигурации IIS
Глобальные параметры резервного копирования
Следующие глобальные параметры резервного копирования можно настроить непосредственно в системе конфигурации IIS в разделе %windir%\system32\inetsrv\config\applicationhost.config.
включено — (по умолчанию = false) определяет, включены ли резервные копии.
backupPath — (по умолчанию = {sitePathParent}{siteName}_snapshots") Где на сервере будут храниться резервные копии. Он также поддерживает переменные замены пути для "{sitePathParent}" и "{siteName}", которые определяются во время выполнения.
- sitePathParent — физический путь к родителю содержимого ваших сайтов. Например, если приложение вашего сайта находится под
c:\inetpub\wwwroot\siteName, то sitePathParent будетc:\inetpub\wwwroot\. - siteName — имя сайта.
- sitePathParent — физический путь к родителю содержимого ваших сайтов. Например, если приложение вашего сайта находится под
Пример: Схема по умолчанию задает этот путь на "{sitePathParent}{siteName}_snapshots", чтобы каждая резервная копия была помещена в папку на том же уровне, что и содержимое сайта, вместо размещения внутри него.
ПРЕДУПРЕЖДЕНИЕ: Убедитесь, что backupPath не находится в пути содержимого сайта, иначе резервные копии будут удалены при каждой публикации.
- numberOfBackups — (по умолчанию = "4") Количество резервных копий на каждый сайт, который будет храниться на сервере. При создании максимального количества резервных копий будет удалена старая резервная копия.
- continueSyncOnBackupFailure — (Default = true) позволяет пользователям либо завершить синхронизацию, либо продолжить синхронизацию, если резервная копия не завершится по какой-либо причине.
- excludeedProviders- (По умолчанию = пустой набор) Список поставщиков веб-развертывания, которые всегда исключаются из резервной копии. Например, если резервные копии баз данных управляются отдельно в вашей среде, этот параметр используется для исключения резервных копий базы данных в составе резервных копий веб-развертывания, исключая dbFullSQLProvider. Дополнительные сведения см. в разделе "Управление тем, что содержит резервная копия".
Замечание
Хотя веб-развертывание технически позволяет создавать резервные копии почти каждого поставщика, существуют некоторые поставщики, которые не могут быть восстановлены значимым образом из-за характера этих поставщиков. В основном все поставщики, которые являются "только для установки", а не "синхронизация", попадают в эту категорию. Ниже приведен список встроенных поставщиков, которые рекомендуется добавить в параметр ExcludedProviders:
- appHostAuthOverride (переопределение аутентификации хоста приложения)
- appPoolEnable32Bit
- appPoolNetFx
- appPoolPipeline
- createApp
- setAcl
- DBSqlPackage (не установлен по умолчанию с веб-развертыванием, но указан здесь, так как он в настоящее время не поддерживается с функцией резервного копирования).
- backupSettingsProvider — (по умолчанию: все параметры атрибута имеют значение false) Предоставляет системным администраторам контроль над параметрами резервного копирования, которые можно задать администратором веб-сайта. Администраторы веб-сайта могут управлять любым из указанных выше параметров: "enabled", "numberOfBackups", "continueOnBackupFailure" и "excludedProviders" для своего сайта. Это можно сделать, задав свойства "canSetEnabled", "canSetNumberOfBackups" и т. д., как показано в следующем примере.
Полные сведения об этих параметрах и допустимых значениях можно найти в BackupManagerSchema %windir%\system32\inetsrv\config\schema\BackupManagerSchema.xml в системе конфигурации IIS.
Ниже приведен пример конфигурации, в которую можно добавить <system.webServer> (дополнительные сведения см. в полной схеме).
Вам не нужно указывать все приведенные ниже параметры, так как все они имеют параметры по умолчанию, указанные в схеме, но они указаны здесь, чтобы показать в качестве примера.
<wdeploy>
<backup enabled="true"
numberOfBackups="2"
backupPath="{sitePathParent}\{siteName}_siteBackups"
continueSyncOnBackupFailure="false">
<excludedProviders>
<provider name="dbFullSql" />
</excludedProviders>
<backupSettingsProvider
canSetEnabled="true"
canSetNumberOfBackups="true"
canSetContinueSyncOnBackupFailure="true"
canSetExcludedProviders="true" />
</backup>
</wdeploy>
Предположим, что у нас есть сайт с именем foo, который находится под
c:\foo\wwwrootсервером. В приведенной выше конфигурации показано, как выполнить веб-развертывание:
- Включите функцию резервного копирования и сохраняйте не более 2 резервных копий.
- Сохраните каждую резервную копию в папке
c:\foo\foo\_siteBackups. - Сбой публикации, если операция резервного копирования завершается ошибкой по какой-либо причине.
- Исключите резервное копирование баз данных SQL с помощью поставщика dbFullSql.
- Разрешить администраторам веб-сайта использовать провайдер настроек резервного копирования (backupSettingsProvider) для настройки параметров "включено", "количество_резервных_копий", "продолжать_при_ошибке_резервного_копирования" и "исключенные_провайдеры" для своего сайта.
Настройка параметров резервного копирования на сервере для определенных сайтов
Функция автоматического резервного копирования также позволяет задать параметры сайта, указав каждый параметр резервного копирования с помощью <location> тега в файле applicationHost.config. Если параметр не указан в теге расположения, он будет унаследован от параметров сервера. Ниже приведен пример того, как могут выглядеть параметры резервного копирования сайтов:
<location path="siteName">
<system.webServer>
<wdeploy>
<backup enabled="true" numberOfBackups="4">
<excludedProviders>
<clear />
<provider name="dbfullsql" />
</excludedProviders>
</backup>
</wdeploy>
</system.webServer>
</location>
Если вы хотите разрешить администраторам сайта устанавливать собственные параметры сайта, необходимо настроить атрибуты "canSet*" элемента BackupSettingsProvider в параметрах резервного копирования сервера (а не параметры резервного копирования сайта).
Рекомендации по безопасности для автоматического резервного копирования
Сохраняя эти резервные копии на сервере, необходимо убедиться, что у каждого пользователя есть доступ только к собственному содержимому. Web Deploy по умолчанию (во время полной установки) настраивает правило делегирования BackupManager, чтобы убедиться, что он действует от имени пользователя, который выполняет публикацию при создании резервных копий. Это означает, что учетной записи пользователя, выполняющего публикацию, также потребуется иметь права на запись в каталог резервного копирования.
Если вы не хотите использовать удостоверение конечных пользователей для создания их резервных копий, можно просто удалить это правило делегирования, и Web Deploy будет использовать удостоверение службы WMSVC для записи в каталог резервного копирования.
Замечание
- Правила делегирования применяются только для пользователей, не являющихся административными пользователями, подключающимися через WMSvc. Для администраторов (подключение через Web Deploy агент) используется собственная идентификация.
- Если вы хотите вручную настроить правила делегирования, запустите сценарий AddDelegationRules.ps1.
- Функция резервного копирования поставляется с 2 новыми правилами делегирования поставщика (BackupSettings и BackupManager), как показано ниже.
Настройка параметров резервного копирования Site-Level на сервере (для администраторов сайта или сервера)
Администраторы серверов могут делегировать часть управления резервным копированием администраторам сайта. Если это разрешено, администраторы сайта могут настроить поведение резервного копирования для собственных сайтов.
Замечание
msdeploy.exe находится под %programfiles%\IIS\Microsoft Web Deploy V3
Перечисление настроек резервного копирования сайта: Выполните операцию "дампа", передав имя вашего сайта в модуль backupSettings. Флаг -xml также выводит список, является ли параметр записываемым или нет.
msdeploy.exe -verb:dump -source:backupSettings=<siteName> -xml
Настройка параметров резервного копирования: Выполните операцию синхронизации при передаче имени сайта, а также все параметры, которые вы хотите изменить.
msdeploy.exe -verb:sync -source:backupSettings -dest:backupSettings=<siteName>,enabled="True",numberOfBackups=3
Замечание
Администратор сервера должен разрешить делегирование этих параметров перед изменением этих параметров.
Управление поведением при сбое: Вы можете контролировать, будет ли продолжаться процесс публикации в случае сбоя резервного копирования, изменив параметр резервного копирования "continueSyncOnBackupFailure". Если параметр "continueSyncOnBackupFailure" имеет значение false и резервная копия завершается ошибкой, публикация завершится ошибкой, и содержимое сайта или базы данных не будет изменено.
Добавление поставщика в список поставщиков для исключения из резервной копии: Укажите список поставщиков с разделителями с запятой. Параметр addExcludedProviders можно использовать для добавления поставщиков в глобальный список.
msdeploy.exe -verb:sync -source:backupSettings -dest:backupSettings=<siteName>,addExcludedProviders="dbFullSql;dbMySql"
Сброс параметров резервного копирования сайта до настроек сервера по умолчанию: Выполните операцию удаления.
msdeploy.exe -verb:delete -dest:backupSettings=<siteName>
Публикация на сервере Backup-Enabled (для веб-разработчиков)
Автоматическое создание резервного копирования
Когда пользователь публикует на сервер с включенной поддержкой резервного копирования, используя одного из поддерживаемых поставщиков (iisApp, appHostConfig, contentPath), резервная копия будет автоматически создана перед применением любых данных, если только резервная копия не пропускается. Пользователю не требуется предпринимать никаких действий.
Создание резервной копии вручную
Пользователь может вручную принудительно создать резервную копию с помощью поставщика BackupManager, если для публикуемого сайта резервные копии настроены и включены. Существует два метода создания резервной копии вручную.
Указание пути к целевому сайту - Это создаст стандартную резервную копию iisApp вашего целевого сайта.
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=siteNameУказание исходного файла манифеста. Это позволит создать резервную копию нескольких поставщиков (например, iisApp, dbFullSql и т. д.).
msdeploy.exe -verb:sync -source:backupManager=manifest.xml -dest:backupManager=siteName
Пример простого файла манифеста для второго варианта может выглядеть примерно так:
<?xml version="1.0" encoding="utf-8"?>
<m>
<iisApp path="siteName" />
<dbFullSql path="connectionString" />
</m>
Пропуск резервного копирования во время публикации
Если клиент хочет запретить резервное копирование, он может отключить резервные копии на сервере в качестве сохраненного параметра с помощью поставщика backupSettings или отключить правило резервного копирования для каждой отдельной публикации. Вот пример того, как отключить правило резервного копирования от выполнения во время публикации.
msdeploy.exe -verb:sync -source:iisapp=<siteName> -dest:auto,computername=<remoteComputerName> -disablerule:BackupRule
Управление резервными копиями (для администраторов веб-разработчиков или сайтов)
Поставщик BackupManager предлагает клиентам возможность перечислять, восстанавливать и удалять резервные копии. Ниже приведены некоторые примеры того, как это сделать:
Перечисление резервных копий для сайта: Выполните операцию "дамп", чтобы просмотреть все резервные копии сайта.
msdeploy.exe -verb:dump -source:backupManager=<siteName>
Восстановление определенной резервной копии для сайта: Выполняет операцию синхронизации для применения резервной копии
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=<siteName>/<backupFileName>
Восстановите последнюю резервную копию для сайта:
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=<siteName>,useLatest=true
Восстановите последнюю резервную копию сайта, которая также содержит базу данных: Предполагается, что последняя резервная копия также содержит резервную копию базы данных. Параметр соединительной строки провайдера (connectionString) используется для подключения к базе данных, в которую выполняется восстановление, и необходим для восстановления любой резервной копии, связанной с базой данных, если только вы не применяете правило пропуска для исключения восстановления базы данных.
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=<siteName>,useLatest=true,connectionString=<connectionString>
Восстановите последнюю резервную копию сайта без перезаписи App_Data, используя опцию пропуска:
msdeploy.exe -verb:sync -source:backupmanager -dest:backupmanager=<siteName>,uselatst=true -skip:xpath=dirPath[@path='App_Data']
Удаление резервной копии для сайта:
msdeploy.exe -verb:delete -dest:backupManager=<siteName>/<backupFileName>
Известные проблемы и ограничения.
Существует несколько сценариев, в которых веб-развертывание не будет автоматически создавать резервную копию, даже если она включена на сервере:
- Клиент использует более раннюю версию Web Deploy, чем версия 3 RC.
- На сервере не установлена как минимум версия Web Deploy V3 RC.
- Более 1 базы данных указывается в манифесте. Веб-развертывание поддерживает только резервное копирование одной базы данных при каждой публикации.
- Путь используемого вами поставщика не является относительным путем сайта - Поставщик "contentPath" принимает как физические пути к файлам, так и относительные пути сайта. Если указан физический путь, Web Deploy не будет учитывать этого поставщика при инициировании резервного копирования. Поставщик apphostConfig принимает пустой путь. Если указан пустой путь, веб-развертывание не будет выполнять резервное копирование вообще.
- Конфликтующие относительные пути в манифесте - Если в манифесте есть несколько провайдеров, которые имеют конфликтующие относительные пути сайта, то Web Deploy не будет создавать резервную копию. Например, если вы публикуете несколько поставщиков iisApp на разные сайты— один указывает на сайт "foo", а другой указывает на сайт "bar" — веб-развертывание не будет создавать резервную копию.
Другие известные проблемы:
-
Установка Web Deploy V2 нарушает правило делегирования BackupSettings - Если установить версию 2 после версии 3, правило делегирования BackupSettings больше не будет работать, если оно было настроено на использование пользователя WDeployConfigWriter по умолчанию. Чтобы обойти эту проблему, просто запустите скрипт AddDelegationRule.ps1 версии 3 (расположенный под
%programfiles%\IIS\Microsoft Web Deploy\Scripts) из PowerShell.