/ Ghost

Migrar Ghost de la Versión 0.x a la Versión 1.x en Digital Ocean

Migrar la plataforma de blogs Ghost de la versión 0.11.11 que es la ultima versión a una versión 1.18.0 que es la actual al momento, es muy diferente a lo que ya estábamos acostumbrados, pero hacerlo nos brinda grandes bondades ya que para realizar una actualización en la nueva versión sera más fácil.

Cabe recalcar que este tutorial se adapta, a una migración realizada en la plataforma de Digital Ocean, utilizando un Droplet con Ubuntu Server.

En este artículo te voy a guiar para que tu no te trunques y puedas realizarlo con éxito.

Sin nada más que aclarar vamos a pasar a desarrollar el artículo.

Requisitos previos

Para instalar en producción, recomendamos oficialmente la siguiente pila:

  1. Ubuntu 16.04
  2. MySQL
  3. NGINX (mínimo de 1.9.5 para SSL)
  4. Systemd
  5. Nodo v6 instalado a través de NodeSource
  6. Al menos 1 GB de memoria ( se puede usar intercambio )
  7. Un usuario no root para ejecutar comandos ghost

Para mayor información visita la sección de servicio de alojamiento para la plataforma de blogging Ghost, esta sección habla de los requisitos para el correcto funcionamiento de Ghost, los proveedores de alojamiento recomendados, agregar memoria de intercambio y más.

Ghost recomienda el uso de droplets VPS (servidores virtuales privados) del proveedor Digital Ocean en primer lugar.

Acceder a nuestro droplet

Ahora vamos a acceder a nuestro droplet, para lo cual podemos realizarlo de diferentes formas, en Windows podemos usar Putty o simplemente dirigirnos a nuestro droplet en el panel de nuestra cuenta Digital Ocean y luego selecciona la opción Console.

Nos pedirá nuestras credenciales, como es la primera vez utilizaremos el usuario root, Digital Ocean envía estos datos a tu correo electrónico una vez creado tu droplet.

Crear un nuevo usuario no root

Una vez que haya iniciado sesión como root, estamos preparados para agregar la nueva cuenta de usuario que usaremos para iniciar sesión a partir de ahora.

Este ejemplo crea un nuevo usuario llamado "cerounoluisrene", pero debes reemplazarlo por un nombre de usuario que te guste:

adduser cerounoluisrene

Se le harán algunas preguntas, comenzando con la contraseña de la cuenta.

Ingrese una contraseña segura y, opcionalmente, complete cualquier información adicional si lo desea. Lo que no encuentra necesario puede simplemente golpear ENTER en cualquier campo que desees omitir.

privilegios de root

Ahora tenemos una cuenta con privilegios regulares. Sin embargo, a veces es posible que necesitemos realizar tareas administrativas.

Para evitar tener que desconectarse de nuestro usuario normal y volver a iniciar sesión como la cuenta raíz, podemos configurar lo que se conoce como "superusuario" o privilegios de administrador para nuestra cuenta normal. Esto permitirá que nuestro usuario normal ejecute comandos con privilegios administrativos poniendo la palabra sudo antes de cada comando.

Para agregar estos privilegios a nuestro nuevo usuario, debemos agregar el nuevo usuario al grupo "sudo". Por defecto, en Ubuntu 16.04, los usuarios que pertenecen al grupo "sudo" pueden usar el comando sudo.

Como root, ejecute este comando para agregar su nuevo usuario al grupo sudo (sustituya la palabra cerounoluisrene con su nuevo usuario):

usermod -aG sudo cerounoluisrene

Una vez creado la nueva cuenta, vamos a actualizar Ghost de la versión 0.x a la versión 1.x

Exportar nuestros datos

En un navegador dirigete a [tu-dominio].com/ghost/settings/labs/

Una vez accedido a esta dirección haz clic en el botón Exportar, para descargar los datos de tu blog en formato .json

Exportar datos del blog

También puede realizar un Snapshot de su droplet si lo desea en el administrador de Digital Ocean.

Paquetes de actualización

Vamos a actualizar la lista de los paquetes y actualizar los paquetes instalados con los siguientes comandos:

Actualizar listas de paquetes

sudo apt-get update

Actualizar paquetes instalados

sudo apt-get upgrade

Instalar NGINX

Ahora vamos a verificar si tenemos instalado Nginx, en la mayoria de los casos ya estara instalado de lo contrario lo instalamos, usa los siguientes comandos:

Verificar la versión instalada

nginx -v

Si esta instalado omite este comando

Instalar

sudo apt-get install nginx

Open Firewall para HTTP / HTTPS

Si ufw (Uncomplicated Firewall) se activó, debemos asegurarnos de que el firewall permita las conexiones HTTP y HTTPS.

sudo ufw permite 'Nginx Full'

Si ya tenias implementado anteriormente Ghost con Nginx no es necesario ejecutar el anterior comando

Instalar MySQL

La CLI instala Ghost de forma predeterminada con MySQL. Esta es nuestra base de datos recomendada. Si desea utilizar Sqlite3, puede omitir este paso.

Ver la versión instalada de MySQL

mysql -V

Si ya tienes instalado MySQL omite este paso.

Instalar

sudo apt-get install mysql-server
Establecer siempre una contraseña de root

Durante la instalación de MySQL, se le pedirá que cree una contraseña de root. Por favor, asegúrese de especificar un valor para esto. Dejar en blanco la contraseña de root hará que Ghost-CLI no pueda conectarse a la base de datos con el error ER_NOT_SUPPORTED_AUTH_MODE.

Instalación Ghost

Vamos a realizar algunos cambios y bakups previos a la instalación de Ghost.

Detener el servidor

service ghost stop

Obtener la contraseña de MySql

Para obtener la contraseña de MySQL que viene instalada cuando creo su droplet, puede ejecutar el siguiente comando:

sudo cat /root/.digitalocean_password

Copia la contraseña que muestra para root_mysql_pass

Instalar Node.js

Agregue el repositorio APT de NodeSource para Node.js v6

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
Instalar Node.js
sudo apt-get install -y nodejs
Instalar Ghost-CLI

Para instalar Ghost-CLI ejecute el siguiente comando:

sudo npm i -g ghost-cli

Acceder a la carpeta www

Ahora para comenzar la instalación, vamos a acceder a la carpeta www para realizar algunas tareas:

//Acceder a la carpeta www
cd /var/www/
//Renombrar la carpeta ghost
sudo mv ghost ghost-antiguo
//Crear la nueva carpeta ghost (limpia)
sudo mkdir ghost

Establecer permisos a la carpeta ghost

Establezca permisos a la nueva carpeta de nombre ghost para el usuario creado anteriormente cerounoluisrene (este usuario debe ser el que tu creaste) y muévase a ella:

sudo chown -R [usuario]:[usuario] ghost/
//Manera correcta del comando `recuerda cambiar el nombre de usuario por el tuyo`
sudo chown -R cerounoluisrene:cerounoluisrene ghost/
cd ghost/

Asegúrate de que tu carpeta ghost tenga los permisos adecuados y este asignado el usuario que creaste anteriormente, con el siguiente comando:

ls -l

Listar archivos

Comando para instalar Ghost

Ya con todo preparado anteriormente vamos a instalar Ghost en la carpeta actual.

ghost install

Ten un poco de paciencia esto puede tardar unos minutos, hasta que te pida los datos para la configuración de Ghost

Cuando la carpeta ghost no cuenta con los permisos necesarios, nos arrojara un error similar a la siguiente imagen.

Error por permisos a la carpeta ghost

Configuraciónes de instalación Ghost

Responda las preguntas que sugiere. A continuación, le indicamos qué es lo que utilizaríamos o sugerencias para usar:

blog url: [tu url completa]
MySQL Hostname: localhost
MySQL Username: root
MySQL Password: [contraseña que copiaste anteriormente]
Database Name: [puede ser cualquier cosa, pero el nombre de tu blog tiene más sentido: blog_cerounoluisrene]
Setup Nginx: no
Setup Ghost MySQL User: yes
Setup Ghost System User: yes
Setup systemd: yes
Start Ghost: yes

La CLI ahora tendrá una configuración y pondrá en marcha Ghost para usted.

Configuraciones finales

Para culminar con la instalación de Ghost vamos a exportar nuestros datos y mover nuestras imágenes a la nueva ruta.

Importar datos

Para importar nuestros datos descargados anteriormente, nos vamos a dirigir a nuestro panel de administración de Ghost [tu-dominio].com/ghost, en el menú del lado izquierdo busca la opción Labs + Import content (selecciona tu archivo .json y para importar haz clic en el botón Import).

Importar datos del blog Ghost

Ten paciencia no muestra ningún mensaje, pero al final te mostrara una lista de los datos que importo.

Restaurar las imágenes

Ahora todas sus publicaciones y usuarios deben estar importados. Ahora vamos a mover las imágenes a la ruta correcta.

sudo cp -R ../ghost-antiguo/content/images/* content/images/.
sudo chown -R ghost:ghost ./*

Moviendo nuestro tema Ghost

Para finalizar vamos a mover nuestro tema Ghost, ya que por el momento se esta ejecutando el tema por defecto que trae Ghost.

Nota sobre los temas: hay cambios bruscos para su tema moviéndose a la versión 1.0 de Ghost. Debe verificar que su tema sea compatible antes de cargarlo o moverlo a su instalación 1.0. Verifique su tema en https://gscan.ghost.org. Para obtener una lista de los cambios más importantes, consulte el registro de cambios del tema.

La manera más fácil de agregar su tema es dirigiendoce al panel de administración en la opción Design, luego haz clic en el botón Upload a theme, selecciona el tema que deseas subir y para finalizar actívalo.

Agregando nuestro tema Ghost

Otra forma seria mediante la linea de comandos, copiar el tema que anteriormente almacenamos en la carpeta ghost-antiguo, para realizar esta tarea ejecute los siguientes comandos:

sudo cp -R ../ghost-antiguo/content/themes/[nombre_tema] content/themes/.
sudo chown -R ghost:ghost ./*

Reiniciar Ghost

para que los cambios tomen efecto, necesitamos reiniciar nuestro servidor ghost, para lograrlo ejecute el siguiente comando:

ghost restart

Actualizar Ghost

Para actualizar Ghost desde ahora solo vamos a ejecutar el siguiente comando:

//Este comando se encargara de detener e iniciar nuestro servidor de Ghost (Genial verdad)
ghost update

Listo si llegaste hasta este punto es por que lo haz logrado, me gustaría que dejes en los comentarios las dificultades que tuviste para que el siguiente usuario no se trunque y así me darás la opción a actualizar el post.

Luis Rene Mas Mas

Luis Rene Mas Mas

Hola, soy desarrollador front-end, me encanta las tecnologías web, mi pasatiempo favorito es administrar este blog.

Leer Más