[TUTORIAL] Internet Information Services | Migración Offline de Sitios Web desde IIS 6 a IIS 7 en adelante con Web Deploy de Microsoft

IIS es el rol de servidor de Microsoft que permite alojar Sitios y Aplicaciones Web. A medida que Windows Server fue evolucionando en versiones, las versiones de IIS fueron cambiando: en Windows Server 2003 teníamos IIS 6, en Windows Server 2008 teníamos IIS 7, en 2008 R2 nos encontramos con IIS 7.5 y, por último, en Server 2012 tenemos IIS 8.

Los procesos de migración entre IIS 7 a IIS 7.5 o IIS 8 son simples y no requieren herramientas externas, dado que podemos utilizar appcmd. Pero ¿qué sucede si necesitamos migrar sitios desde IIS 6?

En este tutorial obtendremos respuesta a esta pregunta utilizando la herramienta Web Deploy de Microsoft Web Plataform para migrar sitios, en forma masiva, de IIS 6 a IIS 7 o superior.

 

[toc]

 

Introducción

Objetivo

El objetivo de esta publicación es mostrar cómo la herramienta Web Deploy de Microsoft puede ayudar a las organizaciones a migrar en forma ágil aplicaciones alojadas en Internet Information Services hacia otras versiones de IIS.

 

Audiencia

Este documento está dirigido a Consultores, Profesionales IT y personas que desarrollan tareas de Consultoría, Administración y Soporte o que simplemente están interesados en aprender nuevas cosas.

 

Comentarios y Corrección de Errores

Hemos realizado nuestro mejor esfuerzo para no cometer errores, pero al fin y al cabo somos seres humanos. Si deseás reportar algún error o darnos feedback de qué te pareció esta publicación, por favor no dejes de comunicarte con nosotros a través de correo electrónico a la siguiente dirección: info@tectimes.net.

 

Alcance

Entender cuál es el alcance de la publicación nos ayuda a tener una expectativa real de lo que encontraremos en la misma, de modo tal que quién lo lee no espere ni más ni menos de lo que encontrará. Vamos a describir el escenario de trabajo, tecnologías alcanzadas y plan de trabajo en alto nivel.

 

Objetivo Técnico

El objetivo técnico de esta publicación es poder realizar la migración de Sitios Web desde IIS 6 a IIS 7 o superior. En nuestro caso y a modo de ejemplo, llevaremos los sitios del IIS 6 de Windows Server 2003 al IIS 8 de Windows Server 2012 de modo tal que:

  • Los sitios y el contenido sea migrado automáticamente.
  • Solo tengamos que realizar acciones de remediación sobre las aplicaciones ya configuradas.

Como resultado, tendremos los sitios que antes estaban en IIS 6 instalados y configurados (y hasta funcionando) en IIS 8.

 

Tecnologías Alcanzadas

Esta publicación puede aplicarse a:

  • Internet Information Services (IIS) en Windows Server.
  • Web Deploy de Microsoft.
  • Windows Server 2003 Standard.
  • Windows Server 2003 Enterprise.
  • Windows Server 2003 Datacenter.
  • Windows Server 2008 Standard.
  • Windows Server 2008 Enterprise.
  • Windows Server 2008 Datacenter.
  • Windows Server 2008 R2 Standard.
  • Windows Server 2008 R2 Enterprise.
  • Windows Server 2008 R2 Datacenter.
  • Windows Server 2012 Standard.
  • Windows Server 2012 Datacenter.

 

Escenario de Trabajo

El diagrama de trabajo propuesto es el siguiente:

 

Ilustración 1 – Diagrama de Trabajo.
Ilustración 1 – Diagrama de Trabajo.

 

IIS01

Será el equipo que aloje los sitios web que queremos migrar. Cuenta con la siguiente configuración:

  • Windows Server 2003 R2 x64.
  • Disco C para el Sistema.
  • Disco F para los Sitios Web.

 

IIS02

Será el equipo que alojará, luego de la migración, los sitios web. Cuenta con la siguiente configuración:

  • Windows Server 2012.
  • Disco C para el Sistema.
  • Disco F para los Sitios Web.

 

Este servidor, para nuestra prueba, se encuentra en blanco (sin sitios web instalados).

 

Plan de Trabajo

El plan de trabajo es el siguiente:

  • Instalación de Microsoft Web Plataform.
  • Instalación de Web Deploy v3.
  • Chequeo de requisitos en servidor IIS01.
  • Exportación de Sitios masiva en servidor IIS01.
  • Chequeo de requisitos en servidor IIS02.
  • Importación de Sitios masiva en servidor IIS02.
  • Consideraciones de Importación / Exportación individual.

 

Fuera de Alcance

Se deja fuera de alcance de este tutorial:

  • Las remediaciones específicas a realizar sobre la aplicación. Suponemos que de ello se encargará personal de desarrollo y/o administración de IIS específico.
  • Verificación del funcionamiento de los sitios: nos limitaremos a la migración de contenido y configuración, no a la prueba.
  • La exportación / importación a realizar será de tipo “Off Line”. El Web Deploy de Microsoft permite migraciones en vivo (On Line) pero no están dentro del alcance de este tutorial.

 

Desarrollo del Tutorial

Instalación de Microsoft Web Plataform

Para realizar la exportación e importación de sitios, necesitamos recurrir a una herramienta proporcionada gratuitamente por Microsoft llamada “Microsoft Web Plataform”. Esta plataforma se puede instalar en servidores Windows 2003 y superior. En nuestro caso, la instalaremos en los servidores IIS01 y IIS 02.

Para realizar la descarga, solo tenemos que conectarnos a http://www.microsoft.com/web e ir a la sección descargas, y allí obtener “Web Plataform”:

 

Ilustración 2 – Página de Microsoft Web Plataform
Ilustración 2 – Página de Microsoft Web Plataform

 

Una vez descargado el archivo de instalación, que pesa menos de 2 MB, debemos instalar la herramienta.

 

Instalación de Web Deploy v3

Una vez instalada la herramienta Microsoft Web Plataform, podremos buscar la aplicación específica que necesitamos, dentro del Microsoft Web Plataform, llamada “Web Deploy”.

Para ello, abrimos el Microsoft Web Plataform y en el cuadro de búsqueda superior ponemos “Web Deploy”:

 

Ilustración 3 – Búsqueda de Microsoft Web Deploy en Microsoft Web Plataform.
Ilustración 3 – Búsqueda de Microsoft Web Deploy en Microsoft Web Plataform.

 

De los resultados de búsqueda, hacemos clic en el botón “Add” para el resultado “Web Deploy 3.0”:

 

Ilustración 4 – Agregamos Web Deploy 3.0 para la instalación.
Ilustración 4 – Agregamos Web Deploy 3.0 para la instalación.

 

Una vez que hacemos clic en “Install”, nos saldrá un cuadro resumen con los requisitos a instalar extras para poder continuar. Le damos “I Accept”:

 

Ilustración 5 – Instalación de Web Deploy 3.0
Ilustración 5 – Instalación de Web Deploy 3.0

 

La instalación comenzará y solo debemos esperar a que finalice. Esta acción debemos realizarla en ambos servidores: IIS01 y IIS02.

 

Ilustración 6 – Instalando Web Deploy 3.0.
Ilustración 6 – Instalando Web Deploy 3.0.

 

Chequeo de requisitos en servidor IIS01

El objetivo es realizar el traslado de los siguientes sitios web del servidor IIS01 al IIS02:

 

Ilustración 7 – Sitios web del IIS01.
Ilustración 7 – Sitios web del IIS01.

 

Una vez instalada la herramienta, debemos comenzar por validar las dependencias de estos sitios web instalados en el IIS01. Este paso es muy importante, dado que nos permite verificar si tenemos que instalar estas dependencias en el servidor IIS02. Por ejemplo, si nuestra aplicación utiliza una versión de .Net Framework que no tenemos instalada en el IIS02, ésta será la forma de comprobarlo.

Para realizar este proceso en todos los sitios web del IIS01 (de todo el servidor) debemos navegar por CMD hasta la carpeta del Web Deploy, que normalmente es “C:\Program Files\IIS\Microsoft Web Deploy v3” y ejecutar el siguiente comando:

msdeploy -verb:getDependencies -source:metakey=lm

La variable LM representa el servidor completo. El resultado, en nuestro caso, es el siguiente:

 

Ilustración 8 – Dependencias en el IIS01.
Ilustración 8 – Dependencias en el IIS01.

 

Para que la migración sea exitosa, debemos instalar los roles y requisitos en el servidor IIS02 en este momento, antes de continuar. Una vez instalados estos requisitos y dependencias, podemos continuar con el siguiente paso.

 

Exportación de Sitios masiva en servidor IIS01

Vamos a realizar la exportación de toda la configuración y contenido de los sitios que están en el IIS 6 del servidor IIS01 a una carpeta de exportación, la cual utilizaremos luego para importarla en el IIS02. Aquí haremos el proceso masivamente, y al final del tutorial haremos una aclaración de cómo hacerlo sitio por sitio en forma individual.

Desde el CMD ejecutaremos el siguiente comando:

msdeploy -verb:sync -source:archivedir=c:\WebMigrate,encryptPassword=mipassword -dest:metakey=lm -whatif > WebMigrate.log

Este commando tiene los siguientes argumentos:

  • SourcE:archivedir -> exportará la configuración y contenido de los sitios en un directorio.
  • EncryptPassword: es un password que nosotros elegiremos para proteger la info exportada. Luego la necesitaremos.
  • Dest: indicamos que queremos exportar todo el servidor IIS, no un sitio en particular.
  • Whatif: es una variable que permite corroborar el resultado, pero sin ejecutarlo. En este sentido, vamos a corroborar si podemos realizar la exportación. De no encontrarnos problemas, lo haremos “realmente”.

Ejecutamos el comando y verificamos que no haya problemas. Si esto es así, lo ejecutamos sin el parámetro “-whatif”:

 

Ilustración 9 – Exportación de Sitios del IIS01 (IIS 6).
Ilustración 9 – Exportación de Sitios del IIS01 (IIS 6).

 

El resultado será una carpeta en la ubicación que le dimos como parámetro “Dest” con todo el contenido. Esta carpeta debemos copiarla al servidor destino (en nuestro caso, IIS02). El tamaño y tiempo que lleve el proceso dependerá de la cantidad de datos que estamos exportando.

Una consideración importante, en este sentido, es que necesitamos tanto espacio libre en el disco donde exportemos (parámetro “Dest”) como espacio de sitios web estemos ocupando.

 

Chequeo de requisitos en servidor IIS02

Una vez copiada la carpeta con los datos de exportación en el servidor IIS02, y suponiendo que hemos instalados los roles y funciones necesarias comprobadas en el chequeo de requisitos y dependencias del servidor IIS01, vamos a realizar el proceso de prueba de importación solo para garantizar que no nos falte nada. Es importante tener en cuenta que:

  • Debemos contar con la misma letra de unidad para los sitios web que contábamos en el servidor IIS01.
  • Debemos contar con el espacio suficiente en disco para realizar la importación, además de la que contamos para pegar la carpeta de importación generada en el paso anterior.
  • En nuestro caso, el servidor IIS02 no tiene sitios web instalados previamente.

 

Ilustración 10 – Servidor destino IIS02 sin sitios web.
Ilustración 10 – Servidor destino IIS02 sin sitios web.

 

Ejecutaremos el siguiente comando para verificar si el proceso de importación es exitoso o no (en prueba):

msdeploy -verb:sync -source:archivedir=c:\WebMigrate,encryptPassword=mipassword -dest:metakey=lm -whatif > WebMigrate.log

Observemos que nuevamente tenemos el parámetro “whatif”, lo que significa que estamos “suponiendo” lo que pasaría, pero en realidad no estamos ejecutando la importación. El resultado es el siguiente:

 

Ilustración 11 – Prueba de importación exitosa, sin comentarios.
Ilustración 11 – Prueba de importación exitosa, sin comentarios.

 

Como vemos en la imagen, no dio ninguna observación. Esto significa que estamos listos para importar nuestros sitios al IIS02. Nótese que utilizamos la contraseña “mipassword” indicada anteriormente en la exportación, para realizar la importación.

 

Importación de Sitios masiva en servidor IIS02

Como el comando de prueba y chequeo de requisitos fue exitoso, ahora vamos a continuar sin el parámetro “whatif”, con la importación de los sitios. El comando a ejecutar sería:

msdeploy -verb:sync -source:archivedir=c:\WebMigrate,encryptPassword=mipassword -dest:metakey=lm > WebMigrate.log

El resultado es el siguiente:

 

Ilustración 12 – Importación exitosa al IIS02 desde el IIS01.
Ilustración 12 – Importación exitosa al IIS02 desde el IIS01.

 

Si corroboramos el IIS8 (o refrescamos la consola, si ya la teníamos abierta) podremos observar que la operación ha importado los sitios web:

 

Ilustración 13 – Sitios web importados en el IIS02.
Ilustración 13 – Sitios web importados en el IIS02.

 

Además, ha realizado la creación de los ApplicationPools con su configuración de usuarios de dominio y, por supuesto, tenemos en contenido de los sitios web (todos los archivos) en la misma letra y path donde estaba presentes en el servidor IIS01.

 

Consideraciones de Importación / Exportación individual

Si no queremos realizar la exportación e importación masiva de sitios (todos juntos) podemos optar por realizarla manualmente uno por uno. Para esto, los comandos son los siguientes:

 

Verificación de Dependencias del Sitio Web en el Servidor Origen

msdeploy -verb:getDependencies -source:metakey=lm/w3svc/1

Donde:

  • source:metakey: es el ID de sitio (en este caso “1”).

 

Exportación individual de Sitio Web

msdeploy -verb:sync -source:metakey=lm/w3svc/1 -dest:package=c:\Site1.zip -enableLink:appPool > WebDeployPackage.log

Donde:

  • source:metakey: es el ID de sitio (en este caso “1”).
  • dest:package -> es el destino en archivo .zip que se exportará el sitio web.
  • enableLink: habilita la exportación del ApplicationPool.

 

Importación Individual de Sitio Web

msdeploy -verb:sync -source:package=c:\Site1.zip -dest:metakey=lm/w3svc/1 > WebDeploySync.log

Donde:

  • source:package: es la ubicación del paquete .zip a importar.
  • dest:metakey -> es el ID de sitio a importar (en este caso “1”).

 

Conclusiones

Web Deploy 3.0 de Microsoft Web Plataform nos permite, rápidamente, pasar sitios masivamente de un servidor con IIS 6, IIS 7 ó IIS 7.5 hacia otro de su misma versión o superior. Sin lugar a dudas, esta herramienta nos puede ahorrar muchísimo tiempo en procesos masivos de migración de sitios web entre servidores IIS.

Existen muchísimas más opciones disponibles en el Web Deploy bajo formato de línea de comandos, razón por la cual dejamos en “Enlaces de Referencia” links directos hacia esta herramienta.

 

Referencias y Links

 

 

0 0 votes
Article Rating

Professor. Techie. Ice cream fan (dulce de leche). My favorite phrase: "Todos los días pueden no ser buenos ... pero hay algo bueno en todos los días". Currently I´m Engineering Manager at MODO (https://modo.com.ar), the payment solution that allows you to connect your money and your world to simplify everyday life. Modo is a payment solution in which you can send, order and pay from your mobile device in the safest, most practical and convenient way. I enjoy a lot of educational, technological talks and a good beer. If you want to talk, write me to pablodiloreto@hotmail.com.

Subscribe
Notify of
guest

2 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Javier
Javier
September 24, 2014 6:12 PM

estaba revisando tu tutorial y me ha sido de mucha ayuda, pero tengo un inconveniente con el servidor destino, no me muestra en el administrador del IIS, en el nodo de sitios nada, no aparece la carpeta donde se aloja el default web site, ya desinstale y volvia a instalar el IIS y sigue sin mostrar nada, tienes idea de que pueda ser, de porque no muestra nada?

estoy trabajando en windows server 2012, es IIS 8

agradezco tus valiosos comentarios

saludos

Alberto
Alberto
January 16, 2017 3:26 AM

Tengo que migrar un sitio que esta en w2003R2std c/IIS6 a w2012R2std c/IIS8.
el sitio esta instalado en el C pero tiene links a cientos de archivos en D (casi 2 Tb).
hay alguna manera de excluir la copia de los archivos en D ?
los archivos en D ya fueron copiados previamente con ROBOCOPY.

Muchas gracias x tu ayuda.