patterns google deployment drupal vps

deployment - google - view module drupal



¿Cuál es la mejor estrategia de implementación de Drupal? (9)

Cualquier sistema de control de versiones (GIT, SVN) + Módulo de Features para implementar el código de Drupal + configuraciones personalizadas (tipos de contenido, campos personalizados, dependencias de módulos, vistas, etc.).

Como el módulo Deploy aún se encuentra en modo de desarrollo, es posible que desee utilizar el módulo de exportación de Nodo en Drupal 7 para implementar su contenido / nodos.

Estoy trabajando en mi primer proyecto de Drupal en XAMPP en mi MacBook. Es un prototipo y recibe comentarios positivos de mi cliente.

Voy a implementar el proyecto en un VPS Linux dos semanas después. ¿Hay una mejor manera de ''volver a hacer todo en el servidor desde cero?

  • instalar Drupal
  • descargar módulos (CCK, Vistas, Fecha, Calendario)
  • crear el contenido
  • ...

Gracias


Hemos tenido una amplia discusión sobre esto en mi lugar de trabajo, y la forma en que finalmente nos decidimos fue empujando las actualizaciones de código (incluidos los módulos y temas) desde el desarrollo hasta la etapa de producción. Estamos utilizando Subversion para esto, y está funcionando bien hasta ahora.

Lo que es particularmente importante es que automatice un proceso para alejar la base de datos de la producción, de modo que los desarrolladores puedan mantener sus copias de la base de datos lo más cerca posible de la producción. En un entorno de misión crítica, debe estar absolutamente seguro de que la actualización de un módulo no va a mangar su base de datos. El proceso que usamos es el siguiente:

  1. Instale un módulo en el servidor de desarrollo.
  2. Tome nota de los cambios y actualizaciones que sean necesarios. Si hay algún enganche, invierta y vuelva a hacer hasta que tenga un proceso sólido y sin errores.
  3. Pon a prueba tus cambios! Repita su proceso de prueba como un usuario normal, con sesión iniciada y nuevamente como un usuario anónimo.
  4. Si el proceso de actualización involucró algo más que ejecutar update.php, entonces escriba un script para hacerlo.
  5. Copie la base de datos de producción en su servidor de transición y realice los mismos pasos inmediatamente. Si falla, diagnostique el error y vuelva al paso 1. De lo contrario, continúe.
  6. Pon a prueba tus cambios!
  7. HAGA UNA COPIA DE SEGURIDAD DE SU BASE DE DATOS DE PRODUCCIÓN Y TENGA EN CUENTA LA REVISIÓN QUE HAYA COMPROBADO DE SVN.
  8. Ponga su producción Drupal en modo de mantenimiento, ejecute "svn update" en su árbol de producción y siga su proceso de actualización.
  9. Saque a Drupal del modo de mantenimiento y pruebe todo (como administrador, usuario habitual y anónimo)

Y eso es. Una cosa que nunca se puede esperar para un marco de trabajo comunitario como Drupal es poder mover su base de datos de las pruebas a la producción después de que se active. A partir de ese momento, todos los movimientos de la base de datos van desde la producción hasta la prueba, lo que complica un poco el proceso de implementación. ¡Ten cuidado! :)


Me sorprende que nadie haya mencionado el módulo Deployment . Aquí hay un extracto de su página de proyecto:

... diseñado para permitir a los usuarios configurar fácilmente el contenido de un sitio Drupal a otro. La implementación administra automáticamente las dependencias entre entidades (como las referencias de nodos). Está diseñado para tener una API enriquecida que se puede ampliar fácilmente para usarla en una variedad de situaciones de almacenamiento de contenido.


No trabajo con Drupal, pero trabajo mucho con Joomla. Implemento archivando todos los archivos en la raíz web (tar y gzip en mi caso, pero podría usar zip) y luego cargando y expandiendo ese archivo en el servidor de producción. Luego tomo un volcado de SQL (mysqldump -u usuario -h host -p nombrebasededatos> dump.sql), lo cargo y uso el comando inverso para insertar los datos (mysql -u produser -h prodDBserver -p prodDatabase <dump.sql ) Si no tiene acceso a shell puede cargar los archivos de uno en uno y escribir un script PHP para importar dump.sql.


Si no está familiarizado con la implementación (y / o con Drupal), asegúrese de hacer todo de una sola vez. Debe tener mucho cuidado una vez que hay usuarios que efectúan contenido mientras está trabajando en otra copia.

Es posible dejar las tablas relacionadas con el contenido real, la taxonomía, los usuarios, etc. en lugar de su estructura. Luego presione los relacionados con la configuración. Sin embargo, esto agrega un orden de magnitud de complejidad.

Disculpas si el despliegue es algo viejo para ti, así que esto es vagamente insultante.


Un par de consejos:

  • Use el control de fuente, NO FTP / etc., Para los archivos. No importa lo que uses; tendemos a hacer girar una cuenta de subversión de Unfuddle.com para cada cliente, de modo que también tienen un lugar para registrar errores, pero el primer paso fundamental es conseguir que el árbol de código fuente completo de su sitio controle las versiones. Cuando se realizan cambios en el servidor de prueba o en el servidor de ensayo, puede ver si funcionan, si se confirma y luego se actualiza en el servidor activo. Los rollbacks y la implementación son mucho más simples. Para clústeres de múltiples webheads, puede repetir el proceso o rsync desde un único servidor "canónico".

  • Sin embargo, si usas SVN, también puedes usar las funciones de CVS de Drupal y otros módulos / temas y los metadatos SVN / CVS podrán vivir uno junto al otro felizmente.

  • Para carpetas voluminosas como el directorio de archivos, use un enlace simbólico en la ubicación "adecuada" para apuntar a un directorio del lado del servidor fuera de la raíz web. Eso permite que el repositorio de control de origen incluya todo el código y un enlace simbólico, en lugar de todo el código y todos los archivos que los usuarios cargaron.

  • Las bases de datos son más complicadas; limpiar el DB dev / staging y ponerlo a vivir es más fácil para el lanzamiento inicial, pero hay algunas arrugas al hacer actualizaciones incrementales de DB si los usuarios en el sitio en vivo también están generando contenido.

Hice una presentación sobre las mejores prácticas de implementación de Drupal el año pasado. Siéntase libre de revisar las diapositivas.


Una buena estrategia que he encontrado y que estoy implementando actualmente es utilizar una combinación del módulo de implementación para migrar mi contenido, y luego continuar con dbscripts para fusionar y actualizar el núcleo y los módulos. Se encarga de la fusión de bases de datos, incluso si tiene contenido en vivo, seguridad y actualizaciones de módulos, y actualmente tengo la configuración de la mina para trabajar con svn.


Usamos el módulo de características extensamente para capturar características y luego instalarlas fácilmente en el sitio de producción.


Features .module es una herramienta extremadamente poderosa para administrar los cambios de configuración de Drupal.

Los tipos de contenido, las configuraciones de CCK, las vistas, las variables de Drupal, los contextos, los ajustes preestablecidos de la memoria de imagen, los menús, taxonomías y permisos se pueden transferir a una función que se puede consultar en el control de la versión. A partir de ahí, la implementación de un nuevo sitio o el envío de cambios a uno existente se puede administrar fácilmente con la interfaz de usuario de funciones o Drush.

Asegúrese de instalar Strongarm.module para exportar la configuración de drupal que se almacena en su tabla de variables. También puede incluir contenido / nodos estáticos (es decir: sobre nosotros, preguntas frecuentes, etc.) en Funciones instalando uuid_features.module.

Sin lugar a dudas, esta es la mejor manera de trabajar con otros desarrolladores en el mismo sitio, y de trasladar su sitio de Desarrollo a Pruebas a Estadificación y Producción.