Subir cambios a servidor web en alojamiento compartido fácilmente

automatizar subida ficheros por ftpTratando de simplificar la subida de los cambios a un servidor web que sólo cuenta con acceso vía ftp (y la nefasta interfaz gráfica de cPanel) se me planteó la necesidad de encontrar una alternativa a rsyncssh (sólo ofrece un applet y no funciona).

Lo primero que se me ocurrió fue generar un archivo comprimido con las diferencias desde la última vez que subí a “producción” el proyecto y lo que tenía actualmente en “desarrollo” pero, por fortuna, en lugar de “inventar” me dio por buscar y he encontrado una simpática herramienta que me ha ayudado a automatizar el proceso reduciéndolo a lanzar una línea desde la terminal (weex dictados).

Curioseando por Internet, he encontrado la herramienta weex que gracias al uso de hashes y de su caché acelera y simplifica el procedimiento completo de subir cambios a un servidor.

uso de colores en la interfaz de weex

La idea es bien sencilla:

  • basta con definir en un fichero de configuración (ubicado en ~/.weex/weexrc) las distintas webs que estás manteniendo y,
  • cuando terminas de implementar alguna funcionalidad y/o corregir una incidencia le pides a weex que suba sólo los cambios a Internet (el se encarga de calcular qué ha cambiado y conectarse por ftp para dejarlo en su sitio)

Como referencia, y tras no encontrar ningún fichero de configuración de ejemplo (la ayuda proporcionada por man es muy completa pero hubiese agradecido un modelo sobre el que trabajar), os dejo el que he estado utilizando (con algunos cambios como el usuario/clave 😉 ) para facilitaros la tarea


[dictados]

Hostname = nuevoproyecto.servidor.es
LoginName = usuario_ftp
Password = mi_claveftp

SrcDir = /home/jasvazquez/Dropbox/proyectos/nuevoProyecto

IgnoreLocalDir = {
./pruebas
./.git
}
IgnoreLocalFile = {
composer.*
*.sh
*.sql
}

ChdirAtConnection = true
DestDir = /public_html

IgnoreRemoteDir = /home/dictados/public_html/model
IgnoreRemoteFile = .htaccess

[default]

ASCIIfile = {
*.php
*.htm
*.html
*.js
*.css
}

IgnoreLocalFile = {
*.bak
*.php_
*.md
}

Donde:

  • [dictados] es el único proyecto que tengo actualmente (puedes tener tantos como necesites
  • [default] es la configuración, por defecto, para todos los proyectos que gestiones con weex
  • Puedes evitar que se procesen tanto ficheros (IgnoreLocalFile) como directorios completos (IgnoreRemoteDir) tanto locales (xxxLocalxxx) como en el servidor remoto (xxxRemotexxx)
  • Puedes utilizar llaves (como en el caso de ASCIIfile) para evitar tener que repetir el parámetro para cada uno de los valores concretos (si quieres hacerlo no hay ningún problema)
  • Observa la posibilidad de usar caracteres comodín (como el *.sh)

Como hemos comentado antes, la ayuda del proyecto (vía man porque en la web brilla por su ausencia) es bastante buena y seguro que cubre las necesidades de la mayoría de nosotros (como es natural, yo me he limitado a aquellos que necesitaba) por lo que te recomiendo echarle un vistazo.

Conclusión

Forma cómoda y sencilla de poder subir los cambios que desarrollas en local a un servidor web que sólo te ofrece el acceso por FTP despreocupándote de recordar y/o anotar lo que has modificado.

Y tú…

  • ¿Cómo te las apañas en estos casos?
  • ¿Conoces alguna herramienta similar fácil de configurar y/o usar?
  • ¿Qué te parece la solución planteada?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s