Translate to

Buscar

29 de abril de 2010

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.

    27 de abril de 2010

    Resolviendo HTTP request status Fails

    Usando Drupal 6.16 con XAMP 1.7.1 en Windows 7 Home Basic obtengo este error:


    HTTP request status Fails
    Your system or network configuration does not allow Drupal to access web pages, resulting in reduced functionality. This could be due to your webserver configuration or PHP settings, and should be resolved in order to download information about available updates, fetch aggregator feeds, sign in via OpenID, or use other network-dependent services.

    Al parecer, Drupal no logra encontrarse a sí misma. Pude solucionarlo entrando a C:\Windows\System32\drivers\etc\hosts y asegurándome que estuviera descomentada la línea:

    127.0.0.1       localhost

    Referencia: HTTP request staus fails

    Drush en Windows 7

    Drush es una utilidad Drupal que funciona en línea de comandos y permite descargar módulos, activarlos y desactivarlos, entre otras cosas.

    Aunque algunas personas no se sienten muy bien frente a una consola de comandos, en realidad puede ser tu mejor amiga. Cuestión de buscar conocerla un poco mejor.

    Una de las ventajas de los comandos escritos es que son muy fáciles de registrar. Basta con ir copiándolos a un archivo de texto. Luego, puedo reproducir fácilmente todos los pasos que hice. Es una manera de automatizar. Con los clics es un poco más complicado.

    Instalando Drush en Windows 7

    Usando Windows 7 Home Basic 64, Drupal 6.16, Drush 3.

    Drush es un conjunto de scripts que se tienen que colocar en un directorio que sea parte del path de ejecutables (la que en Windows está definida por la variable de entorno Path).

    Por ejemplo, descomprimo drush-All-versions-3.0.tar.gz y lo coloco en C:\bin\dev\drush\

    Me aseguro de que ese directorio esté en el path (WIN+PAUSA para información del sistema, Configuración avanzada del Sistema, Opciones avanzadas, Variables de entorno, Variables del sistema, Path), agregando al valor de Path el separador punto y coma (;) seguido del nombre del directorio:

    Path: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin;C:\bin\dev\xampp\php;C:\bin\system\gnuwin;C:\bin\dev\drush

    Observe que también está en el Path la ruta del PHP. Asegúrese de que también la tiene, porque Drush necesita a llamar a PHP en la línea de comandos.

    En Linux, Drush encuentra fácilmente algunos utilitarios que necesita para funcionar (como tar y wget), pero estos no están en Windows, así que hay que instalarlos.

    Estos se pueden buscar en la lista GNUWin32 Packages. Son BsdTar/LibArchive, Gzip, Wget, OpenSSL y algunas dependencias.

    En cada caso, uno puede elegir bajar un ejecutable para instalarlo, pero me pareció más simple bajar los zip y sacar de ellos sólo las cosas que necesito. Los enlaces de los zip son:
    En cada una encontré un directorio bin de donde extraje los exe y dll que me parecieron convenientes.

    De libarchive se obtienen bsdcpio.exe, bsdtar.exe y libarchive2.dll.
    De gzip, gzip.exe.
    De wget, wget.exe.
    De openssl, libssl32.dll.
    De las dependencias, bzip2.dll y zlib1.dll

    En las páginas oficiales de Drupal no menciona a OpenSSL, pero en mi caso el sistema pedía el libssl32.dll que ese paquete contiene.
    Otra cosa importante que hay que tener en cuenta en renombrar bsdtar.exe como tar.exe.

    En una máquina Windows 7 Home Professional con esto quedó listo, pero en la que tiene Windows 7 Home Basic tuve que darle a mi usuario full acceso al directorio drupal (clic derecho, Propiedades, Seguridad, elegir el usuario, Editar, elegir el usuario, en Control total, marcar Permitir).
    Si todo salió bien será posible colocarse en algún directorio drupal (por ejemplo cd C:\bin\xampp\htdocs\drupal) y ejecutar algún comando drush.

      Algunos comandos drush

      drush
      muestra las opciones
      drush st
      muestra el estatus de la aplicación drupal en la que estemos localizados
      drush dl nombre_modulo
      descarga el módulo nombre_modulo (la última versión pertinente) y la coloca en sites/all/modules
      drush en nombre_modulo
      habilita el módulo nombre_modulo

      En el caso de una aplicación multisite se usa algo como:

      drush -l localhost.site1
      drush -l localhost.site1 st
      drush -l localhost.site1 dl nombre_modulo

      y así por el estilo.

      Ojalá le sirva de ayuda.

      Más artículos