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.
di Jason Lee
In questo argomento viene descritto come configurare proprietà specifiche dell'ambiente per distribuire la soluzione Contact Manager di esempio in un ambiente di destinazione specifico.
Questo argomento fa parte di una serie di esercitazioni basate sui requisiti di distribuzione aziendali di una società fittizia denominata Fabrikam, Inc. Questa serie di esercitazioni usa una soluzione di esempio, la soluzione Contact Manager , per rappresentare un'applicazione Web con un livello realistico di complessità, tra cui un'applicazione ASP.NET MVC 3, un servizio Windows Communication Foundation (WCF) e un progetto di database.
Il metodo di distribuzione al centro di queste esercitazioni si basa sull'approccio split project file descritto in Informazioni sul processo di compilazione, in cui il processo di compilazione è controllato da due file di progetto, uno contenente istruzioni di compilazione applicabili a ogni ambiente di destinazione e uno contenente le impostazioni di compilazione e distribuzione specifiche dell'ambiente. In fase di compilazione, il file di progetto specifico dell'ambiente viene unito al file di progetto indipendente dall'ambiente per formare un set completo di istruzioni di compilazione.
Panoramica del processo
Il file di progetto che verrà usato per compilare e distribuire la soluzione Contact Manager è suddiviso in due file fisici:
- Uno che contiene le impostazioni di compilazione universali e le istruzioni (il file Publish.proj ).
- Uno che contiene impostazioni di compilazione specifiche dell'ambiente (Env-Dev.proj, Env-Stage.proj e così via).
In fase di compilazione, il file di progetto specifico dell'ambiente appropriato viene unito nel file Publish.proj universale per formare un set completo di istruzioni di compilazione. È possibile configurare la distribuzione in ambienti di destinazione specifici creando o personalizzando file di progetto specifici dell'ambiente con impostazioni che descrivono lo scenario di distribuzione.
Molti di questi valori sono determinati dal modo in cui è configurato l'ambiente di destinazione, in particolare se il server Web di destinazione è configurato per l'uso del servizio agente di distribuzione Web (l'agente remoto) o del gestore distribuzione Web. Per altre informazioni su questi approcci e per indicazioni sulla scelta dell'approccio appropriato per il proprio ambiente, vedere Scelta dell'approccio appropriato alla distribuzione Web.
Lo scenario contact manager richiede due file di progetto specifici dell'ambiente:
- Distribuzione in un ambiente di test per sviluppatori (Env-Dev.proj). L'ambiente di test per sviluppatori è configurato per accettare distribuzioni remote usando l'agente remoto, come descritto in Scenario: Configurazione di un ambiente di test per la distribuzione Web. Questo file deve fornire l'indirizzo dell'endpoint dell'agente remoto e impostazioni specifiche della posizione, ad esempio stringhe di connessione ed endpoint di servizio.
- Distribuzione in un ambiente di staging (Env-Stage.proj). L'ambiente di gestione temporanea è configurato per accettare distribuzioni remote usando il gestore distribuzione Web, come descritto in Scenario: Configurazione di un ambiente di gestione temporanea per la distribuzione Web. Questo file deve fornire l'indirizzo endpoint del gestore distribuzione Web e le impostazioni specifiche della posizione, ad esempio stringhe di connessione ed endpoint di servizio.
È importante notare che le impostazioni configurate nel file di progetto specifico dell'ambiente non influiscono sul contenuto del pacchetto Web stesso, ma controllano la modalità di distribuzione del pacchetto e i valori dei parametri forniti quando il pacchetto viene estratto. Si sta importando manualmente il pacchetto Web nell'ambiente di produzione, come descritto in Scenario: Configurazione di un ambiente di produzione per la distribuzione Web e Installazione manuale di pacchetti Web, quindi non importa quali impostazioni sono state usate nel file di progetto specifico dell'ambiente quando è stato generato il pacchetto. Gestione Internet Information Services (IIS) richiederà eventuali valori con parametri, ad esempio stringhe di connessione ed endpoint di servizio, quando si importa il pacchetto.
Per distribuire la soluzione Contact Manager nel proprio ambiente di destinazione, è possibile personalizzare questo file o usarlo come modello e creare un file personalizzato.
Per configurare le impostazioni di distribuzione specifiche dell'ambiente per la soluzione Contact Manager
Aprire la soluzione ContactManager-WCF in Visual Studio 2010.
Nella finestra Esplora soluzioni espandere la cartella Pubblica , espandere la cartella EnvConfig e quindi fare doppio clic su Env-Dev.proj.
Sostituire i valori delle proprietà nel file Env-Dev.proj con i valori corretti per il proprio ambiente di test.
Annotazioni
La tabella che segue questa procedura fornisce altre informazioni su ognuna di queste proprietà.
Salvare il lavoro e quindi chiudere il file Env-Dev.proj .
Scelta delle proprietà di distribuzione appropriate
Questa tabella descrive lo scopo di ogni proprietà nel file di progetto specifico dell'ambiente di esempio, Env-Dev.proj e fornisce alcune indicazioni sui valori da fornire.
Nome della proprietà | Dettagli |
---|---|
MSDeployComputerName Nome del server Web o dell'endpoint di servizio di destinazione. | Se si esegue la distribuzione nel servizio agente remoto nel server Web di destinazione, è possibile specificare il nome del computer di destinazione, ad esempio TESTWEB1 o TESTWEB1.fabrikam.net, oppure specificare l'endpoint dell'agente remoto , ad esempio http://TESTWEB1/MSDEPLOYAGENTSERVICE . La distribuzione funziona allo stesso modo in tutti i casi. Se si esegue la distribuzione nel gestore distribuzione Web nel server Web di destinazione, è necessario specificare l'endpoint del servizio e includere il nome del sito Web IIS come parametro della stringa di query , ad esempio https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite . |
MSDeployAuth Il metodo che Web Deploy deve usare per autenticarsi sul computer remoto. | Deve essere impostato su NTLM o Basic. In genere, si userà NTLM se si esegue la distribuzione nel servizio agente remoto e Basic se si esegue la distribuzione nel gestore distribuzione Web. Se si usa l'autenticazione di base, è necessario specificare anche il nome utente e la password che IIS Web Deployment Tool (Strumento di distribuzione Web) deve impersonare per eseguire la distribuzione. In questo esempio questi valori vengono forniti tramite le proprietà MSDeployUsername e MSDeployPassword . Se si usa l'autenticazione NTLM, è possibile omettere queste proprietà o lasciarle vuote. |
MSDeployUsername Se si usa l'autenticazione di base, Distribuzione Web userà questo account nel computer remoto. | Il formato deve essere DOMAIN*username* (ad esempio , FABRIKAM\matt). Questo valore viene usato solo se si specifica l'autenticazione di base. Se si utilizza l'autenticazione NTLM, la proprietà può essere omessa. Se viene specificato un valore, verrà ignorato. |
MSDeployPassword Se si usa l'autenticazione di base, Distribuzione Web userà questa password nel computer remoto. | Si tratta della password per l'account utente specificato nella proprietà MSDeployUsername . Questo valore viene usato solo se si specifica l'autenticazione di base. Se si utilizza l'autenticazione NTLM, la proprietà può essere omessa. Se viene specificato un valore, verrà ignorato. |
ContactManagerIisPath Percorso IIS in cui si vuole distribuire l'applicazione MVC Contact Manager. | Deve trattarsi del percorso visualizzato in Gestione IIS, nel formato [nome sito Web IIS]/[nome applicazioneWeb]. Tenere presente che il sito Web IIS deve esistere prima di distribuire l'applicazione. Ad esempio, se è stato creato un sito Web IIS denominato DemoSite, è possibile specificare il percorso IIS per l'applicazione MVC come DemoSite/ContactManager. |
ContactManagerServiceIisPath Percorso IIS in cui si vuole distribuire il servizio WCF contact manager. | Ad esempio, se è stato creato un sito Web IIS denominato DemoSite, è possibile specificare il percorso IIS per il servizio WCF come DemoSite/ContactManagerService. |
ContactManagerTargetUrl URL in corrispondenza del quale è possibile raggiungere il servizio WCF. | Il formato sarà [URL radice sito Web IIS]/[nome applicazione servizio]/[endpoint servizio]. Ad esempio, se è stato creato un sito Web IIS sulla porta 85, l'URL assumerà il formato http://localhost:85/ContactManagerService/ContactService.svc . Tenere presente che l'applicazione MVC e il servizio WCF vengono distribuiti nello stesso server. Di conseguenza, questo URL viene eseguito solo dal computer in cui è installato. Per questo motivo, è preferibile usare localhost o l'indirizzo IP, anziché il nome del computer o un'intestazione host, nell'URL. Se si usa il nome del computer o un'intestazione host, la funzionalità di sicurezza del controllo del loopback in IIS potrebbe bloccare l'URL e restituire un errore HTTP 401.1 - Non autorizzato . |
CmDatabaseConnectionString Stringa di connessione per il server di database. | La stringa di connessione determina entrambe le credenziali che VSDBCMD userà per contattare il server di database e creare il database e le credenziali che il pool di applicazioni del server Web userà per contattare il server di database e interagire con il database. Fondamentalmente hai due scelte qui. È possibile specificare Integrated Security=true, nel qual caso viene usata l'autenticazione integrata di Windows: Origine dati=TESTDB1; Integrated Security=true In questo caso, il database verrà creato usando le credenziali dell'utente che esegue il file eseguibile VSDBCMD e l'applicazione accederà al database usando l'identità dell'account del computer del server Web. In alternativa, è possibile specificare il nome utente e la password di un account SQL Server. In questo caso, le credenziali di SQL Server vengono usate sia da VSDBCMD per creare il database che dal pool di applicazioni per interagire con il database: Origine dati=TESTDB1; Id utente=ASqlUser; Password=; Le procedure dettagliate in questo argomento presuppongono che si userà l'autenticazione integrata di Windows. |
CmTargetDatabase Nome che si desidera assegnare al database che verrà creato nel server di database. | Il valore fornito qui viene aggiunto al comando VSDBCMD come parametro. Viene usato anche per creare una stringa di connessione completa che il pool di applicazioni sul server Web può usare per interagire con il database. |
Questi esempi illustrano come configurare queste proprietà per scenari di distribuzione specifici.
Esempio 1: distribuzione al Servizio Agente Remoto
In questo esempio:
- Si esegue la distribuzione nel servizio agente remoto in TESTWEB1.
- Si sta istruendo Web Deploy a utilizzare l'autenticazione NTLM. Distribuzione Web verrà eseguita usando le credenziali usate per richiamare Microsoft Build Engine (MSBuild).
- Si usa l'autenticazione integrata per distribuire il database ContactManager in TESTDB1. Il database verrà distribuito usando le credenziali usate per richiamare MSBuild.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
TESTWEB1.fabrikam.net
</MSDeployComputerName>
<MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">NTLM</MSDeployAuth>
<ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
http://localhost:85/ContactManagerService/ContactService.svc
</ContactManagerTargetUrl>
<ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
DemoSite/ContactManager
</ContactManagerIisPath>
<ContactManagerServiceIisPath
Condition=" '$(ContactManagerServiceIisPath)'=='' ">
DemoSite/ContactManagerService
</ContactManagerServiceIisPath>
<CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
Data Source=TESTDB1;Integrated Security=true</CmDatabaseConnectionString>
<CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
ContactManager
</CmTargetDatabase>
</PropertyGroup>
</Project>
Esempio 2: distribuzione nell'endpoint del gestore distribuzione Web
In questo esempio:
- Si esegue la distribuzione nell'endpoint del servizio Gestore distribuzione Web in STAGEWEB1.
- Stai istruendo Web Deploy a usare l'autenticazione di base.
- Si specifica che Distribuzione Web deve rappresentare l'account FABRIKAM\stagingdeployer nel computer remoto.
- Si usa l'autenticazione di SQL Server per distribuire il database ContactManager in STAGEDB1.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite
</MSDeployComputerName>
<MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">Basic</MSDeployAuth>
<MSDeployUsername Condition=" '$(MSDeployUsername)'=='' ">
FABRIKAM\stagingdeployer
</MSDeployUsername>
<MSDeployPassword Condition=" '$(MSDeployPassword)'=='' ">
Pa$$w0rd
</MSDeployPassword>
<ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
http://localhost:85/ContactManagerService/ContactService.svc
</ContactManagerTargetUrl>
<ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
DemoSite/ContactManager
</ContactManagerIisPath>
<ContactManagerServiceIisPath
Condition=" '$(ContactManagerServiceIisPath)'=='' ">
DemoSite/ContactManagerService
</ContactManagerServiceIisPath>
<CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
Data Source=STAGEDB1;User ID=sa;'$($CREDENTIAL_PLACEHOLDER$)'
</CmDatabaseConnectionString>
<CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
ContactManager
</CmTargetDatabase>
</PropertyGroup>
</Project>
Conclusione
A questo punto, i file di progetto sono completamente configurati per compilare e distribuire la soluzione Contact Manager in uno o più ambienti di destinazione.
Per usare questi file di progetto come parte di un processo di distribuzione ripetibile in un unico passaggio, è necessario eseguire il file Publish.proj usando MSBuild e passare il percorso del file di progetto specifico dell'ambiente come parametro. È possibile eseguire questa operazione in diversi modi:
- Per una panoramica di MSBuild e un'introduzione ai file di progetto personalizzati, vedere Informazioni sul file di progetto.
- Per informazioni su come formulare un comando MSBuild che esegue i file di progetto personalizzati, vedere Distribuzione di pacchetti Web.
- Per informazioni su come incorporare i comandi DI MSBuild in un file di comando per distribuzioni ripetibili in un unico passaggio, vedere Creazione ed esecuzione di un file di comando di distribuzione.
- Per informazioni su come eseguire i file di progetto personalizzati da Team Build, vedere Creazione di una definizione di compilazione che supporta la distribuzione.