none
Mejores prácticas para exportar un site de un servidor a otro RRS feed

  • Pregunta

  • Hola a toda la comunidad,

    Me encuentro en la fase final del proyecto que llevo haciendo casi 5 meses, y ahora tengo una tarea clave para el buen funcionamiento de la aplicación que he desarrollado: Realizar la exportación de la intranet de mi servidor de desarrollo (en mi trabajo) al servidor de producción (en cliente).

    Os voy a comentar primero las características:

    En mi trabajo tenemos un servidor Sharepoint Foundation 2010 en un servidor con Windows Server 2008 R2 y otro servidor con Windows Server 2008 R2 y con SQL Server 2008 R2 en otro servidor, así que nuestra granja de servidores está compuesta por estos dos.

    En el cliente Disponemos de un servidor Sharepoint Foundation 2010 con Windows Server 2008 R2, otro servidor con Windows Server 2008 R2 y con SQL Server 2008 R2 y otro servidor, en la DMZ, para la extranet con Windows Server 2008 R2 y Sharepoint Foundation 2010.

    Como veis la configuración de la granja es casi idéntica, con la salvedad de que en el cliente hay un servidor más para separar la intranet de la extranet a traves de la DMZ.

    Mi pregunta es cual sería la mejor práctica a realizar para migrar la aplicación web de la intranet de nuestro servidor de desarrollo en el trabajo al servidor en el cliente.

    He visto que hay 3 tipos de copias de seguridad, yo he realizado las 3, que son:

    -Copia de seguridad y restauración del conjunto de servidores, la he realizado, aunque me ha dado errores al guardar las bases de datos de contenido de todos los sites, supongo que será un tema de permisos, aunque lo he realizado mediante el usuario administrador de la granja. Me ha ocupado 7,67 gb

    -Copia de seguridad de la colección de sitios, no me ha dado ningún error y me ha ocupado unos 67 mb. El comando para "recuperarlo" en otro servidor es  Restore-SPSite.

    -Copia de seguridad mediante "Exportar un sitio o una lista", no me ha dado ningún error y me ha ocupado unos 7 mb. El comando para "recuperarlo" en otro servidor es Import-SPweb.

    Ahora bien, una vez tengo estas 3 copias realizadas me gustaría saber cual de ellas debo utilizar en el servidor del cliente para que luego tenga los mínimos errores y complicaciones posibles a la hora de desplegar y probar todo, teniendo en cuenta lo siguiente:

    -Hemos realizado varios desarrollos en Visual Studio 2010, webparts, páginas, eventos, etc.

    -Hemos utilizado librerías gratuitas, sobre todo de lectura de PDF.

    -No me importa que el contenido de listas, bibliotecas y demás elementos se queden sin datos, de hecho es mejor migrarlo y que todo esté vacío.

    Si alguien puede orientarme un poco sobre que pasos tengo que dar le estaría muy agradecido, ya que tengo miedo de elegir alguna opción que no sea la correcta y "romper" todo.

    Muchas gracias y un saludo


    Sergio Gallego
    miércoles, 16 de febrero de 2011 12:31

Respuestas

  • Efectivamente, si la complejidad está en un site, guardarlo como template te puede resultar adecuado (aunque quizá te surja algún que otro problemilla).

    En cualquier caso, si éste era tu primer proyecto con SharePoint y dices que a partir del siguiente vas a plantearte bien el despiegue, perfecto. Normalmente se tarda más de un proyecto en detectar esta necesidad, o por lo menos no se tiene hasta que no llega un problema serio ;)

    Suerte, y ya nos contarás!

    Saludos,
    David Martos | http://david-martos.blogspot.com | @davidmartos

    miércoles, 16 de febrero de 2011 16:56

Todas las respuestas

  • Hola Sergio,

    si te soy sincero, no consideraría ninguna de las tres opciones como mecanismo de despliegue. Los dos primeros están indicados para recuperación de errores y no para despliegue, y el tercero está indicado para crear plantillas de sitio (no de colección de sitios).

    Para desplegar un proyecto en un servidor de producción lo que deberías hacer es disponer de uno o varios WSPs que, junto con algún script de soporte (powershell o cmd dependiendo del tipo de tarea a realizar) monten toda la estructura que necesitas. En un proyecto SharePoint, es importante tener esto en cuenta al inicio del proyecto, puesto que es una tarea para nada trivial, y donde entra en juego otro entorno que podríamos llamar "integración" y dónde lo que se prueba es el despliegue de estos paquetes de manera conjunta antes de ir a producción.

    Dicho esto, también te tengo que decir que desplegar una copia de seguridad de desarrollo es una práctica bastante común y, si lo es, es porque en cierta manera funciona. Eso sí, o bien los entornos son exactamente iguales (me refiero a que son clones, con topologías exactas) o bien lo que restauras es la BBDD de contenidos y después haces algún que otro "retoque" para que las cosas funcionen.

    Saludos,
    David Martos | http://david-martos.blogspot.com | @davidmartos

    miércoles, 16 de febrero de 2011 13:27
  • Hola David,

    Gracias por contestar. Me acabas de "matar", porque pensaba que alguna de estas 3 formas era la correcta para hacer lo que necesito.

    El caso es que no tenía preparado ningún script de powershell ni de cmd para realizar lo que necesito, y se me antoja dificil andar haciendo uno a uno para cada lista, campo de listas, bibliotecas, soluciones propias y de terceros... He pecado de novato en esto ya que es mi primer proyecto con Sharepoint 2010.

    No sé si habrá alguna forma, de traspasar todo el site collection, me refiero a todas las listas, bibliotecas y demás, ya que en algunas de las soluciones que he desarrollado en Visual Studio accedo mediante "HardCode", con los nombres de las listas y los campos de las mismas, y el tema de desplegar las soluciones puedo hacerlo mediante powershell, que aunque me lleve más tiempo, lo puedo ir haciendo una a una e ir probando.

    ¿Sabéis si mediante alguno de los 3 métodos anteriormente descritos puedo "copiar" la estructura del site de un servidor a otro?

    Gracias nuevamente y un saludo


    Sergio Gallego
    miércoles, 16 de febrero de 2011 14:31
  • Es un sitio o una colección de sitios?

    Si es un sitio, la tercera opción puede resultarte bien siempre y cuando tengas una topología similar y que instales los mismos componentes Es decir, si instalas una solución de terceros que incluye una característica, o un ensamblado, esto no se va a exportar en el site template.

    Si es una colección de sitios, la única alternativa es la número 1, aunque yo haría un backup de la bbdd de contenidos y no un backup de SharePoint. De todas maneras, según lo que tengas montado, exportar la estructura (sitios, subsitios, listas, etc.) lo puedes hacer con powershell de una manera simple, siempre y cuando sean plantillas de sitio y listas standard. A partir de ahí puedes introducir tus cambios de manera controlada.

    La verdad es que es una tarea compleja y que se suele abordar al inicio del proyecto. En cualquier caso, pese a que pienses que llegas tarde, te recomiendo un pasito atrás y planteártelo ahora. Si piensas que ahora es tarde, plantéate qué pasará dentro de N meses cuando el portal esté en producción con mucha información que no se puede perder. Quizá vale la pena hacer un inventario de todo lo que has hecho y plantearte el coste de montar un despliegue limpio de todo eso.

    Saludos,
    David Martos | http://david-martos.blogspot.com | @davidmartos

    miércoles, 16 de febrero de 2011 14:49
  • Hola nuevamente David,

    Gracias por tu rápida respuesta, es una colección de sitios, pero lo más importante y laborioso está en un sitio, el resto de sitios que pertenecen a este principal no tienen desarrollo y son listas y bibliotecas estándar de Sharepoint.

    Creo que me voy a decantar por la 3ª opción, y aunque tenga que desplegar las soluciones de terceros nuevamente una a una no me importa tanto, ya que no son muchas.

    Creo que después de hacer esto voy a montar un despliegue limpio para que no me vuelva a pasar, y a partir de ahora, lo haré con todos los futuros proyectos.

    Muchas gracias por tu ayuda, ya te comentaré como me ha ido.

    Saludos


    Sergio Gallego
    miércoles, 16 de febrero de 2011 14:57
  • Efectivamente, si la complejidad está en un site, guardarlo como template te puede resultar adecuado (aunque quizá te surja algún que otro problemilla).

    En cualquier caso, si éste era tu primer proyecto con SharePoint y dices que a partir del siguiente vas a plantearte bien el despiegue, perfecto. Normalmente se tarda más de un proyecto en detectar esta necesidad, o por lo menos no se tiene hasta que no llega un problema serio ;)

    Suerte, y ya nos contarás!

    Saludos,
    David Martos | http://david-martos.blogspot.com | @davidmartos

    miércoles, 16 de febrero de 2011 16:56
  • Hola David,

    Ya he empezado con el despliegue, a priori no me dejaba hacer el import-SPWeb hasta que no he añadido, implementado y cargado todas las soluciones que utilizo (tanto las mias de VS2010 como las de terceros), una vez que he hecho eso me ha importado el site con algún que otro error.

    Ahora estoy revisando una a una todas las páginas, algunas están bien, a otras les faltan imagenes, porque debi poner la url por HardCode...vamos que tengo trabajo por delante.

    Ya os contaré cuanto me ha costado cuando termine, pero me da que va a ser más de lo que me hubiese costado si lo hubiese tenido planificado desde un principio.

    Gracias y saludos


    Sergio Gallego
    miércoles, 16 de febrero de 2011 17:03
  • Yo quiero hacer esto pero en un mismo servidor, me esta dando problemas al expotar por medio de un deploy content!
    miércoles, 5 de diciembre de 2012 17:52