Moviendo Drupal

Pensaba que mover un sitio drupal era siempre fácil, pero no necesariamente.

El procedimiento báse consiste en:
  1. Preparar el sitio de origen (desactivar Clean URL y hacer Clear Cache)
  2. Hacer un backup de la base de datos del sitio de origen.
  3. Preparar el sitio destino (un sitio drupal básico) .
  4. Importar ese backup en la base de datos del sitio de destino.
  5. Copiar los archivos de los directorios modules y files que sea necesario.
Sin embargo, hay algunas cosas importantes que tener en cuenta. Principalmente si se trabaja con un sitio tipo multisite.
Multisite es un tipo de configuración de drupal que permite que varios sitios compartan el mismo motor drupal. Puede encontrar un poco más de información sobre esto en el post Resolviendo Drupal Multisite.
Cuando un sitio drupal sube un archivo, por ejemplo una imagen, guarda su ubicación en la base de datos, incluyendo el nombre del sitio. Así que si el sitio de destino tiene un nombre diferente, después de la importación tendrá problemas para ubicar los archivos. Por ejemplo, al tratar de mover un sitio tipo multisite llamado localhost.portal a otro llamado com.portal.

Además, en la tabla variable, el campo file_directory_temp guarda el valor del directorio temporal. En Windows puede ser algo como s:20:¨"C:\bin\dev\xampp\temp", pero en Linux es más bien algo como s:4:"/tmp".

Para resolver estas cuestiones, se puede agregar un paso al procedimiento:
2.5 Corregir en el backup de la base de datos las referencias site/nombre_origen por site/nombre_destino, y el valor de file_directory_temp. Algunas veces, una cadena va precedida de s:xx, donde xx representa la longitud de la cadena, y hay que tener cuidado de que xx tenga el valor correcto (aunque no me he puesto a investigar que pasa si no es así =P ).

Una forma de trabajar

Ahora tengo un poco más de cuidado al nombrar mis sitios localmente, para que sea más fácil moverlos a producción.

Por ejemplo, si mi sitio drupal es tipo multisite y su dirección es www.kobaonline.com/drupalab/portal/ , entonces requeriré un directorio sites/com.drupalab.portal.

Para que en mi Apache local pueda tener un sitio de esas características, necesito un dominio. Quizás podría usar definir un virtualhost, pero también se puede hacer con la configuración de Windows. Lo que yo hice fué agregar en C:\Windows\System32\drivers\etc\hosts la línea:

127.0.0.1        example.com
Por convención [RFC2606], example.com, example.net y example.org son dominios libres, así que parece que no hay problema si lo usamos localmente.
Después de hacer eso, puedo desarrollar localmente un sitio tipo multisite cuya dirección sea example.com/drupalab/portal/, que también requiere un directorio sites/com.drupalab.portal.

De ese modo, cuando mueva mi sitio a kobaonline.com, que está en un hosting Linux, sólo tendría que preocuparme por el valor del directorio temporal.

    Comentarios

    Entradas populares de este blog

    Debug con Xdebug y Aptana (y Notepad++)

    Drupal sí, drupal no

    CSS3 para mejorar el breadcrumb de un tema Zen