Introducción
Ghost es un sistema de administración de contenido (CMS) liviano y de código abierto creado en NodeJS, que fue el resultado de un exitoso Kickstarter. Recientemente han lanzado la nueva versión Ghost 5.0 LTS, que ofrecerá un ciclo de vida hasta Enero del 2024 (Major Versions & Long Term Support).
En este artículo se explicará cómo actualizar la versión manualmente, actualizar de versión y también cómo configurarlo con systemd para una actualización automática (Upgrade). Se utilizará la Imagen preinstalada de Ghost 4.X para el ejemplo de actualización.
Índice
- Preparación para la actualización de Ghost
- Actualización de la versión de Ghost
- Actualización a la última versión de Ghost (upgrade)
- Automatización de la actualización (systemd)
Preparación para actualización de Ghost
Será imprescindible tener correctamente correctamente configurada la propiedad y permisos del directorio de Ghost. Por lo tanto, primero accede a la ruta de Ghost:
# cd /var/www/ghost
Posteriormente, accede con el usuario de Ghost:
# su ghostinst
Luego lanza un diagnostico de Ghost:
# ghost doctor
Debería aparecerte todas las comprobaciones correctas, cómo el siguiente resultado:
Love open source? We’re hiring JavaScript Engineers to work on Ghost full-time.
https://careers.ghost.org
✔ Checking system Node.js version - found v16.18.1
✔ Checking logged in user
✔ Ensuring user is not logged in as ghost user
✔ Checking if logged in user is directory owner
✔ Checking current folder permissions
✔ Checking system compatibility
✔ Checking for a MySQL installation
+ sudo systemctl is-active ghost_ejemplo-clouding-host
Instance is currently running
ℹ Validating config [skipped]
✔ Checking folder permissions
✔ Checking file permissions
✔ Checking content folder ownership
✔ Checking memory availability
✔ Checking binary dependencies
✔ Checking free space
✔ Checking systemd unit file
✔ Checking systemd node version - found v16.18.1
En caso que alguna de las comprobaciones muestre un resultado incorrecto, deberás solucionarlo y normalmente en el diagnostico, explica cómo corregir el problema.
Copia de seguridad de Ghost
Antes de actualizar Ghost, es recomendable tener un respaldo d él. Por lo tanto, puedes utilizar directamente la herramienta nativa que incorpora. Ejecutando lo siguiente crearás un respaldo de Ghost:
# ghost backup
También puedes utilizar un snapshot del servidor en vez de utilizar la opción nativa de Ghost, será más rápido y seguro que almacenar la copia en el mismo servidor.
Actualización a la última versión de Ghost
Una vez realizado los pasos previos siguiendo la preparación, para la actualización de Ghost ejecuta un update.
# ghost check-update
Resultado:
Love open source? We’re hiring JavaScript Engineers to work on Ghost full-time.
https://careers.ghost.org
Current version: 4.48.2
Latest 4.x version: 4.48.8
Latest version: 5.23.0
Major update available!
En el resultado podemos observar que hay una nueva revisión de la versión actual y un versión mayor disponible. Por ejemplo, el comando para únicamente la actualización de la versión actual es el siguiente:
# ghost update v4
En caso de tener la última versión disponible de Ghost, no es necesario indicar la versión:
# ghost update
Al ejecutar la actualización mostrará el siguiente contenido cómo resultado:
Love open source? We’re hiring JavaScript Engineers to work on Ghost full-time.
https://careers.ghost.org
+ sudo systemctl is-active ghost_ejemplo-clouding-host
✔ Checking system Node.js version - found v16.18.1
✔ Ensuring user is not logged in as ghost user
✔ Checking if logged in user is directory owner
✔ Checking current folder permissions
✔ Checking folder permissions
✔ Checking file permissions
✔ Checking content folder ownership
✔ Checking memory availability
✔ Checking free space
✔ Checking for available migrations
✔ Checking for latest Ghost version
# 4.48.8
This release contains fixes for minor bugs and issues reported by Ghost users.
---
View the changelog for full details:
* Ghost - https://github.com/tryghost/ghost/compare/v4.48.7...v4.48.8
* Admin - https://github.com/tryghost/admin/compare/v4.48.7...v4.48.8
🪄 Love open source? We're hiring [JavaScript Engineers](https://careers.ghost.org/)
to work on Ghost full-time
✔ Fetched release notes
✔ Downloading and updating Ghost to v4.48.8
+ sudo systemctl stop ghost_ejemplo-clouding-host
✔ Stopping Ghost
✔ Linking latest Ghost and recording versions
+ sudo systemctl start ghost_ejemplo-clouding-host
✔ Restarting Ghost
ℹ Removing old Ghost versions [skipped]
Posteriormente, puedes comprobar el estado de Ghost con un diagnostico:
# ghost doctor
Debería aparecerte todo correcto, cómo en el siguiente resultado:
Love open source? We’re hiring JavaScript Engineers to work on Ghost full-time.
https://careers.ghost.org
✔ Checking system Node.js version - found v16.18.1
✔ Checking logged in user
✔ Ensuring user is not logged in as ghost user
✔ Checking if logged in user is directory owner
✔ Checking current folder permissions
✔ Checking system compatibility
✔ Checking for a MySQL installation
+ sudo systemctl is-active ghost_ejemplo-clouding-host
Instance is currently running
ℹ Validating config [skipped]
✔ Checking folder permissions
✔ Checking file permissions
✔ Checking content folder ownership
✔ Checking memory availability
✔ Checking binary dependencies
✔ Checking free space
✔ Checking systemd unit file
✔ Checking systemd node version - found v16.18.1
También puedes verificar que tienes la última revisión de la versión ejecutando de nuevo:
# ghost check-update
Actualización de versión de Ghost (upgrade)
Actualización npm y CLI Ghost (solo para upgrade)
Para realizar una actualización a una nueva versión de Ghost, primero deberás actualizar NPM y el CLI de Ghost. Para actualizar NPM, simplemente ejecuta lo siguiente con el usuario root:
# npm install -g npm
Y para actualizar la versión de CLI de Ghost, ejecuta:
# npm i -g ghost-cli@latest
Una vez realizado, estará preparado para realizar un upgrade de Ghost.
Actualización a una versión superior
Para la actualización a una versión superior, utiliza el comando upgrade:
# ghost upgrade
Te mostrará el siguiente resultado y deberás confirmar la actualización a la nueva versión:
Love open source? We’re hiring JavaScript Engineers to work on Ghost full-time.
https://careers.ghost.org
+ sudo systemctl is-active ghost_ejemplo-clouding-host
✔ Checking system Node.js version - found v16.18.1
✔ Ensuring user is not logged in as ghost user
✔ Checking if logged in user is directory owner
✔ Checking current folder permissions
✔ Checking folder permissions
✔ Checking file permissions
✔ Checking content folder ownership
✔ Checking memory availability
✔ Checking free space
✔ Checking for available migrations
✔ Checking for latest Ghost version
# 5.22.11
* 🐛 Fixed error when importing members - Simon Backx
---
View the changelog for full details: https://github.com/tryghost/ghost/compare/v5.22.10...v5.22.11
🪄 Love open source? We're hiring [JavaScript Engineers](https://careers.ghost.org/) to work on Ghost full-time
✔ Fetched release notes
✔ Downloading and updating Ghost to v5.22.11
Checking theme compatibility for Ghost 5.22.11
✔ Your theme is compatible.
You can also check theme compatibility at https://gscan.ghost.org
Please review the full list of breaking changes at https://ghost.org/docs/changes/
⚠ Have you run `ghost backup`?
? Are you sure you want to migrate to Ghost 5.22.11? Yes
✔ Updating to a major version
+ sudo systemctl stop ghost_ejemplo-clouding-host
✔ Stopping Ghost
✔ Linking latest Ghost and recording versions
+ sudo systemctl start ghost_ejemplo-clouding-host
✔ Restarting Ghost
✔ Removing old Ghost versions
Automatización de la actualización (systemd)
Para automatizar el proceso de actualización, puedes utilizar systemd. Primero deberás crear un servicio para la actualización de NPM y el CLI de Ghost:
# nano /etc/systemd/system/update_npm.service
El contenido sería el siguiente:
[Unit]
Description=Update npm and ghost-cli automatically with systemd
[Service]
Type=oneshot
ExecStartPre=/usr/bin/npm install -g npm
ExecStart=/usr/bin/npm i -g ghost-cli@latest
Posteriormente, deberás crear otro servicio para la actualización de Ghost:
# nano /etc/systemd/system/update_ghost.service
El contenido será el siguiente y recuerda modificar en el update de Ghost para indicar la versión si no esta instalada la última:
[Unit]
Description=Update ghost instance automatically with systemd
Wants=update_npm.service
After=update_npm.service
[Service]
Type=oneshot
User=ghostinst
WorkingDirectory=/var/www/ghost
ExecStartPre=/usr/bin/ghost check-update
ExecStart=/usr/bin/ghost update --no-prompt --auto
ExecStartPost=/usr/bin/ghost check-update
Luego deberás crear un timer para que se ejecute periódicamente los servicios:
# nano /etc/systemd/system/update_ghost.timer
Con el siguiente contenido, se ejecutará una vez cada semana:
[Unit]
Description=Update ghost instance automatically with systemd weekly
[Timer]
OnBootSec=5m
OnUnitActiveSec=1w
[Install]
WantedBy=timers.target
Por último, deberás activar el timer con el siguiente comando:
# systemctl enable update_ghost.timer
Puedes listar los timers para ver la próxima ejecución:
# systemctl list-timers --all
Para verificar el funcionamiento de los servicios, puedes ejecutar los siguientes comandos:
# service update_npm start && journalctl --unit=update_npm.service --no-pager
# service update_ghost start && journalctl --unit=update_ghost.service --no-pager
Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites, consúltanos!