The Joomla! Community Magazine™

Migración compleja de Joomla! 1.5 con tiempo de inactividad mínimo

Escrito por | Tuesday, 01 April 2014 00:20 | Publicado en Abril 2014
Joomla 1.5 no tiene soporte por parte del proyecto Joomla desde hace bastante tiempo. A pesar de esto, aún se puede seguir usando Joomla 1.5, pero ya no saldrán más actualizaciones de seguridad. Además, Joomla 2.x y Joomla 3.x tienen muchas características nuevas y muchas mejoras, que hacen que no sea necesario estar en una versión antigua como es la 1.5. Una vez que usamos un Joomla 2.x o 3.x, gestionar un sitio web Joomla 1.5, realmente hace que uno se sienta anticuado y es en ese momento que nos damos cuenta lo mucho que realmente mejoró Joomla.

Deberían realmente migrar los sitios web Joomla 1.5 a una versión de Joomla que tenga soporte. Desafortunadamente, todavía hay muchos sitios web Joomla 1.5 en el mundo, debido a varias razones. No hay tiempo, no hay presupuesto, no hay motivación, etc.

A veces, una de las razones, es la complejidad de la migración. Recientemente, debía migrarse un sitio web Joomla 1.5 con unas condiciones complejas. Un gran reto, del cual me gustaría compartir los conocimientos adquiridos para ayudarle a migrar los sitios web Joomla que pueda tener.

Sitio web Joomla “Exact Netherlands”

Exact es un proveedor líder mundial de software de negocio y proporciona una oferta completa de ERP para pequeñas y medianas empresas. Exact está usando Joomla para muchos de sus sitios web desde hace varios años. La página web Exact Netherlands fue creada con Joomla 1.5 y necesitaba migrarse.

El sitio web es uno de los mayores en Holanda y es uno de las principales herramientas de marketing, comunicación y ventas de Exact. Exact, tiene una gran importancia, ya que debe ser un sitio web estable que esté siempre disponible para sus visitantes. Por esta razón, el entorno de alojamiento es completamente redundante, por ejemplo.

Muchos editores de contenido trabajan diariamente en la página web, la cual está en constante movimiento. El sitio web utiliza varias extensiones (personalizadas) y contiene un gran número de elementos de menú, artículos y módulos.

Grandes requisitos para la migración

Para la migración, se levantaron grandes requisitos: migrar el sitio web en 1,5 días y dos horas era el tiempo de inactividad máximo permitido durante la noche. El resultado esperado es un sitio web con un diseño idéntico, funcionalidades idénticas, URLs idénticas, menús idénticos, artículos idénticos, etc, pero funcionando para Joomla 2.5. En resumen: el visitante no debe ver o experimentar las diferencias de la web entre Joomla 1.5 y Joomla 2.5.

Pero, ¿cómo lograr eso? Una "típica" migración en Joomla (hacer una copia, migrar, hacer algunos ajustes y ponerlo en línea) no era una opción para Exact. Esto tomaría demasiado tiempo y la copia de la página web para la migración estaría obsoleta en cuestión de horas. 

Típica migración de Joomla

Para obtener una buena visión general de la migración, el proyecto comenzó con una migración típica. Para migrar los datos del núcleo de Joomla yo prefiero usar la extensión SP Upgrade. Esta extensión de pago se instala en una nueva instalación de Joomla 2.5, sin los datos de ejemplo. Todos los 1.500 artículos, 650 elementos de menú y 950 módulos se importaron con esta extensión.

El sitio web utiliza varias extensiones de terceros, por suerte, todas con una versión de Joomla 2.5 disponible. Estas extensiones se migraron al copiar las tablas de la base de datos de la 1.5 a la base de datos de Joomla 2.5, algo que se puede hacer con SP Upgrade, y luego, instalar las extensiones. Las extensiones detectan las estructuras obsoletas de la base de datos y las actualizan si es necesario. La plantilla, ya tenía una versión para Joomla 2.5.

Nuevas características, nuevos ajustes

Hasta ahora, todas las medidas forman parte de una migración típica de Joomla. Los datos de la página web ya se han migrado, pero cuando comprobamos la página web, esta aún no se veía. Esto lo causan a menudo los diferentes o nuevos ajustes en Joomla, cuando lo comparamos con versiones anteriores de Joomla. Un ejemplo típico es el módulo de menú de Joomla. En Joomla 1.5 se puede configurar para mostrar el nivel del 0 al 3, en Joomla 2.5 es necesario configurar el nivel del 1 al 4 para conseguir el mismo resultado. El nivel 0 ya no existe en Joomla 2.5.

Normalmente uno comprueba todos estos ajustes y se hacen los cambios necesarios. Dependiendo del tamaño de la página web, puede tardar horas o incluso días. Una vez que todo se comprueba y se ajusta, el sitio está listo para ponerlo online. Esta parte de la migración es el principal problema para Exact, se necesita mucho tiempo para ajustar todo y es demasiado impredecible.

Un script de migración personalizado

Debe quedar claro que se necesitan los datos y los ajustes de la configuración para asegurarse de que la versión 2.5 de Joomla va a ser idéntica a la versión 1.5. En lugar de hacer los cambios a través de la interfaz de Joomla, los cambios se hacen directamente en la base de datos, manteniendo el seguimiento de los mismos.

Todos estos cambios se han incorporado en un script personalizado que consta de un conjunto de consultas SQL. Recoger todos estos ajustes necesarios tomará tiempo, pero una vez que se ha completado la secuencia de comandos, las consultas SQL se ejecutan en segundos.

Cambios en los niveles del menú

Vamos a crear un simple script de migración personalizado y utilizar los ajustes de configuración de los niveles de los módulos como ejemplo. Creamos un archivo llamado migrate.php y lo colocamos en la raíz del sitio web. Añadimos el código de abajo en ese archivo. El código cambiará los módulos que tengan los ID 233, 294 y 357. Los parámetros de estos módulos se modifican en un bucle, y después se guardan en la base de datos. El "Nivel Inicial" del módulo con ID 233 se cambia de "2" a "3". Como ejemplos adicionales, se le añade un valor a la opción "Seleccionar menú" para el módulo con ID 294 y el texto "Usted está aquí" se ajusta en "Ocultar" para el módulo de breadcrumbs con ID 357.

define('_JEXEC', 1);
// Conectarse a Joomla
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
require_once JPATH_BASE . '/includes/framework.php'; // Database connection
$db = JFactory::getDBO(); /**
* Cambios en módulos
*/

// Obtener los módulos que necesitan modificarse
$query = $db->getQuery(true);
$query->select('*')
->from('#__modules')
->where('id IN (233,294,357)');
$db->setQuery($query);
$modules = $db->loadObjectList('id'); foreach($modules as $module)
{
$module->params = json_decode($module->params);
} // Cambiar nivel de inicio
if ($modules[233]->params->startLevel == 2)
{
$modules[233]->params->startLevel = 3;
echo('Module [233]: startLevel: 3
');
} // Establecer la selección del menú
if (empty($modules[294]->params->menutype))
{
$modules[294]->params->menutype = 'mainmenu';
echo('Module [294]: menutype: mainmenu
');
} // Ocultar del módulo breadcrumb "Usted está aquí"
if (!$modules[357]->params->showHere)
{
$modules[357]->params->showHere = 0;
echo('Module [357]: showHere: 0
');
} // Guardar los nuevos parámetros del módulo
foreach($modules as $id=>$module)
{
$params = json_encode($module->params);
$mod = new JObject();
$mod->id = $id;
$mod->params = $params;

$result = $db->updateObject('#__modules', $mod, 'id');
}

El script completo lo puedes ver en: https://gist.github.com/sanderpotjer/9311435

Cambios específicos en extensiones

Estos ajustes se pueden hacer en cualquier parte de la base de datos. Para la extensión ZOO, todos los elementos necesitan ajustarse en la configuración de acceso. Debido a la migración, los artículos no son visibles, y obviamente no es la intención. Puedes añadir el siguiente código al script de migración para garantizar que el acceso de los elementos de ZOO se corrigen en la base de datos.

/**
* Cambios en el componente
*/

// ZOO Arreglo de los accesos
$query = $db->getQuery(true);
$fields = array('access=1');
$conditions = array('access=0');
$query->update($db->quoteName('#__zoo_item'))->set($fields)->where($conditions);
$db->setQuery($query); $result = $db->query();
echo('ZOO: Access set to 1
');

El script completo lo puedes ver en: https://gist.github.com/sanderpotjer/9311435

Reducir drásticamente el tiempo de migración

Probablemente puede imaginar que el script para la migración, es mucho más grande, pero puede hacerse una idea de la potencia de un script de migración personalizado: todas las acciones que se pueden realizar normalmente para una migración en el backend de Joomla se hacen en cuestión de segundos, en lugar de horas o días. Esto reduce drásticamente el tiempo necesario para la migración, algo que vendría muy bien para la migración de la página web Exact Netherlands.

Una ventaja adicional del script de migración es que se puede probar y mejorar la migración repetidamente hasta lograr el resultado deseado.

Joomla 2.5 básico

Además de los cambios en la base de datos, a menudo es necesario hacer cambios en los archivos como tal, como los override en la plantilla. Esto se hace durante el proceso de prueba, dando lugar a una instalación básica de Joomla 2.5 que incluye todos los archivos necesarios para la versión final de Joomla 2.5 de la página web.

Hacer pruebas exhaustivas del script de migración personalizado cada vez que se utiliza una copia nueva de una instalación básica de Joomla 2.5. De este modo, la migración está bien preparada y se eliminan las sorpresas inesperadas durante la migración final.

El gran día de la migración

Después de semanas de preparativos, estábamos listos para el día de la migración final. Se hicieron varias migraciones de prueba y la instalación básica de Joomla 2.5 se preparó en una subcarpeta del dominio. Todo estaba listo para la migración final de la página web, para lo cual se utilizaron los siguientes pasos: 

  1. Copia de seguridad de la versión 1.5 del sitio.
  2. Poner el sitio exact.nl offline
  3. Migrar los datos del núcleo de Joomla usando SP Upgrade (+ / - 1 minuto)
  4. Copiar las tablas de las extensiones para Joomla 2.5 (+ / - 1 minuto)
  5. Llevar a cabo las operaciones en el sitio, con Joomla 2.5 (+ / - 2 minutos)
  6. Instalar las extensiones de terceros
  7. Ejecutar el scripts de actualización para las extensiones de terceros
  8. Iniciar la indexación del contenido para el Buscador Inteligente de Joomla
  9. Resolver algunos problemas de permisos con el ACL Manager
  10. Ejecutar script de migración personalizado (+ / - 0.5 minutos)
  11. Mover los archivos del sitio web Joomla 1.5 a la carpeta “archivo” (+ / - 0.5 minutos)
  12. Mover los archivos del sitio web Joomla 2.5 a la carpeta raíz (+ / - 0.5 minutos)
  13. Cambiar las rutas para /tmp/ y /log/ en el archivo configuration.php y eliminar el script de migración personalizada del servidor (+ / - 0.5 minuto)
  14. Poner el sitio exact.nl online

Exitosa migración de Joomla en seis minutos 

Como se puede ver, la página web Exact Netherlands estuvo fuera durante seis minutos. Durante este tiempo de inactividad, fue migrada con todos sus datos de Joomla 1.5 a Joomla 2.5.

Los visitantes no notaron ninguna diferencia, entre el anterior sitio, y el actual con Joomla 2.5. Los editores de contenido, los cuales hicieron cambios en el sitio web con Joomla 1.5 ese mismo día, vieron una administración renovada después de haber iniciado sesión, pero encontraron todos los cambios hechos en el sitio web migrado. Sin pérdidas de datos.

Era necesario celebrar el éxito de la migración, con tan poco tiempo de inactividad. Para ello, horneamos este excelente plato Joomla:

joomla-stroopwafels

Algunos apuntes para tener en cuenta: 

  1. Limpieza: Asegúrese de que el sitio web esté completamente limpio, eliminar artículos, categorías, módulos y menús que ya no están en uso y vaciar la papelera antes de la migración.
  2. Copia de seguridad realizada y probada: Haga siempre una copia de seguridad de la página web, comprobando si la restauración de la copia de seguridad está funcionando correctamente.
  3. Prueba, prueba, prueba y prueba: Estoy seguro de que no te gustan las sorpresas durante una migración. Sepa qué va a pasar, probando siempre una migración antes de migrar un sitio online.
  4. Reversión de emergencia: Asegúrese de que siempre se puede poner de nuevo la antigua versión de la página web en cualquier momento durante la migración.
  5. No mantenerse a raya: Migrar los sitios web Joomla que no tienen soporte ahora. Joomla 2.5 y Joomla 3.2 son las versiones actualmente soportadas. Son seguras, estables y tienen un montón de nuevas características y mejoras.

 


 

Artículo Original: Complex Joomla! 1.5 Migration With Minimal Downtime

Visto 2807 veces
Etiquetado como Spanish, Administrador
Carlos Rodríguez

Carlos Rodríguez

Me apasiona el desarrollo web, y todo lo hermoso y misterioso que conlleva esto. Siempre me ha gustado enfrentarme a problemas difíciles, ya que resolverlos es muy excitante. Colaboro con el proyecto Joomla en todo lo que pueda, y difundirlo es mi meta más preciada. 

Cambiar de idioma

¡Suscríbase!
Su correo electrónico:
Invalid Input

contribuya-articulo p