• Deployment de una aplicación realizada con prestashop

    Deployment de una aplicación realizada con prestashop

    Me he metido de lleno con esta herramienta para realización de tiendas.  Es cierto, que algunos puntos son un poco tediosos a la hora de modificar, pero creo que es una excelente herramienta para programar tiendas, siempre y cuando el desarrollo pueda ser flexible y la funcionalidad no demasiado concreta.

    Al ir programando desde local, me he dado cuenta que tampoco hay una herramienta propia para hacer un deployment al entorno de producción.  Tenemos que tener en cuenta que la base de datos en el caso de prestashop va muy ligada al código.  Es decir, como funciona por módulos. mucha información de éstos se guarda en la base de datos.  Para realizar el deployment del código y la base de datos, he creado un script que sincroniza los datos de local con los de producción, actualizando la base de datos de este último entorno con los de local.  IMPORTANTE, NO EJECUTAR ESTE SCRIPT SI EN PRODUCCIÓN HAY DATOS REALES QUE NO ESTÁN EN DESARROLLO, sino nos los cargaríamos.  Además es aconsejable realizar una copia de seguridad previa, tanto de datos como de código.

    El script está realizado en un mac osx.  Creo que es totalmente compatible con linux.  Lo único que habría que hacer previamente es introducir las variables correspondientes.

    sync.sh

    =====

    SSH_USER=XX
    SSH_DOMAIN=XX
    PATH_SITE_PROD=XX/YY

    PATH_MYSQLDUMP=/Applications/MAMP/Library/bin/mysqldump
    PATH_PROJECT=/XX/ZZ
    DATA_FOLDER=data
    DOMAIN=XX
    DB_LOCAL_USER=XX
    DB_LOCAL_DB_NAME=XX
    SHOP_ID=1

    $PATH_MYSQLDUMP -u $DB_LOCAL_USER -p -a $DB_LOCAL_DB_NAME > $PATH_PROJECT/$DATA_FOLDER/database.sql
    echo “UPDATE ps_shop_url set domain=’$DOMAIN’, domain_ssl=’$DOMAIN’ where id_shop_url=$SHOP_ID;” >> $PATH_PROJECT/$DATA_FOLDER/database.sql

    rsync –verbose –compress –recursive \
    –times –links –exclude “cache/smarty/compile” –exclude “.DS_Store” –exclude “config/defines.inc.php” –exclude “config/settings.inc.php” –exclude –exclude “sync.sh”  \
    . $SSH_USER@$SSH_DOMAIN:$PATH_SITE_PROD

    ====================================================

    Una vez ejecutado el script desde el servidor tenemos que ejecutar el siguiente comando para actualizar la BD:

     

    mysql -u USER_DB -p -D NAME_DB < PATH_PROYECT/data/database.sql