Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Introduzione
In V3, Distribuzione Web introduce una funzionalità di backup lato server automatica per IIS 7 e versioni successive. Quando i backup automatici vengono configurati nel server e un utente pubblica nel proprio sito usando Distribuzione Web, eseguirà prima di tutto un backup del sito attivo e lo archivierà nel server prima di eseguire il commit delle modifiche nel sito. Se la pubblicazione non è riuscita per qualche motivo o l'utente vuole ripristinare una versione precedente del sito Web, sarà in grado di eseguire il ripristino da questi backup senza coinvolgere un amministratore del server. Questa funzionalità deve essere abilitata e configurata da un amministratore del server prima che un utente finale possa sfruttarlo.
Quando vengono creati i backup
Quando Distribuzione Web rileva che un utente sta pubblicando con un provider contentPath, iisApp o appHostConfig, verrà avviato automaticamente un backup (se abilitato nel server). In molti casi, questi provider sono inclusi anche nelle versioni di pubblicazione con Matrice Web e Visual Studio. Di seguito è riportato un esempio della riga di comando di una sincronizzazione che avvierà un backup in "remoteComputerName" usando l'agente di distribuzione Web.
msdeploy.exe -verb:sync -source:iisapp=<siteName> -dest:auto,computername=<remoteComputerName>
Se il provider di origine è un manifesto, Distribuzione Web esamina tutti i provider nel manifesto per determinare se uno dei provider nel manifesto è un provider contentPath, iisApp o appHostConfig. In caso affermativo, avvierà un backup per TUTTI i provider (vedere la sezione "Problemi noti e limitazioni" per le eccezioni a questo) nel manifesto. Tuttavia, se sono presenti percorsi provider in conflitto (ad esempio, uno punta al sito "foo" mentre l'altro punta al sito "bar"), Web Deploy non eseguirà un backup.
Contenuto di un backup
Per impostazione predefinita, Distribuzione Web userà qualsiasi provider specificato per la pubblicazione (ad eccezione di setAcl che non è mai incluso) per creare il backup. Pertanto, se si pubblica con un provider iisApp e dbFullSql, Web Deploy eseguirà un backup dei provider iisApp e dbFullSql sul server. Questo includerà tutto il contenuto e la configurazione appartenenti all'applicazione Web insieme allo script di database che può essere usato per ripubblicare l'applicazione Web. È possibile modificare questo comportamento predefinito modificando l'impostazione di backup ExcludedProviders o specificando le regole skip prima di eseguire una pubblicazione.
Questi backup sono pacchetti di distribuzione Web validi che possono essere copiati e usati con Distribuzione Web in qualsiasi server IIS compatibile.
Configurazione della funzionalità di backup automatico nel server (per gli amministratori del server)
Per fornire la funzionalità di backup automatico agli utenti, un amministratore del server deve effettuare il provisioning dello spazio nel server in cui è possibile archiviare questi backup. Questo spazio può trovarsi fisicamente nel server o può trovarsi in una condivisione di rete accessibile dal server.
La quantità di spazio necessaria dipende dalla quantità di applicazioni singole e dal numero di backup che si prevede di archiviare nel server. Se si desidera controllare lo spazio eseguito dai backup, è consigliabile creare una cartella separata per ogni sito e usare Gestione risorse file server di Windows (FSRM) per limitare le quote di singole cartelle. Come procedura consigliata per la sicurezza, è necessario anche ACL queste cartelle in modo che ogni utente abbia accesso in lettura/scrittura solo alla cartella.
I backup possono essere abilitati a livello globale nel server in modo che tutti i siti possano sfruttarli o configurarli in base al sito.
Configurazione automatica delle impostazioni di backup nel server per l'utilizzo globale tramite PowerShell
Lo script di PowerShell per configurare la funzionalità di backup a livello di server è disponibile in %programfiles%\IIS\Microsoft Web Deploy V3\scripts\BackupScripts.ps1. Per caricarlo, è sufficiente passare a tale directory in PowerShell ed eseguire:
. .\BackupScripts.ps1
Verranno caricate le funzioni seguenti nella sessione che è possibile usare per configurare i backup.
- TurnOn-Backups: attiva/disattiva i backup per l'intero server.
- Configure-Backups: imposta le impostazioni di backup predefinite o specifiche del sito.
- Configure-BackupSettingsProvider: controlla le impostazioni del server per quanto controllo avrà un amministratore del sito sul comportamento di backup.
- Get-BackupSettings: esegue query sul server o sulle impostazioni di backup specifiche del sito
- Reset-BackupSettings: reimposta le impostazioni di backup specifiche del server o del sito
Funzione TurnOn-Backups:
Consente a un amministratore del server di attivare o disattivare i backup in un ambito SERVER , senza sovrascrivere impostazioni specifiche del sito. Per impostazione predefinita, i backup vengono disattivati. Anche dopo aver attivato i backup, i backup devono essere ancora "abilitati" a livello di server o sito per poter eseguire i backup.
# Turns on all backup functionality
TurnOn-Backups -On $true
# Turns off all backup functionality
TurnOn-Backups -On $false
Configurazione dei backup:
Consente a un amministratore del server di configurare il comportamento di backup predefinito nell'ambito specifico SERVER o SITE . Se un amministratore specifica un'impostazione nell'ambito del server e un sito ha già specificato un'impostazione specifica del sito, Distribuzione Web preferisce le impostazioni specifiche del sito rispetto alle impostazioni del server. Se un amministratore del server desidera che le impostazioni del server prendano la preferenza, deve reimpostare le impostazioni di backup del sito, in modo che il sito erediti automaticamente le impostazioni dal server.
# 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:
Gli amministratori del sito possono modificare le impostazioni di backup specifiche del sito usando BackupSettingsProvider con Distribuzione Web. Questa funzione consente a un amministratore del server di controllare esattamente le impostazioni che un amministratore del sito può configurare.
# 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
Interroga il server o le impostazioni di backup specifiche di un sito.
# Grabs the global default backup settings
Get-BackupSettings
# Grabs a sites-specific backup settings
Get-BackupSettings -SiteName "foo"
Reset-BackupSettings
Reimposta le impostazioni di backup del server o di un sito. Se si reimpostano le impostazioni di backup dei siti, erediterà automaticamente dalle impostazioni di backup dei server.
# Resets the global default backup settings
Reset-BackupSettings
# Resets a sites backup settings
Reset-BackupSettings -SiteName "foo"
Configurazione manuale delle impostazioni di backup nel server per l'utilizzo globale in Configurazione IIS
Impostazioni di backup globale
Le impostazioni di backup globali seguenti possono essere configurate direttamente nel sistema di configurazione IIS in %windir%\system32\inetsrv\config\applicationhost.config.
enabled - (Impostazione predefinita = "false") Controlla se i backup sono attivati o meno.
backupPath : (valore predefinito = "{sitePathParent}{siteName}_snapshots") in cui verrà archiviato un backup nel server. Inoltre, aggiorna le variabili di sostituzione del percorso per "{sitePathParent}" e "{siteName}" determinate in fase di esecuzione.
- sitePathParent: il percorso fisico del file padre dei contenuti del sito. Ad esempio, se l'applicazione del sito si trova in
c:\inetpub\wwwroot\siteName, sitePathParent saràc:\inetpub\wwwroot\. - siteName: nome del sito.
- sitePathParent: il percorso fisico del file padre dei contenuti del sito. Ad esempio, se l'applicazione del sito si trova in
Esempio: lo schema predefinito imposta questo percorso su "{sitePathParent}{siteName}_snapshots" in modo che ogni backup venga inserito in una cartella di pari livello del contenuto del sito anziché all'interno di esso.
AVVISO: Assicurarsi che il backupPath non si trovi nel percorso dei contenuti del sito altrimenti i backup verranno eliminati a ogni pubblicazione.
- numberOfBackups - (valore predefinito = "4") Numero di backup per sito che verranno archiviati nel server. Quando è stato creato il numero massimo di backup, il backup meno recente verrà eliminato.
- continueSyncOnBackupFailure - (impostazione predefinita = "true") Consente agli utenti di non eseguire una sincronizzazione o di continuare una sincronizzazione se un backup non viene completato per qualsiasi motivo.
- excludedProviders- (Impostazione predefinita = Set vuoto) Elenco di provider di distribuzione Web da escludere sempre da un backup. Ad esempio, se i backup del database vengono gestiti separatamente nell'ambiente in uso, usare questa impostazione per escludere i backup del database come parte del Web Deploy backups escludendo dbFullSQLProvider Per altri dettagli, vedere la sezione "Controllo degli elementi contenuti in un backup"
Annotazioni
Sebbene Distribuzione Web consenta tecnicamente di eseguire il backup di quasi tutti i provider, esistono alcuni provider che non possono essere ripristinati in modo significativo a causa della natura di tali provider. Fondamentalmente, tutti i provider "set-only" e non i provider di "sincronizzazione" rientrano in questa categoria. Di seguito è riportato un elenco di provider predefiniti che è consigliabile aggiungere all'impostazione ExcludedProviders:
- appHostAuthOverride
- appPoolEnable32Bit
- appPoolNetFx
- appPoolPipeline
- creaApp
- setAcl
- DBSqlPackage (non installato per impostazione predefinita con distribuzione Web, ma è elencato qui perché non è attualmente supportato con la funzionalità di backup)
- backupSettingsProvider : (impostazione predefinita: tutte le impostazioni degli attributi sono "false") Consente a un amministratore di sistema di controllare quali impostazioni di backup possono essere impostate da un amministratore del sito Web. È possibile consentire agli amministratori del sito Web di controllare una delle impostazioni precedenti "enabled", "numberOfBackups", "continueOnBackupFailure" e "excludedProviders" per il proprio sito. Questa operazione può essere eseguita impostando le proprietà "canSetEnabled", "canSetNumberOfBackups" e così via su true come specificato nell'esempio seguente.
I dettagli completi su queste impostazioni e i valori consentiti sono disponibili in BackupManagerSchema %windir%\system32\inetsrv\config\schema\BackupManagerSchema.xml nel sistema di configurazione IIS.
Di seguito è riportata una configurazione di esempio che può essere aggiunta in <system.webServer> (vedere lo schema completo per altri dettagli).
Non è necessario specificare tutte le impostazioni seguenti perché tutte hanno impostazioni predefinite specificate nello schema, ma vengono specificate qui per essere visualizzate come esempio.
<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>
Diciamo che abbiamo un sito denominato "foo" che si trova sotto
c:\foo\wwwrootsul server. La configurazione precedente indica a Distribuzione Web di:
- Attivare la funzionalità BackupKeep un massimo di 2 backup.
- Archiviare ogni backup in una cartella in
c:\foo\foo\_siteBackups. - Non eseguire una pubblicazione se un'operazione di backup non riesce per qualsiasi motivo.
- Escludere il backup di database SQL con il provider dbFullSql.
- Consentire agli amministratori del sito Web di usare backupSettingsProvider per configurare le impostazioni "enabled", "numberOfBackups", "continueOnBackupFailure" e "excludedProviders" per il proprio sito.
Configurazione delle impostazioni di backup nel server per siti specifici
La funzionalità di backup automatico consente anche di impostare impostazioni specifiche del sito specificando ogni impostazione di backup usando un <location> tag nel file applicationHost.config. Se non viene specificata un'impostazione nel tag di percorso, verrà ereditata dalle impostazioni del server. Di seguito è riportato un esempio dell'aspetto delle impostazioni di backup dei siti:
<location path="siteName">
<system.webServer>
<wdeploy>
<backup enabled="true" numberOfBackups="4">
<excludedProviders>
<clear />
<provider name="dbfullsql" />
</excludedProviders>
</backup>
</wdeploy>
</system.webServer>
</location>
Se si desidera consentire agli amministratori del sito di poter impostare impostazioni specifiche del sito, è necessario configurare gli attributi "canSet*" dell'elemento BackupSettingsProvider nelle impostazioni di backup del server (non le impostazioni di backup del sito).
Considerazioni sulla sicurezza per i backup automatici
Durante l'archiviazione di questi backup nel server, è necessario assicurarsi che ogni utente abbia accesso solo al proprio contenuto. Distribuzione Web per impostazione predefinita (durante un'installazione completa) configura la regola di delega di BackupManager per assicurarsi che venga mascherato da utente che sta pubblicando durante la creazione dei backup. Questo implica che anche l'account utente di pubblicazione dovrà disporre dei privilegi di scrittura per poter eseguire azioni nella directory di backup.
Se non si vuole usare l'identità degli utenti finali per creare i backup, è sufficiente eliminare questa regola di delega e Distribuzione Web userà l'identità del servizio WMSVC per scrivere nella directory di backup.
Annotazioni
- Le regole di delega si applicano solo agli utenti non amministratori che si connettono tramite WMSvc. Per gli amministratori (connessione tramite l'agente di distribuzione Web), viene usata la propria identità.
- Per configurare manualmente le regole di delega, eseguire lo script di AddDelegationRules.ps1.
- La funzionalità Backup include 2 nuove regole di delega del provider (BackupSettings e BackupManager), come illustrato di seguito.
Configurazione delle impostazioni di backup Site-Level nel server (per amministratori del sito/server)
Gli amministratori del server possono scegliere di delegare alcune responsabilità di amministrazione del backup agli amministratori del sito. Se consentito, gli amministratori del sito possono configurare il comportamento di backup per i propri siti.
Annotazioni
msdeploy.exe si trova in %programfiles%\IIS\Microsoft Web Deploy V3
Elenco delle impostazioni di backup del sito: Eseguire un'operazione di "dump" passando il nome del sito nel provider backupSettings. Il flag -xml indica anche se l'impostazione è scrivibile o meno.
msdeploy.exe -verb:dump -source:backupSettings=<siteName> -xml
Configurare le impostazioni di backup: Eseguire un'operazione di "sincronizzazione" passando il nome del sito, oltre a tutte le impostazioni che si desidera modificare.
msdeploy.exe -verb:sync -source:backupSettings -dest:backupSettings=<siteName>,enabled="True",numberOfBackups=3
Annotazioni
Prima di poter modificare queste impostazioni, l'amministratore del server deve consentire la delega di queste impostazioni.
Controllo del comportamento di errore: È possibile controllare il comportamento di se si desidera che la pubblicazione continui o meno in caso di errore di backup modificando l'impostazione di backup "continueSyncOnBackupFailure". Se "continueSyncOnBackupFailure" è impostato su false e un backup ha esito negativo, la pubblicazione avrà esito negativo e non verrà modificato alcun contenuto o database del sito.
Aggiunta di un provider all'elenco di provider da escludere da un backup: Specificare un elenco di provider delimitato da punto e virgola. È possibile usare l'opzione addExcludedProviders per aggiungere provider all'elenco globale.
msdeploy.exe -verb:sync -source:backupSettings -dest:backupSettings=<siteName>,addExcludedProviders="dbFullSql;dbMySql"
Reimpostare le impostazioni di backup del sito sulle impostazioni predefinite del server: Eseguire un'operazione di eliminazione.
msdeploy.exe -verb:delete -dest:backupSettings=<siteName>
Pubblicazione in un server Backup-Enabled (per sviluppatori Web)
Creazione automatica del backup
Quando un utente pubblica in un server abilitato per il backup usando uno dei provider supportati (iisApp, appHostConfig, contentPath), un backup verrà eseguito automaticamente prima dell'applicazione di tutti i dati, purché il backup non venga ignorato. Non è richiesta alcuna azione specifica nella parte dell'utente finale.
Creazione manuale di un backup
Un utente può forzare manualmente la creazione di un backup usando il provider BackupManager, purché i backup siano configurati e abilitati per il sito in cui viene pubblicato. Esistono due metodi per creare un backup manuale.
Specificare il percorso del sito di destinazione: verrà eseguito un semplice backup `iisApp` del sito di destinazione.
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=siteNameSpecifica di un file manifesto di origine: in questo modo sarà possibile eseguire un backup di più provider ,ad esempio iisApp, dbFullSql e così via.
msdeploy.exe -verb:sync -source:backupManager=manifest.xml -dest:backupManager=siteName
Un esempio di file manifesto semplice per la seconda opzione potrebbe essere simile al seguente:
<?xml version="1.0" encoding="utf-8"?>
<m>
<iisApp path="siteName" />
<dbFullSql path="connectionString" />
</m>
Ignorare il backup durante la pubblicazione
Se un client vuole impedire l'esecuzione di un backup, può disabilitare i backup nel server come impostazione persistente usando il provider backupSettings oppure disabilitare l'esecuzione della regola di backup nel server per ogni singola pubblicazione. Di seguito è riportato un esempio di come disabilitare l'esecuzione della regola di backup durante una pubblicazione:
msdeploy.exe -verb:sync -source:iisapp=<siteName> -dest:auto,computername=<remoteComputerName> -disablerule:BackupRule
Gestione dei backup (per sviluppatori Web/amministratori del sito)
Il provider BackupManager offre ai client la possibilità di elencare, ripristinare ed eliminare i backup. Ecco alcuni esempi di come viene eseguita questa operazione:
Elenco dei backup per un sito: Eseguire un'operazione di "dump" per visualizzare tutti i backup per un sito
msdeploy.exe -verb:dump -source:backupManager=<siteName>
Ripristino di un backup specifico per un sito: Esegue un'operazione di "sincronizzazione" per applicare un backup
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=<siteName>/<backupFileName>
Ripristinare il backup più recente per un sito:
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=<siteName>,useLatest=true
Ripristinare il backup più recente per un sito che contiene anche un database: Si supponga che il backup più recente contenga anche un backup del database. L'impostazione del provider connectionString viene usata per connettersi al database in cui si esegue il ripristino ed è necessaria per il ripristino di qualsiasi backup con un database, a meno che non si applichi una regola skip per ignorare il ripristino del database.
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=<siteName>,useLatest=true,connectionString=<connectionString>
Ripristinare il backup più recente per un sito senza sovrascrivere App_Data usando Skips:
msdeploy.exe -verb:sync -source:backupmanager -dest:backupmanager=<siteName>,uselatst=true -skip:xpath=dirPath[@path='App_Data']
Eliminare un backup per un sito:
msdeploy.exe -verb:delete -dest:backupManager=<siteName>/<backupFileName>
Problemi noti e limitazioni-
Esistono diversi scenari in cui Distribuzione Web non eseguirà automaticamente un backup anche se è abilitato nel server:
- Il client sta pubblicando usando una versione precedente di Distribuzione Web rispetto a V3 RC.
- Il server non dispone almeno di Distribuzione Web V3 RC installata.
- Più di 1 database viene specificato in un manifesto : Distribuzione Web supporta solo l'esecuzione di un backup di un singolo database per ogni pubblicazione.
- Il percorso del provider in uso non è un percorso del sito relativo: Il provider contentPath accetta percorsi di file fisici e percorsi del sito relativi. Se viene specificato un percorso fisico, Distribuzione Web non conteggierà tale provider per avviare il backup. Il provider apphostConfig accetta un percorso vuoto. Se viene specificato un percorso vuoto, Distribuzione Web non eseguirà affatto un backup.
- Percorsi relativi in conflitto in un manifesto : se in un manifesto sono presenti più provider con percorsi di sito relativi in conflitto, Distribuzione Web non eseguirà un backup. Ad esempio, se si pubblica con più provider iisApp su siti diversi, uno che punta al sito "foo" mentre l'altro al sito "bar", Web Deploy non eseguirà un backup.
Altri problemi noti:
-
Installando Web Deploy V2 interrompe la regola di delega BackupSettings: se si installa V2 dopo la versione V3, la regola di delega BackupSettings non funzionerà più se è stata configurata per l'esecuzione con l'utente predefinito WDeployConfigWriter. Per risolvere questo problema, eseguire semplicemente lo script V3 AddDelegationRule.ps1 (disponibile in
%programfiles%\IIS\Microsoft Web Deploy\Scripts) da PowerShell.