¿Cómo se actualiza un servidor drupal en vivo sin sobrescribir los contenidos?

9

Tengo un sitio en vivo y la gente está poniendo contenido activamente. Sin embargo, he tenido que hacer algunos cambios en el entorno de desarrollo, lo que me ha llevado un par de semanas. Los cambios requirieron la instalación de nuevos módulos y la eliminación de los antiguos, lo que, por supuesto, cambió el contenido y la estructura de la base de datos.

Mi pregunta es ¿cómo subo este sitio al entorno en vivo y actualizo la base de datos sin sobrescribir el nuevo contenido que los nuevos usuarios han agregado en las últimas dos semanas?

blue928
fuente
Supongo que tendrá que bloquear el sitio en vivo, es decir, "ningún usuario puede aplicar actualizaciones", sincronizar el sitio en vivo con su servidor de desarrollo, aplicar sus cambios y sincronizar nuevamente. Tengo la siguiente configuración: Servidor de desarrollo (solo para agregar código de actualizaciones, etc.), un servidor maestro: el servidor de desarrollo se implementa en esto (donde los usuarios agregan contenido) y un servidor en vivo (el maestro se implementa en este).
Cyclonecode

Respuestas:

3

Thomas Zahreddin tiene razón. Pero dependiendo de lo que haya cambiado ("me ha tomado un par de semanas ..."), hay más cosas a considerar.

  1. ¿Agregaste / cambiaste los tipos de contenido? Intenta exportarlos e importarlos. Asegúrate de no perder contenido.
  2. ¿Agregaste / cambiaste las vistas? Puede exportarlos e importarlos de forma segura.
  3. Actualizaciones de módulos. Pruébelos en los datos actuales. Siempre existe la posibilidad de que los datos del usuario rompan una actualización.
  4. Cambios en la configuración del módulo. Si no es demasiado, toma notas y vuelve a hacerlas. De lo contrario, pruebe las características y los módulos de brazo fuerte . Otra opción es averiguar los nombres exactos de las variables y escribir los valores en el settings.php.
  5. Tienes contenido adicional en el sistema de desarrollo. Aquí las cosas se ponen realmente peludas. Puede probar el módulo de implementación o la exportación de nodos . Pero no son balas de plata.

Si no tiene un caso trivial, sugiero probar su procedimiento de antemano. Y, por supuesto, realice copias de seguridad de archivos y datos antes de comenzar en el sistema en vivo. ( Copia de seguridad y migración es útil aquí).

BetaRide
fuente
1

Tienes que comprobar lo que quieres cambiar:

  • contenttype or bundle -> inserte el nuevo contenttype | bundle, exporte e importe los nodos, o cambie el contenttype | bundle en la base de datos para estos registros
  • nombre de campos individuales y su aparición en tipos de contenido | paquetes -> por ejemplo, con interfaz de administrador o
  • valores en campos -> tarea más difícil: puede hacerlo a través de SQL en la base de datos (probablemente) o con un módulo como migrar
Thomas Zahreddin
fuente
1

Tengo el mismo procedimiento que manejar en el trabajo cuando actualizo los sitios web de Drupal. El mayor problema es que Drupal realmente no hace un gran trabajo al mantener separados el contenido y las lógicas en su base de datos.

Las respuestas dadas por Thomas Zagreddin y BetaRide serían suficientes para darle la mejor oportunidad de completar la migración con éxito. Realmente no hay santo grial sobre este tema.

Sin embargo, me gustaría darle un consejo de desarrollo que me ahorra muchos problemas para mantener nuestros sitios web actualizados: trate de mantener sus lógicas tanto como sea posible en su código (módulos / temas). Por ejemplo, trate de evitar crear vistas tanto como sea posible. A veces tendrá que hacerlo, pero eso requerirá otra actualización de la base de datos ...

Utilice la gestión de control de fuente!

Si puede mantener todo bajo el código (por supuesto, no siempre podrá hacer esto), simplemente puede usar un SCM como Git , SubVersion o Mercury para actualizar su fuente, y en el peor de los casos volver a un versión anterior de su fuente si su actualización no funciona según lo planeado.

Y, por supuesto, como se aborda en las respuestas anteriores: copia de seguridad, copia de seguridad, copia de seguridad, copia de seguridad ...

Ambidex
fuente
0

Para la mayoría de los cambios, puede usar el Módulo de características. Este módulo solo puede cambiar los cambios, ¿qué ha hecho en el entorno local?

De lo contrario, puede usar este hermoso módulo Copia de seguridad y migración. Solo instale este módulo en línea primero, luego realice la copia de seguridad de todo el contenido existente o la base de datos, luego implemente esto en local. A continuación, realice cambios en el local que desee, vuelva a hacer una copia de seguridad de su local y luego impleméntelo en línea.

Rishi
fuente
0

Acabo de tener el mismo problema. Para resolverlo, noté que el único contenido que tenía en vivo que no estaba en el desarrollador eran nuevos detalles del usuario. Simplemente ingresé a la pestaña Personas de admin y copié los detalles de las personas en dev. En dev simplemente los escribí sin ningún tipo de automatización. Entonces, la próxima vez que cargue desde el desarrollador, los detalles de las personas serán correctos y no se sobrescribirán.

Michael O'Callaghan
fuente
Bienvenido a las respuestas de Drupal! Si bien estoy seguro de que lo anterior funcionó muy bien para usted, no suena muy robusto. Escribir cosas es propenso a los errores tipográficos, y si hay nuevas cosas en vivo la próxima vez, se sobrescribirán (a menos que recuerde volver a escribirlas).
Radical libre