Compartir a través de


Parametrización de Web Deploy

por el Equipo de Implementación Web

Introducción a la parametrización

El desarrollo de aplicaciones web suele implicar la implementación de código en diferentes entornos: desarrollo, almacenamiento provisional o servidores de producción. Cada entorno puede usar un conjunto diferente de recursos, como la información de conexión de base de datos, y Web Deploy se compila con características que ayudan a transformar las aplicaciones web a medida que se implementan en diferentes entornos. Para transformar una aplicación durante la implementación, se pueden "parametrizar" diferentes partes de las aplicaciones y, en el momento de la implementación, Web Deploy toma la entrada de un usuario para reemplazar diferentes partes de información dentro de la aplicación.

Diferentes formas de implementar aplicaciones: Sincronización en vivo y Visual Studio

La herramienta Web Deploy se puede usar para implementar una aplicación de dos maneras diferentes. Una aplicación web se puede sincronizar en directo, desde un servidor (quizás el servidor de desarrollo) a otro servidor (quizás el servidor que hospeda la aplicación en la web). Las aplicaciones web también se pueden empaquetar en un archivo de .zip, para ser descargado e instalado por un público más amplio y general de los desarrolladores. Este es un modelo usado habitualmente por las aplicaciones de tipo "plataforma" (por ejemplo, Wordpress). Por último, Visual Studio usa Web Deploy en segundo plano al desarrollar e implementar proyectos de aplicación web (WAP). En este caso, Visual Studio parametriza automáticamente la mayoría de los elementos necesarios de las aplicaciones web, con la capacidad de crear parámetros personalizados si es necesario.

Creación y parametrización de una aplicación que se va a implementar

Microsoft proporciona una manera fácil de instalar más de 50 aplicaciones web populares, como Wordpress, Joomla, y DotNetNuke. Estas aplicaciones se pueden instalar de forma relativamente rápida y sencilla. En segundo plano, estas interfaces de usuario usan la herramienta Web Deploy para instalar la aplicación desde un paquete de .zip. Para crear un paquete de aplicación para que se pueda instalar mediante una de estas herramientas, se deben realizar varios pasos, incluida la parametrización de partes de la aplicación.

Los pasos siguientes son necesarios para convertir una aplicación en un paquete de .zip que se puede implementar:

  1. Crea una aplicación.
  2. Cree un archivo "manifiesto". Este archivo indica a la herramienta Web Deploy las distintas acciones necesarias para instalar la aplicación. Esto incluye cosas como copiar archivos y configurar una base de datos.
  3. Crear un archivo de parámetros. Este es el archivo de "parametrización" que Web Deploy usa para identificar las partes de la aplicación que deben transformarse en el momento de la instalación en función de la entrada del usuario.
  4. Cree un archivo .zip que contenga la aplicación, el archivo de manifiesto y el archivo de parámetros.

En este artículo se presenta cada uno de estos pasos con detalle.

Paso 1: Creación de una aplicación

Actualmente no hay ninguna manera fácil de crear una aplicación para experimentar con la parametrización de implementación web, excepto la clonación de una aplicación existente.

Ahora tiene una aplicación que está lista para empaquetarse y parametrizarse para que otros desarrolladores puedan descargarla e instalarla. El siguiente paso consiste en configurar un archivo que indicará a Web Deploy los pasos necesarios para instalar la aplicación.

Paso 2: Crear un archivo "manifiesto"

La herramienta Web Deploy puede realizar varias funciones, como copiar archivos, opciones de configuración del servidor web y bases de datos. Cada una de estas funciones es posible mediante un "proveedor" de Web Deploy. Para instalar la aplicación que acaba de crear, usará el proveedor iisApp , que ayuda a copiar archivos y crear la aplicación en el servidor; el proveedor setAcl , que establece los permisos de archivo necesarios; y el proveedor dbFullSql , que configura la base de datos. Para indicar a Web Deploy que use varios proveedores durante la instalación, debe crear un archivo Manifest.xml que declare estos tres proveedores de la siguiente manera (puede copiar un ejemplo desde aquí):

La captura de pantalla muestra el icono del archivo manifest.xml.

<?xml version="1.0" encoding="utf-8" ?>
<msdeploy.iisApp>
  <iisApp path="Vacation Pictures" />
  <setAcl path="Vacation Pictures/App_Data" setAclAccess="Write, ReadAndExecute" />
  <dbFullSql path="CreateDBAndUser.sql" />
  <dbFullSql path="VacPicDBSchema.sql" />
</msdeploy.iisApp>

Echemos un vistazo más detenidamente a cada una de estas entradas.

Proveedor de IISApp

La entrada iisApp apunta a la carpeta donde se encuentra el contenido de la aplicación. Por ejemplo:

<iisApp path="Vacation Pictures" />

El valor de ruta de acceso sería diferente si la aplicación tuviera un nombre diferente.

Proveedor SetAcl

La entrada setAcl indica a Web Deploy que conceda permisos de lectura, escritura y ejecución al directorio "App_Data" cuando se instala la aplicación. Por ejemplo:

<setAcl path="Vacation Pictures/App_Data" setAclAccess="Write, ReadAndExecute" />

Es posible que diferentes aplicaciones requieran permisos especiales en otras carpetas. En ese caso, crearía una entrada setAcl diferente para cada configuración de permisos necesaria.

Proveedor DbFullSQL

Las entradas del proveedor dbFullSQL apuntan a distintos scripts SQL que se usan para crear una base de datos y un usuario ("CreateDBAndUser.sql") y para configurar las tablas de base de datos ("VacPicDBSchema.sql") en el momento de la instalación.

El script de CreateDBAndUser.sql es un script bastante sencillo que se puede copiar desde aquí:

Captura de pantalla que muestra el icono Create D B And User dot s q l (Crear D B y punto de usuario q l).

El VacPicDBSchema.sql es el script que crea todas las tablas de la base de datos que usa la aplicación. Este archivo se puede crear mediante la herramienta de línea de comandos Web Deploy. En la línea de comandos, vaya a donde está instalado Web Deploy (normalmente %programfiles%\IIS\Microsoft Web Deploy <LatestVersion>) y escriba el siguiente comando:

msdeploy -verb:sync -source:dbfullsql="data source=.\SQLExpress;initial catalog=PhotoGallery;user id=sa;password=*" -dest:dbfullsql="c:\VacPicDBSchema.sql"

Reemplace el asterisco (*) por la contraseña de administrador de SQL adecuada.

En un nivel básico, el comando anterior usa el proveedor dbFullSql para copiar datos de una base de datos mediante una cadena de conexión de base de datos ("-source:dbfullsql=...") y la copia en un archivo de script de base de datos ("-dest:dbfullsql=...")

Paso 3: Crear un archivo de parámetros

Después de crear el archivo de manifiesto que indica a Web Deploy cómo instalar la aplicación, debe crear un archivo de parámetros que indique a Web Deploy cómo transformar determinadas opciones para que la aplicación pueda personalizarse para que funcione en un entorno de implementación de usuario específico.

Las partes básicas que serían útiles para transformar son:

  • El nombre de la aplicación: si el usuario final que va a instalar la aplicación quiere cambiar el nombre de la aplicación, deberá parametrizar el nombre de la aplicación.
  • El nombre de la base de datos: es posible que un usuario tenga que configurar la aplicación para que se ejecute en una base de datos que use un nombre diferente. Si es así, deberá parametrizar la información de conexión de la base de datos.

Web Deploy lee la información de parametrización de un archivo XML. En este caso, vas a llamar al archivo Parameters.xml. Para esta demostración, el archivo de parámetros se puede copiar desde aquí y tiene este aspecto (en el sitio web, este archivo XML se puede expandir en un cuadro de código como se usa en esta página):

La captura de pantalla muestra el icono de parámetros punto x m l.

A continuación, aprenderá a parametrizar el nombre de la aplicación y el nombre de la base de datos.

Parametrización del nombre de la aplicación

La parametrización de Web Deploy se puede usar para transformar diferentes tipos de entrada. Normalmente esto implica buscar texto en un archivo XML o archivo de texto y reemplazarlo por texto diferente. En el caso del nombre de la aplicación, un proveedor de Web Deploy controla la copia de archivos y la creación del sitio web en el equipo de destino. Por lo tanto, para parametrizar el nombre de la aplicación, deberá asegurarse de parametrizar el proveedor que declaró anteriormente en el archivo Manifest.xml.

El proveedor del archivo de manifiesto se puede considerar como proveedor de origen, que leerá información del paquete de aplicación que descarga un usuario. A su vez, cuando se instala la aplicación, se usa un proveedor de destino en segundo plano para copiar el contenido y crear un sitio web en el equipo del usuario. El archivo Manifest.xml contiene la información del proveedor de origen, por lo que para permitir que un usuario cambie el nombre de la aplicación; Debe parametrizar el proveedor que se definió en el archivo Manifest.xml.

En el archivo Parameters.xml vinculado a lo anterior, esta parametrización se realiza con la primera entrada XML:

<parameter 
  name="Application Path" 
  description="Full site path where you would like to install your application (i.e., Default Web Site/PhotoGallery)" 
  tags="iisapp">
  <parameterValidation kind="AllowEmpty" />
  <parameterEntry kind="ProviderPath" scope="iisapp" match="Vacation Pictures" />
</parameter>

La etiqueta XML importante que se debe observar es parameterEntry. Esto indica a Web Deploy algunas cosas: una, que está parametrizando un proveedor en el manifiesto (kind="ProviderPath"); dos, que va a parametrizar un proveedor de iisApp (scope="iisapp"); Por último, que solo desea reemplazar las entradas en el archivo de manifiesto que tienen el valor "Imágenes de vacaciones".

La segunda entrada del archivo de parámetros ('name="SetAclParameter1"') solo se asegura de que el proveedor setAcl de nuestro archivo Manifest.xml usa el mismo nombre especificado por el usuario para el proveedor iisApp , que se realiza con la línea 'defaultValue="{Application Path}/App_Data"'. El valor entre corchetes, {Ruta de acceso de la aplicación}, hace referencia al nombre del primer parámetro.

Parametrizar el nombre de la base de datos

El resto de las entradas del archivo Parameters.xml tratan con la parametrización de la información de conexión de la base de datos. Las entradas del segundo al 6º del archivo de parámetros recopilan información de la interfaz de usuario cuando un usuario instala la aplicación. Estas entradas solicitan al usuario el servidor de bases de datos que hospedará la base de datos para la aplicación ("Servidor de bases de datos"), el nombre de la base de datos que se va a crear ("Nombre de base de datos"), el usuario de la base de datos que se asociará a la base de datos ("Nombre de usuario de base de datos") y la contraseña de ese usuario ("Contraseña de base de datos"). Para crear la base de datos y el usuario, Web Deploy también necesita el usuario administrador de bases de datos ("Administrador de bases de datos") y la contraseña ("Contraseña del administrador de bases de datos").

Por último, web Deploy usa toda la información especificada por el usuario para ejecutar realmente los scripts que crean la base de datos (CreateDBAndUser.sql) y configuran las tablas (VacPicDBSchema.sql). Estas son las entradas 7 y 8ª en Parameters.xml:

<parameter 
  name="Create DB and DB User Connection String" 
  description="Automatically sets the connection string for the connection request."
  defaultValue="Server={Database Server};Database={Database Name};uid={Database Administrator};Pwd=*;" <!-- replace Pwd=* with Pwd={Database Administrator Password} -->
  tags="Hidden,SQLConnectionString,Validate">
  <parameterEntry type="ProviderPath" scope="dbfullsql" match="CreateDBAndUser.sql" />
</parameter>
<parameter 
  name="Populate DB Connection String" 
  description="Automatically sets the connection string for the connection request." 
  defaultValue="Server={Database Server};Database={Database Name};uid={Database Administrator};Pwd=*;" <!-- replace Pwd=* with Pwd={Database Administrator Password} -->
  tags="Hidden,SQLConnectionString,Validate">
  <parameterEntry type="ProviderPath" scope="dbfullsql" match="VacPicDBSchema.sql" />
</parameter>

De nuevo, dado que Web Deploy usa un proveedor para sincronizar la información de la base de datos (como se declara en el archivo Manifest.xml), estas dos entradas de parámetro son "type="ProviderPath"".

Nuestra aplicación "Vacation Pictures" también realiza un seguimiento de la conexión de la base de datos en el archivo Web.config. Esta parametrización se controla mediante la entrada final de Parameters.xml.

Paso 4: Crear un archivo ZIP que contenga la aplicación, el archivo de manifiesto y el archivo de parámetros

Ahora tiene los bloques de creación básicos necesarios para implementar la aplicación, por lo que ahora puede empaquetar la aplicación en el formato de paquete adecuado. El paquete solo necesita contener el archivo Parameters.xml, el archivo Manifest.xml y los scripts de instalación de la base de datos en el nivel superior (raíz) del paquete ZIP y el contenido de la aplicación en una subcarpeta.

En la esquina inferior izquierda de WebMatrix, haga clic en la pestaña Sitio para ir al contenido del sitio.

Captura de pantalla que muestra el cuadro de diálogo Matriz web que resalta la pestaña Sitio.

La página del sitio tiene un vínculo a donde reside el contenido de la aplicación:

Captura de pantalla que muestra la dirección URL y la ruta de acceso del contenido de la aplicación.

Haga clic en el vínculo para ir al contenido de la aplicación. Vaya a otro nivel desde esta carpeta y cree una carpeta denominada "VacationPicsWPIInstaller". Copie la carpeta de contenido de la aplicación, los archivos Manifest.xml y Parameters.xml y los scripts de instalación de la base de datos en la carpeta recién creada:

Captura de pantalla que muestra la carpeta de contenido de la aplicación con archivos y scripts de instalación de base de datos.

Con todos los archivos seleccionados, haga clic con el botón derecho y seleccione >Enviar a>Carpeta comprimida (en formato zip).

Captura de pantalla que muestra los archivos seleccionados resaltando las opciones Enviar a y Carpeta comprimida.

Este archivo comprimido puede denominarse cualquier cosa, pero para funcionar mejor con la demostración, asígnelo el nombre "VacationPicsWPIInstaller.zip".

Este paquete ahora contiene todo lo necesario para implementarlo.