¿Cómo se migra un sitio de IIS 7 a otro servidor?

105

Me pregunto cuál es la mejor práctica para mover un sitio web a otro servidor (junto con todas las configuraciones, etc.)

  • Vuelva a crear manualmente el sitio en el nuevo servidor (no se puede mantener por razones obvias)
  • Copie el archivo de configuración applicationHost.config
  • Utilice appcmd para hacer una copia de seguridad y restaurar
  • Utilice MSDeploy para publicar el sitio en la nueva máquina
  • Utilice una herramienta de terceros

Me pregunto cuáles han sido las experiencias de los demás.

Kalid
fuente
Microsoft solo recomienda Web Deploy (después de que se creó esta herramienta), por lo que antes de leer las respuestas a continuación, asegúrese de saber cuál es completamente bajo su propio riesgo.
Lex Li

Respuestas:

134

Yo diría que exporta la configuración de tu servidor en el administrador de IIS:

  1. En el administrador de IIS, haga clic en el nodo Servidor
  2. Vaya a Configuración compartida en "Administración"
  3. Haga clic en "Exportar configuración". (Puede usar una contraseña si los envía a través de Internet, si solo los va a mover a través de una llave USB, no se preocupe).
  4. Mueva estos archivos a su nuevo servidor

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. En el nuevo servidor, vuelva a la sección "Configuración compartida" y marque "Habilitar configuración compartida". Ingrese la ubicación en la ruta física a estos archivos y aplíquelos.

  6. Debe solicitar la contraseña de cifrado (si la configura) y restablecer IIS.

¡BAM! ¡Ve a tomar una cerveza!

mastica
fuente
8
Probablemente debería usar el servidor de importación o el paquete del sitio en lugar de simplemente copiar los archivos, aunque tampoco lo he probado. Pero sí sé que hay rutas de archivo en applicationHost.config que no necesariamente estarán presentes en el nuevo servidor, lo que provocaría que se rompa. Además, probablemente debería mencionar que no puede haber NINGÚN sitio actualmente en IIS, por lo que este proceso no afecta la configuración en ejecución.
frogstarr78
16
No se puede exagerar el último paso. De importancia crítica.
Rap
7
No es una gran idea si está migrando a una versión más reciente de IIS. De lo contrario, esta es la forma de hacerlo.
Roy Tinker
1
Me pregunto si podría funcionar, porque no debería: docs.microsoft.com/en-us/iis/manage/…
vaso123
1
La configuración compartida de IIS no fue diseñada como una forma de migrar la configuración entre máquinas, por lo que si tiene algún problema después de esta respuesta, muerda y no culpe a los demás.
Lex Li
25

MSDeploy puede migrar todo el contenido, configuración, etc. eso es lo que recomienda el equipo de IIS. http://www.iis.net/extensions/WebDeploymentTool

Para crear un paquete, ejecute el siguiente comando (reemplace Sitio web predeterminado por el nombre de su sitio web):

msdeploy.exe -verb:sync -source:apphostconfig="Default Web Site" -dest:package=c:\dws.zip > DWSpackage7.log

Para restaurar el paquete, ejecute el siguiente comando:

msdeploy.exe -verb:sync -source:package=c:\dws.zip -dest:apphostconfig="Default Web Site" > DWSpackage7.log
Bill Staples
fuente
1
Gracias, Bill. Había visto la herramienta, pero tenía dudas porque todavía estaba en Beta.
Kalid
1
En 2016, este sigue siendo el 'estado del arte', pero es realmente difícil trabajar con MSDEPLOY 3.6. Espero que hagan algo nuevo en algún momento.
Warren P
MSDeploy no nos transfirió los sitios correctamente. Terminamos con un sitio que contenía aplicaciones de cada uno de nuestros sitios, por lo que toda la estructura estaba mal.
brianary
Seguramente es la forma recomendada, y documentación como docs.microsoft.com/en-us/iis/publish/using-web-deploy/… y docs.microsoft.com/en-us/iis/publish/using-web- deploy /… son fundamentales para que los usuarios dominen los pasos necesarios y los puntos clave a los que deben prestar atención. La mayoría de los problemas en Internet ya se responden en los artículos. Si la gente dedica suficiente tiempo a esto, Web Deploy no es una herramienta "difícil" de usar.
Lex Li
18

Aquí hay un sitio web útil sobre el uso de appcmd para exportar / importar una configuración de sitio. http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/

Roy
fuente
Gracias por el enlace. Esto también me permitió modificar el ID del sitio y cualquier otra cosa y no tuve que configurar 10 aplicaciones diferentes y 30 directorios virtuales diferentes. Gran ahorro de tiempo
2GDave
Como este enfoque no se ocupa de las dependencias subyacentes (módulos IIS, etc.), utilícelo bajo su propio riesgo.
Lex Li
12

Microsoft Web Deploy v3 puede exportar e importar todos sus archivos, los ajustes de configuración, etc. Lo coloca todo en un archivo zip listo para importar en el nuevo servidor. Incluso puede actualizarse a versiones más recientes de IIS (v7-v8).

http://www.iis.net/extensions/WebDeploymentTool

Después de instalar la herramienta: haga clic con el botón derecho en su servidor o sitio web en la Consola de administración de IIS, seleccione 'Implementar', 'Exportar aplicación ...' y ejecute la exportación.

En el nuevo servidor, importe el archivo zip exportado de la misma forma.

Zymotik
fuente
pero toma todos los archivos. ¿Hay alguna manera de omitir tomar los archivos? si, por ejemplo, migra un servidor FTP, intenta recoger todos los archivos y comprimirlos.
RayofCommand
2
@RayofCommand: al seleccionar las opciones de implementación, puede borrar la lista "Contenido", entonces el paquete no incluye todos los archivos.
Zhaph - Ben Duguid
1
Pero solo cuando se implementa sitio por sitio ... no para un movimiento de servidor completo.
Ethan Allen
1
Después de instalar MS Web Deploy en el servidor de destino (IIS8), la Consola de administración de IIS no contiene ninguna de las opciones de Web Deploy.
brianary
1
Tampoco tengo el menú "Implementar" después de instalar el paquete.
Abogado del Diablo
3

use appcmd para exportar uno o todos los sitios y luego vuelva a importar al nuevo servidor. Podría ser iis7.0 o 7.5. Cuando exporta usando appcmd, las contraseñas se descifran, luego se vuelven a importar y se vuelven a cifrar.

Jim
fuente
3

No puedo comentar el hilo debido a la falta de representante. Otro comentarista declaró que no podían migrar de una versión inferior a una versión superior de IIS. Esto es cierto si no fusiona algunos archivos, pero si lo hace, puede hacerlo, ya que acabo de migrar mi sitio IIS 7.5 a IIS 8.0 usando la respuesta publicada por chews.

Cuando se crea la exportación (II7.5), hay dos archivos clave (administración.config y applicationHost.config) que tienen referencias a recursos en el servidor IIS7.5. Por ejemplo, se hará referencia a una DLL con una clave pública y una versión específica de 7.5. Estos NO son los mismos en el servidor IIS8. La configuración de las funciones también puede diferir (me aseguré de que las mías fueran idénticas). Hay algunas características nuevas en 8 que nunca existirán en 7.5.

Si es lo suficientemente valiente para fusionar los dos archivos, funcionará. Tuve que desinstalar IIS una vez porque lo arruiné, pero lo obtuve la segunda vez.

Usé una herramienta de combinación (Beyond Compare) y sin algo equivalente sería un PITA enorme, pero fue bastante fácil con una buena herramienta de diferencias (cinco minutos).

Para realizar la combinación, los archivos 8.0 deben diferenciarse de los archivos 7.5 exportados ANTES de intentar una importación. En su mayor parte, los archivos 8.0 necesitan sobrescribir las cosas específicas del servidor en los archivos 7.5 exportados, mientras dejan las cosas específicas del grupo de aplicaciones / sitios.

Encontré que Administration.config era casi idéntico, sin la información de versión de muchas entradas. Este fue fácil.

ApplicationHost.config tiene muchas más diferencias. Algunas entradas están ordenadas de manera diferente, pero por lo demás idénticas, por lo que tendrá que seleccionar cada diferencia y averiguarla.

Puse mis archivos de exportación 7.5 en la carpeta System32 \ inetsrv \ config \ Export antes de fusionarlos.

Fusioné DE la carpeta System32 \ inetsrv \ config a la carpeta System32 \ inetsrv \ config \ Export para los dos archivos que mencioné anteriormente. Presioné todo en los archivos FROM, excepto las etiquetas / elementos específicos del sitio (por ejemplo, grupos de aplicaciones, metadatos personalizados, sitios, autenticación). Cabe destacar que también había muchos bloques de etiquetas de "ubicación" específicos del sitio que tenía que mantener, pero el nuevo servidor tenía su propio bloque de etiquetas de "ubicación" con valores predeterminados específicos del servidor que se deben mantener.

Por último, tenga en cuenta que si usa cuentas de servicio, estas contraseñas almacenadas en caché son basura y tendrá que volver a ingresarlas para sus grupos de aplicaciones. Ninguno de mis sitios funcionó inicialmente, pero todo lo que se requería era volver a ingresar las contraseñas para todos mis grupos de aplicaciones y estaba en funcionamiento.

Si alguien que puede comentar menciona esta publicación en el hilo, probablemente ayudará a alguien más como yo que tiene muchos sitios en un servidor con configuraciones complicadas.

Saludos,

Stuart

Stuart
fuente
De hecho, usé la respuesta de Stuart para una migración combinada, todavía no me gusta MS Web Deploy.
mastica
1

En mi caso, los archivos ya estaban copiados, encontré la forma más sencilla de seguir los pasos de esta guía: https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration-between -múltiples-instancias-iis /

Exporté AppPools / Websites, copié los archivos xml al servidor de destino y luego importé AppPools y luego los sitios web. Funcionó muy bien. Esta es también otra excelente opción para esta pregunta.

Ralph
fuente
esto solo me dio errores que indicaban que el grupo de aplicaciones predeterminado y el sitio web predeterminado no se podían sobrescribir ... no bueno.
devlin carnate
¿Intenta cambiar el nombre de los valores predeterminados por otro? y ver si se crean con el proceso explicado anteriormente?
Ralph
Esto funcionó para mí al pasar de IIS7.5 (2008) a IIS10 (2019). Appcmd inicialmente me dio errores en el 'Sitio web predeterminado' ya existente. El cambio de nombre no funcionó, así que eliminé el sitio web predeterminado. Luego, la importación se ejecutó sin errores.
MTAdmin