Compartir a través de


Configurar las propiedades de implementación de un entorno de destino

de Jason Lee

En este tema se describe cómo configurar propiedades específicas del entorno para implementar la solución contact Manager de ejemplo en un entorno de destino específico.

Este tema forma parte de una serie de tutoriales basados en los requisitos de implementación empresarial de una empresa ficticia denominada Fabrikam, Inc. En esta serie de tutoriales se usa una solución de ejemplo (la solución Contact Manager ) para representar una aplicación web con un nivel realista de complejidad, incluida una aplicación de ASP.NET MVC 3, un servicio de Windows Communication Foundation (WCF) y un proyecto de base de datos.

El método de implementación en el centro de estos tutoriales se basa en el enfoque de archivo de proyecto dividido descrito en Descripción del proceso de compilación, en el que el proceso de compilación se controla mediante dos archivos de proyecto, uno que contiene instrucciones de compilación que se aplican a todos los entornos de destino y uno que contiene la configuración de compilación e implementación específica del entorno. En tiempo de compilación, el archivo de proyecto específico del entorno se combina en el archivo de proyecto independiente del entorno para formar un conjunto completo de instrucciones de compilación.

Resumen del proceso

El archivo de proyecto que usará para compilar e implementar la solución Contact Manager se divide en dos archivos físicos:

  • Uno que contiene la configuración de compilación universal y las instrucciones (el archivo Publish.proj ).
  • Uno que contiene la configuración de compilación específica del entorno (Env-Dev.proj, Env-Stage.proj, etc.).

En tiempo de compilación, el archivo de proyecto específico del entorno adecuado se combina en el archivo Universal Publish.proj para formar un conjunto completo de instrucciones de compilación. Puede configurar la implementación en entornos de destino específicos mediante la creación o personalización de archivos de proyecto específicos del entorno con la configuración que describe su propio escenario de implementación.

Muchos de estos valores se determinan mediante la configuración del entorno de destino, en particular, si el servidor web de destino está configurado para usar el servicio agente de implementación web (el agente remoto) o el controlador de implementación web. Para obtener más información sobre estos enfoques y para obtener instrucciones sobre cómo elegir el enfoque adecuado para su propio entorno, consulte Elección del enfoque adecuado para la implementación web.

El escenario de Contact Manager requiere dos archivos de proyecto específicos del entorno:

  • Implementación en un entorno de prueba para desarrolladores (Env-Dev.proj). El entorno de prueba del desarrollador está configurado para aceptar implementaciones remotas mediante el agente remoto, como se describe en Escenario: Configuración de un entorno de prueba para la implementación web. Este archivo debe proporcionar la dirección del punto de conexión del agente remoto, así como la configuración específica de la ubicación, como las cadenas de conexión y los puntos de conexión de servicio.
  • Implementación en un entorno de ensayo (Env-Stage.proj). El entorno de ensayo está configurado para aceptar implementaciones remotas mediante el controlador de implementación web, como se describe en Escenario: Configuración de un entorno de ensayo para la implementación web. Este archivo debe proporcionar la dirección del punto de conexión del controlador de implementación web, así como la configuración específica de la ubicación, como las cadenas de conexión y los puntos de conexión de servicio.

Es importante tener en cuenta que la configuración que configure en el archivo de proyecto específico del entorno no afecta al contenido del propio paquete web; en su lugar, controlan cómo se implementa el paquete y qué valores de parámetro se proporcionan cuando se extrae el paquete. Va a importar manualmente el paquete web en el entorno de producción, como se describe en Escenario: Configuración de un entorno de producción para la implementación web e instalación manual de paquetes web, por lo que no importa qué configuración usó en el archivo de proyecto específico del entorno cuando generó el paquete. El Administrador de Internet Information Services (IIS) le pedirá cualquier valor parametrizado, como cadenas de conexión y puntos de conexión de servicio, al importar el paquete.

Para implementar la solución Contact Manager en su propio entorno de destino, puede personalizar este archivo o usarlo como plantilla y crear su propio archivo.

Para configurar opciones de implementación específicas del entorno para la solución Contact Manager

  1. Abra la solución ContactManager-WCF en Visual Studio 2010.

  2. En la ventana Explorador de soluciones, expanda la carpeta Publicar , expanda la carpeta EnvConfig y, a continuación, haga doble clic en Env-Dev.proj.

    En la ventana Explorador de soluciones, expanda la carpeta Publicar, expanda la carpeta EnvConfig y, a continuación, haga doble clic en Env-Dev.proj.

  3. Reemplace los valores de propiedad en el archivo Env-Dev.proj por los valores correctos para su propio entorno de prueba.

    Nota:

    La tabla siguiente a este procedimiento proporciona más información sobre cada una de estas propiedades.

  4. Guarde el trabajo y cierre el archivo Env-Dev.proj .

Elección de las propiedades de implementación adecuadas

En esta tabla se describe el propósito de cada propiedad en el archivo de proyecto específico del entorno de ejemplo, Env-Dev.proj y se proporcionan algunas instrucciones sobre los valores que debe proporcionar.

Nombre de propiedad Detalles
MSDeployComputerName Nombre del servidor web de destino o del punto de conexión de servicio. Si va a implementar en el servicio del agente remoto en el servidor web de destino, puede especificar el nombre del equipo de destino (por ejemplo, TESTWEB1 o TESTWEB1.fabrikam.net), o puede especificar el punto de conexión del agente remoto (por ejemplo, http://TESTWEB1/MSDEPLOYAGENTSERVICE). La implementación funciona de la misma manera en cada caso. Si va a implementar en el controlador de implementación web en el servidor web de destino, debe especificar el punto de conexión de servicio e incluir el nombre del sitio web de IIS como parámetro de cadena de consulta (por ejemplo, https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite).
MSDeployAuth Método que Web Deploy debe usar para autenticarse en el equipo remoto. Debe establecerse en NTLM o Basic. Normalmente, usará NTLM si va a implementar en el servicio de agente remoto y Básico si va a implementar en el controlador de implementación web. Si usa la autenticación básica, también debe especificar el nombre de usuario y la contraseña que la herramienta de implementación web (Web Deploy) de IIS debe suplantar para realizar la implementación. En este ejemplo, estos valores se proporcionan a través de las propiedades MSDeployUsername y MSDeployPassword . Si usa la autenticación NTLM, puede omitir estas propiedades o dejarlas en blanco.
MSDeployUsername Si usa la autenticación básica, Web Deploy usará esta cuenta en el equipo remoto. Esto debe tener el formato DOMAIN*username* (por ejemplo, FABRIKAM\matt). Este valor solo se usa si especifica la autenticación básica. Si utiliza la autenticación NTLM, se puede omitir la propiedad. Si se proporciona un valor, se omitirá.
MSDeployPassword Si usa la autenticación básica, Web Deploy usará esta contraseña en el equipo remoto. Esta es la contraseña de la cuenta de usuario que especificó en la propiedad MSDeployUsername . Este valor solo se usa si especifica la autenticación básica. Si utiliza la autenticación NTLM, se puede omitir la propiedad. Si se proporciona un valor, se omitirá.
ContactManagerIisPath Ruta de acceso de IIS en la que desea implementar la aplicación MVC del Administrador de contactos. Esta debe ser la ruta de acceso tal como aparece en el Administrador de IIS, con el formato [nombre del sitio web de IIS]/[nombre de la aplicaciónweb]. Recuerde que el sitio web de IIS debe existir antes de implementar la aplicación. Por ejemplo, si ha creado un sitio web de IIS denominado DemoSite, puede especificar la ruta de acceso de IIS para la aplicación MVC como DemoSite/ContactManager.
ContactManagerServiceIisPath Ruta de acceso de IIS en la que desea implementar el servicio WCF del Administrador de contactos. Por ejemplo, si ha creado un sitio web de IIS denominado DemoSite, puede especificar la ruta de acceso de IIS para el servicio WCF como DemoSite/ContactManagerService.
ContactManagerTargetUrl Dirección URL en la que se puede acceder al servicio WCF. Esto tendrá el formato [DIRECCIÓN URL raíz del sitio web de IIS]/[nombre de la aplicación de servicio]/[punto de conexión de servicio]. Por ejemplo, si ha creado un sitio web de IIS en el puerto 85, la dirección URL tomaría el formato http://localhost:85/ContactManagerService/ContactService.svc. Recuerde que la aplicación MVC y el servicio WCF se implementan en el mismo servidor. Como resultado, solo se accede a esta dirección URL desde el equipo en el que está instalado. Por este motivo, es mejor usar localhost o la dirección IP, en lugar del nombre del equipo o un encabezado de host, en la dirección URL. Si usa el nombre del equipo o un encabezado de host, la característica de seguridad de verificación de bucle de retorno en IIS puede bloquear la dirección URL y devolver un error HTTP 401.1 - No autorizado.
CmDatabaseConnectionString Cadena de conexión para el servidor de bases de datos. La cadena de conexión determina las credenciales que VSDBCMD usará para ponerse en contacto con el servidor de bases de datos y crear la base de datos y las credenciales que usará el grupo de aplicaciones del servidor web para ponerse en contacto con el servidor de bases de datos e interactuar con la base de datos. Básicamente tiene dos opciones aquí. Puede especificar Integrated Security=true, en cuyo caso se usa la autenticación integrada de Windows: Origen de datos=TESTDB1; Integrated Security=true En este caso, la base de datos se creará con las credenciales del usuario que ejecuta el ejecutable VSDBCMD y la aplicación tendrá acceso a la base de datos mediante la identidad de la cuenta de máquina del servidor web. Como alternativa, puede especificar el nombre de usuario y la contraseña de una cuenta de SQL Server. En este caso, VSDBCMD usa las credenciales de SQL Server para crear la base de datos y el grupo de aplicaciones para interactuar con la base de datos: Data Source=TESTDB1; User Id=ASqlUser; Password=; En los tutoriales de este tema se supone que usará la autenticación integrada de Windows.
CmTargetDatabase Nombre que desea asignar a la base de datos que va a crear en el servidor de bases de datos. El valor que proporcione aquí se agrega al comando VSDBCMD como parámetro. También se usa para crear una cadena de conexión completa que el grupo de aplicaciones del servidor web puede usar para interactuar con la base de datos.

Estos ejemplos muestran cómo configurar estas propiedades para escenarios de implementación específicos.

Ejemplo 1: implementación en el servicio agente remoto

En este ejemplo:

  • Va a implementar en el servicio de agente remoto en TESTWEB1.
  • Le indica a Web Deploy que use la autenticación NTLM. Web Deploy se ejecutará con las credenciales que usó para invocar microsoft Build Engine (MSBuild).
  • Está usando la autenticación integrada para implementar la base de datos contactManager en TESTDB1. La base de datos se implementará con las credenciales que usó para invocar 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>

Ejemplo 2: implementación en el punto de conexión del controlador de implementación web

En este ejemplo:

  • Va a implementar en el punto de conexión del servicio Web Deploy Handler en STAGEWEB1.
  • Le indica a Web Deploy que use la autenticación básica.
  • Está especificando que Web Deploy debe suplantar la cuenta FABRIKAM\stagingdeployer en el equipo remoto.
  • Está usando la autenticación de SQL Server para implementar la base de datos contactManager en 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>

Conclusión

En este momento, los archivos del proyecto están totalmente configurados para compilar e implementar la solución Contact Manager en uno o varios entornos de destino.

Para usar estos archivos de proyecto como parte de un proceso de implementación repetible de un solo paso, debe ejecutar el archivo Publish.proj mediante MSBuild y pasar la ubicación del archivo de proyecto específico del entorno como parámetro. Puede hacerlo de varias maneras: