Scelta dell'approccio corretto per la distribuzione Web

di Jason Lee

Quando si usa lo strumento di distribuzione Web IIS (Internet Information Services) (Distribuzione Web) 2.0 o successiva, esistono tre approcci principali che è possibile usare per ottenere le applicazioni Web in pacchetto in un server Web. È possibile:

  • Distribuire l'applicazione da una posizione remota specificando come destinazione il servizio web Deployment Agent (noto anche come "agente remoto") nel server di destinazione.
  • Distribuire l'applicazione da un percorso remoto usando Distribuzione Web su richiesta (noto anche come "agente temporaneo").
  • Distribuire l'applicazione da una posizione remota specificando come destinazione il gestore distribuzione Web IIS nel server di destinazione.
  • Distribuire l'applicazione copiando manualmente il pacchetto Web nel server di destinazione e importandolo tramite Gestione IIS.

La modalità di configurazione dei server Web di destinazione dipenderà dall'approccio alla distribuzione che si vuole usare. Questo argomento consente di decidere quale approccio alla distribuzione è adatto.

Questa tabella illustra i principali vantaggi e svantaggi di ogni approccio alla distribuzione, insieme agli scenari più adatti a ogni approccio.

Approccio Vantaggi Svantaggi Scenari tipici
Agente remoto È facile da configurare. È adatto per gli aggiornamenti regolari alle applicazioni Web e al contenuto. L'utente deve essere un amministratore nel server di destinazione. l'utente non può fornire credenziali alternative. Ambienti di sviluppo. Ambienti di test.
Agente temporaneo Non è necessario installare Distribuzione Web nel computer di destinazione. Viene usata automaticamente la versione più recente di Distribuzione Web. L'utente deve essere un amministratore nel server di destinazione. L'utente non può fornire credenziali alternative. Ambienti di sviluppo. Ambienti di test.
Gestore distribuzione Web Gli utenti non amministratori possono distribuire il contenuto. È adatto per gli aggiornamenti regolari alle applicazioni Web e al contenuto. È molto più complessa da configurare. Ambienti di gestione temporanea. Ambienti di produzione Intranet. Ambienti ospitati.
Distribuzione offline È molto facile da configurare. È adatto per ambienti isolati. L'amministratore del server deve copiare e importare manualmente il pacchetto Web ogni volta. Ambienti di produzione con connessione Internet. Ambienti di rete isolati.

Uso dell'agente remoto

Quando si installa Distribuzione Web usando le impostazioni predefinite in un server di destinazione, il servizio web Deployment Agent (l'agente remoto) viene installato e avviato automaticamente. Per impostazione predefinita, l'agente remoto espone un endpoint HTTP in questo indirizzo:

http://[server]/MSDEPLOYAGENTSERVICE

Nota

È possibile sostituire [server] con il nome del computer del server Web, un indirizzo IP per il server Web o un nome host che viene risolto nel server Web.

Gli amministratori del server possono distribuire pacchetti Web da una posizione remota, ad esempio un computer per sviluppatori o un server di compilazione, specificando questo indirizzo endpoint. Si supponga, ad esempio, che Matt Hink in Fabrikam, Inc. abbia creato il progetto di applicazione Web ContactManager.Mvc nel computer per sviluppatori. Il processo di compilazione genera un pacchetto Web, insieme a un file con estensione deploy.cmd contenente i comandi Distribuzione Web necessari per installare il pacchetto. Se Matt è un amministratore del server nel server TESTWEB1, può distribuire l'applicazione Web nel server Web di test eseguendo questo comando nel computer per sviluppatori:

ContactManager.Mvc.deploy.cmd /y /m:http://TESTWEB1/MSDEPLOYAGENTSERVICE a/:NTLM

In realtà, l'eseguibile Distribuzione Web può dedurre l'indirizzo endpoint dell'agente remoto se si specifica il nome del computer, quindi Matt deve solo digitare quanto segue:

ContactManager.Mvc.deploy.cmd /y /m:TESTWEB1 /a:NTLM

Nota

Per altre informazioni sulla sintassi della riga di comando di Distribuzione Web e sui file con estensione deploy.cmd , vedere Procedura: Installare un pacchetto di distribuzione usando il file deploy.cmd.

L'agente remoto offre un modo semplice per distribuire il contenuto da una posizione remota e questo approccio può funzionare bene con una distribuzione automatica o con un solo clic. Tuttavia, l'utente che esegue il comando di distribuzione deve anche essere un amministratore di dominio o un membro del gruppo administrators locale nel server di destinazione. Inoltre, l'agente remoto non supporta l'autenticazione di base, quindi non è possibile passare credenziali alternative nella riga di comando.

L'agente remoto offre un approccio utile alla distribuzione in scenari di sviluppo o test, in cui non è raro che gli sviluppatori abbiano il controllo completo dell'amministratore su un ambiente server di test e le applicazioni vengono in genere ricompilate e ridistribuite molto frequentemente. Tuttavia, questo approccio è in genere meno accettabile per gli ambienti di gestione temporanea o di produzione.

Per un esempio end-to-end di uno scenario che usa l'approccio dell'agente remoto, vedere Scenario: Configurazione di un ambiente di test per la distribuzione Web.

Uso dell'agente temporaneo

L'approccio dell'agente temporaneo alla distribuzione è simile all'approccio dell'agente remoto. Tuttavia, a differenza dell'approccio dell'agente remoto, non è necessario installare Distribuzione Web nel server Web di destinazione. Al contrario, quando si esegue la distribuzione, Distribuzione Web installerà una versione temporanea del servizio agente di distribuzione Web nel server di destinazione e la userà per distribuire il contenuto in IIS. Al termine della distribuzione, tutti i file temporanei vengono rimossi.

Se si vuole usare l'impostazione del provider dell'agente temporaneo, aggiungere il flag /g al comando di distribuzione:

ContactManager.Mvc.deploy.cmd /y /m:TESTWEB1 /g:true

Nota

Non è possibile usare l'agente temporaneo se il servizio agente di distribuzione Web è installato nel computer di destinazione, anche se il servizio non è in esecuzione.

Il vantaggio di questo approccio è che non è necessario gestire le installazioni di Distribuzione Web nei server di destinazione. Inoltre, non è necessario assicurarsi che i computer di origine e di destinazione eseguano la stessa versione di Distribuzione Web. Tuttavia, questo approccio presenta le stesse limitazioni principali dell'approccio dell'agente remoto, vale a dire che è necessario essere un amministratore locale nel server di destinazione per distribuire il contenuto e solo l'autenticazione NTLM è supportata. L'approccio dell'agente temporaneo richiede anche una configurazione iniziale molto più elevata dell'ambiente di destinazione.

Per altre informazioni sull'uso dell'agente temporaneo, vedere Procedura: Installare un pacchetto di distribuzione usando il file deploy.cmd e distribuzione Web su richiesta.

Uso del gestore distribuzione Web

Per IIS 7 e versioni successive, Distribuzione Web offre un approccio di distribuzione alternativo tramite il gestore distribuzione Web IIS. Il gestore distribuzione Web è strettamente integrato con il servizio gestione Web IIS (WMSvc), progettato per consentire agli utenti di gestire i siti Web IIS da posizioni remote.

Per impostazione predefinita, l'agente remoto espone un endpoint HTTP in questo indirizzo:

https://[server]:8172/MSDeploy.axd

Nota

È possibile sostituire [server] con il nome del computer del server Web, un indirizzo IP per il server Web o un nome host che viene risolto nel server Web.

Il grande vantaggio del gestore distribuzione Web rispetto all'agente remoto e all'agente temporaneo consiste nel fatto che è possibile configurare IIS per consentire agli utenti non amministratori di distribuire applicazioni e contenuti in siti Web IIS specifici. Il gestore distribuzione Web supporta anche l'autenticazione di base, in modo da poter fornire credenziali alternative come parametri nei comandi distribuzione Web. Lo svantaggio principale è che il gestore distribuzione Web è inizialmente molto più complicato da configurare e configurare.

Nel caso di utenti non amministratori, il servizio gestione Web (WMSvc) consentirà solo all'utente di connettersi a IIS usando una connessione a livello di sito, anziché una connessione a livello di server. Per accedere a un sito specifico, è possibile includere una stringa di query specifica del sito nell'indirizzo dell'endpoint:

https://[server]:8172/MSDeploy.axd?site=DemoSite

Suggerimento, ad esempio, si supponga che un processo di compilazione sia configurato per distribuire automaticamente un'applicazione Web in un ambiente di gestione temporanea dopo ogni compilazione completata. Se è stato usato l'approccio dell'agente remoto, è necessario rendere l'identità del processo di compilazione un amministratore nei server di destinazione. Al contrario, usando l'approccio gestore distribuzione Web è possibile concedere a un utente non amministratore, FABRIKAM\stagingdeployer in questo caso, l'autorizzazione solo per un sito Web IIS specifico e il processo di compilazione può fornire queste credenziali per distribuire il pacchetto Web. Si noti che l'esempio seguente usa %ContactManagerPublishPassword%, che esegue il pull del valore della password da una variabile di ambiente. Per eseguire correttamente lo script, %ContactManagerPublishPassword% la variabile deve essere definita con il valore corretto.

msdeploy.exe 
  -source:package='…\ContactManager.Mvc.zip' 
  -dest:auto,
        computerName='https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite',
        userName='FABRIKAM\stagingdeployer',
        password=%ContactManagerPublishPassword%,
        authtype='Basic', 
  -verb:sync 
  -setParamFile:"…\ContactManager.Mvc.SetParameters.xml"   
  -allowUntrusted

Nota

Per altre informazioni sulle operazioni e la sintassi della riga di comando di Distribuzione Web, vedere Guida di riferimento alla riga di comando di Distribuzione Web. Per altre informazioni sull'uso del file con estensione deploy.cmd , vedere Procedura: Installare un pacchetto di distribuzione usando il file deploy.cmd.

Il gestore distribuzione Web offre un approccio utile alla distribuzione in ambienti di gestione temporanea, ambienti ospitati e ambienti di produzione basati su Intranet, in cui l'accesso remoto al server è disponibile, ma le credenziali di amministratore non sono.

Per un esempio end-to-end di uno scenario che usa l'approccio del gestore distribuzione Web, vedere Scenario: Configurazione di un ambiente di gestione temporanea per la distribuzione Web.

Uso della distribuzione offline

In alcuni casi, non è possibile o pratico distribuire applicazioni e contenuto in un sito Web IIS da una posizione remota. Ad esempio, i computer di origine e di destinazione possono trovarsi in reti isolate o segmenti di rete oppure i criteri del firewall potrebbero non consentire l'accesso remoto.

In scenari come questi, è comunque possibile usare le funzionalità di creazione di pacchetti e pubblicazione di Distribuzione Web; non è possibile usarli solo da una posizione remota. Al contrario, un amministratore nel server di destinazione deve copiare il pacchetto Web nel server e importarlo tramite Gestione IIS.

Al contrario, un amministratore nel server di destinazione deve copiare il pacchetto Web nel server e importarlo tramite Gestione IIS.

L'approccio alla distribuzione offline è in genere utile negli ambienti di produzione con connessione Internet, in cui i server in una rete perimetrale possono avere una connettività limitata con i computer nella rete interna.

Per un esempio end-to-end di uno scenario che usa l'approccio alla distribuzione offline, vedere Scenario: Configurazione di un ambiente di produzione per la distribuzione Web.

Altre informazioni

Per altre informazioni sulle operazioni e la sintassi della riga di comando di Distribuzione Web, vedere Guida di riferimento alla riga di comando di Distribuzione Web. Per altre informazioni sull'uso del file con estensione deploy.cmd , vedere Procedura: Installare un pacchetto di distribuzione usando il file deploy.cmd.

Per indicazioni più generali sui diversi modi in cui è possibile distribuire pacchetti Web da un computer remoto, vedere Using Web Deploy Remotely .For more general guidance on the different ways in which you can deploy Web packages from a remote computer, see Using Web Deploy Remotely. Per altre informazioni sull'uso di Distribuzione Web su richiesta, vedere Distribuzione Web su richiesta.