[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:
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”:
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”:
De los resultados de búsqueda, hacemos clic en el botón “Add” para el resultado “Web Deploy 3.0”:
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”:
La instalación comenzará y solo debemos esperar a que finalice. Esta acción debemos realizarla en ambos servidores: IIS01 y IIS02.
Chequeo de requisitos en servidor IIS01
El objetivo es realizar el traslado de los siguientes sitios web del servidor IIS01 al IIS02:
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:
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”:
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.
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:
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:
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:
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
- Microsoft Web Deploy v3 Readme: http://www.iis.net/learn/publish/using-web-deploy/microsoft-web-deploy-v3-readme
- Web Deployment Tool: http://technet.microsoft.com/en-us/library/dd568996(v=ws.10).aspx
- Migrate a Web Site from IIS 6.0 to IIS 7 or above: http://www.iis.net/learn/publish/using-web-deploy/migrate-a-web-site-from-iis-60-to-iis-7-or-above
- Packaging and Restoring a Web site: http://www.iis.net/learn/publish/using-web-deploy/packaging-and-restoring-a-web-site
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
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.