Cómo actualizar ghost a la versión más reciente

Hola amigos hoy les voy a enseñar algo que me ha tenido con una gran intriga ya que no hay documentación sobre esto en español espero ser el primer sitio web que documente esto, y es algo muy interesante ya que ayuda a los que somos bloggers profesionales y no profesionales a estar actualizados a las versión más reciente de de nuestro blog, y es que cómo si fuera cosa fácil las documentaciones que hay en inglés solo explican por encima cómo que todos los que trabajan para la plataforma ghost fueran developers profesionales de node.js, pero no se preocupen yo les vengo a enseñar a Cómo actualizar ghost a la versión más reciente.

Bueno teniendo en cuenta que ya tenemos un blog con el sistema ghost instalado, y con mínimo un post, aunque en verdad no importa por que la actualización prácticamente no daña los post y no es necesario tener alguno escrito tenemos que seguir los siguientes pasos:

Teniendo en cuenta que este tutorial funciona prácticamente en Amazon cloud service como en digitalocean ya que los hosting compartidos con esta característica se actualizan solos al igual que el sistema premium de ghost, pero por algo son más caros que digitalocean o cualquier otro servicio de cloud computing. si tienes ghost en heroku u otro servicio puedes intentar hacer estos pasos pero te recomiendo que verifiques en la documentación o en los foros de ayuda para no perjudicarte.

Pasos para actualizar ghost a la versión más reciente.

  • Iniciamos sesión por medio de ssh a nuestro droplet, si no tienes uno tal vez te interese ver el siguiente artículo sobre cómo crear un blog con ghost.

  • Una vez iniciada sesión probamos los siguiente comandos: service ghost stop, service ghost start, service ghost restart y service ghost status. y por último apagamos el servicio con sudo service ghost stop para poder hacer la copia de respaldo

  • Si ninguno de los comandos anteriores nos dio error abrimos otra terminal, pero ahora no iniciamos sesión en ningún droplet, esta es para hacer una copia de respaldo y escribimos lo siguiente:

scp root@your_ghost_IP_address:/var/www/ghost/content/data/ghost.db .

sustituimos el texto por la ip de nuestro droplet y con ese comando se descarga a nuestra computadora una copia de seguridad de la base de datos.

ssh -n root@laipdetudroplet 'tar zcvf - -C /var/www/ghost/content/themes .' | cat - > ghost_themes.tar.gz

Esto crea una copia de seguridad de tus temas.

ssh -n root@laipdetudroplet 'tar zcvf - -C /var/www/ghost/content/images .' | cat - > ghost_images.tar.gz

Y esto crea una copia de seguridad de tus imágenes.

  • Una vez hecho esto nos vamos a la terminal donde estamos conecatados al droplet y lo volvemos a encender escribiendo: service ghost start.

  • Nos dirigimos a nuestro panel de administración de ghost y en la parte de labs. exportamos un archivo json con toda la información y configuración de nuestro blog

backup

  • En la terminal donde estamos iniciados en el droplet escribimos este comando:

sudo apt-get update && sudo apt-get install build-essential

  • Vamos con los siguientes comandos estos los tienes que escribir en orden tal y como los dejo en esta lista, se escriben uno después de terminado el anterior que nos sirven para entrar a la carpeta ghost y descargar la última versión y luego borrar lo que no sirve y copiar lo nuevo.
    service ghost stop
    cd /var/www/
    wget http://ghost.org/zip/ghost-latest.zip
    rm -rf ghost/core
    unzip -uo ghost*.zip -d ghost
    chown -R ghost:ghost ghost/*
    cd ghost
  • Luego instalamos las dependencias con el siguiente comando:

    npm install --production

Este comando instala todas las dependencias necesarias si en algún caso te sale un error como killed o que no se encuentran las dependencia o no se pueden instalar tienes que borrar la carpeta node_modules y volver a instalarlos con el anterior comando el procedimiento es el siguiente:

    npm cache clean
    rm -rf node_modules
    npm install --production

Ahora vamos a encender ghost de nuevo escribiendo el siguiente comando sudo service ghost start y todo está encendido pero hay un ligero problema, cuando ingresas a tu sitio web te sale un error 502

¿Cómo solucionar el error 502 después de actualizar ghost?

Este error es muy común en digitalocean pero no te preocupes no es nada del otro mundo solo escribimos el siguiente comando suponiendo que llegaste hasta el paso anterior donde escribimos service ghost start, ahora volvemos a apagar la máquina escribiendo service ghost stop y escribimos npm start --production si te sale algún error con letras de color rojo lo más seguro es que sea un error de sqlite3 bueno solo escribimos esto: npm install sqlite3 --save y volvemos a escribir: npm start --production y podrán empezar a ver los cambios, el problema es que cuando ingresen a su sitio todo estará bien pero cuando cierren la terminal o escriban CTRL+C el sitio se vuelve a caer, y un problema peor aún es que cuando escribimos service ghost start el sistema ya no lo reconoce.

Para lo anterior hay una solución el problema es que es muy complicada, así que yo encontré una mejor y es solo tienen que instalar una dependencia que hace que ghost se ejecute permanentemente solo ejecuta los siguiente comandos:

npm install forever -g //instala una dependencia de ejecución  
NODE_ENV=production forever start index.js //ejecuta ghost     para siempre  
forever stop index.js //detiene la ejecución  

vídeo tutorial para actualizar ghost

Esto hará que ghost esté iniciado por siempre recomiendo configurar todo lo que sea necesario antes de iniciarlo por siempre como el archivo config.js si por ejemplo quieres cambiar algo de tu tema entra a configuraciones y selecciona un tema cualquiera que no sea el que quieres cambiar luego de los cambios vuelves a seleccionar el tema que modificaste y los cambio se verán reflejados en pantalla. ahora si tu eres un usuario linux avanzado te recomiendo que ingreses a esta página donde te explica de forma avanzada otras situaciones deploy ghost
Si todo lo anterior te dio error te recomiendo que repitas el proceso desde lo que es borrar la carpeta node_modules para hacer todo de nuevo.