Epa! Regresamos con una nueva entrega súper calentita y lista para aplicarla desde ya!, hoy veremos las diferentes aristas que nos permitirán instalar Ghost en algún pedazo de metal :), por supuesto esto es parte de la serie explotando efectivamente Ghost blog.

Si eres nuevo por estos lares y sobretodo en esta serie de capítulos te recomiendo dar un vistazo al capítulo 1 donde hablamos acerca de las bondades que nos ofrece Ghost como una alternativa para el blogging.

Define donde con que objetivo vas a instalar Ghost

Antes de instalar una herramienta tan útil como la que estamos hablando en esta serie, primero debemos definir cual es el entorno objetivo en donde se va a hospedar la aplicación, aquí es donde se divisan dos opciones, desarrollo o producción. Algunos iniciantes tal vez dirán:

¿Cuál es la diferencia? Yo solo quiero poner a correr a Ghost y listo.

No!! Es importante establecer diferencias entre estos ambientes, aquí lo vemos rapidito:

  • Desarrollo: Puedes editar a placer tu aplicación tanto en backend como en frontend, agregar caracteristicas nuevas, corregir errores, detener, reiniciar, debuggear, etc.
  • Producción: Aquí es donde tu aplicación debe estar siempre activa, solamente van a parar características ya testeadas, ofrecer el mejor rendimiento, no mostrar ni un solo mensaje de error al usuario saludo para los hackers, etc.

¿Entonces te das cuenta que no es lo mismo, verdad? ok, continuemos. Lo siguiente es saber como se instala Ghost según su entorno. Vamos allá!

Elige un proveedor

Antes de elegir un servidor asegurarte de que puedas acceder a él mediante SSH, aquí hay algunas opciones más populares del mercado:

  • Digital Ocean (Recomendado)
  • Amazon EC2
  • Google Cloud
  • Linode
  • Vultr
  • Dreamhost

Comenzando con Ghost para producción en un servidor limpio

Para lanzar tu blog a la luz del mundo en algunos casos debes contemplar la posibilidad de iniciar con una instalación limpia, es decir desde cero. Hay ciertos requisitos que debes cumplir para que todo funcione sin problemas.

Requerimientos recomendados

  • Servidor Linux(recomendado Ubuntu 16.04)
  • Mysql
  • Systemd
  • Ngix(mínimo 1.9.5 para soporte SSL)
  • Node V6 (utilizar estable)
  • 1 GB, mínimo por favor
  • Usuario con permisos root(indispensable)

Para ambos ir al mismo paso lo que haremos será cumplir los requisitos tal cual como la documentación oficial de Ghost lo indica, pero es necesario que ya tengas algún servidor limpio para comenzar, y si ya tienes instalado algunos de los requisitos no tengas problema en saltarte ese paso específico.

Usuario para el servidor

Lo primero que hay que realizar es crear un nuevo usuario el cual tenga los permisos de súper usuario, por favor no le pongas de nombre a tu usuario ghost debido a que más adelante la herramienta ghost-cli creará su propio usuario con ese nombre y eso nos traerá problemas que seguramente querrás evitar.

Para completar este paso debes realizar los siguientes comandos:

// crea el usuario
// agrega tu propio nombre, aqui pepito es de ejemplo
adduser pepito
// asinga a pepito al grupo sudo
usermod -aG sudo pepito
// inicia sesion con el usuario pepito, es lo mismo que -l, --login
su - pepito

No ignores la actualización del sistema, este paso se realiza con una cuenta que no sea root

// actualizar lista de paquetes
sudo apt-get update

//actualizar paquetes instalados
sudo apt-get upgrade

Nginx para servirle a usted

Ngix te permitirá servir rápidamente la aplicación y los contenidos de tu blog.

// instala nginx
sudo apt-get install nginx
// Aseguramos que el firewall permita las conexiones http/https
sudo ufw allow 'Nginx Full'

Mysql para tu información

Ghost recomienda utilizar de forma unánime Mysql como base de datos para producción. Esto se realiza con el siguiente comando.
Importante: Cualquier usuario que utilices para Mysql, incluso root, asegurate de agregarle un password, caso contrario ghost-cli no podrá conectarse a la base de datos.

sudo apt-get install mysql-server

Si te lo preguntas, en algún momento Postgresql surgió como una alternativa soportada para producción, el equipo de Ghost cuenta que se realizaron grandes esfuerzos para hacer fixes y mantenerlo a flote, sin embargo optaron por descontinuar el soporte, ya que había menos gente corrigiendo errores y cada vez se reportaba más.

El grandioso NodeJS

Utiliza mínimo una versión de 6.x, aquí en el dev sin site nuestro servidor sigue esta recomendación, para sacarte de dudas dale un vistazo a las versiones soportadas por Ghost.

// Agrega el repositorio APT de nodeSource para node 6
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash 
// Inicia la instalacion, la opcion -y responde si a cualquier pregunta
sudo apt-get install -y nodejs

Node se debió instalar en cualquiera de estos dos directorios /usr/bin/node o /usr/local/bin/node, verifícalo usando which node.

Ghost CLI

Para tener un acceso global de ghost necesitamos instalar la herramienta vía npm, ¿NPM, como, cuando, donde?, si te hiciste esa pregunta, tranquilo, no hay de qué preocuparse npm ya está disponible y vino incluido con nodejs.

sudo npm i -g ghost-cli

Para asegurarte de adquirir la última versión del CLI puedes agregarle al nombre del paquete el fragmento "@latest", de esta forma: ghost-cli@latest.

El lugar perfecto para ubicar tu aplicación es /var/www/ghost-blog, si no tienes esta ruta de carpetas puedes crearla fácilmente con el siguiente comando

// -p no generará error en caso de que alguna carpeta ya exista
sudo mkdir -p /var/www/ghost-blog

Vamos muy bien, ahora debemos asignar como propietario de la carpeta al usuario creado anteriormente(pepito)

// asignar como propietario al usuario pepito
sudo chown pepito:pepito /var/www/ghost-blog

A esta carpeta se le debe dar los permisos necesarios, podemos definirlo de diferentes formas, en este caso para facilitar la legibilidad se aplicará el formato octal, tomando en cuenta que r=read(4 octales), w=write(2 octales), x=execute(1 octal), entonces debes ejecutar el siguiente comando

// esto se traduce en los siguientes permisos: usuario(rwx), grupo(rwx), otros(rx)
sudo chmod 775 /var/www/ghost-blog

Corriendo instalación

ok, ya casi estamos listos, muévete a la carpeta en la que hemos estado trabajando y asegurate que esté completamente limpia, caso contrario ghost no te dejará instalar nada

ghost install

El proceso se explica en la sección Proceso de instalación a detalle para producción


Comenzando con Ghost de forma "one Click" provista por Digital Ocean (Recomendada)

Esta forma de instalar Ghost personalmente es la más sencilla y rápida, pues los requisitos ya los trae consigo y simplemente tenemos que configurar la aplicación, lo primero que debes hacer es crear una cuenta en Digital Ocean y asociar tu tarjeta para que te permita crear droplets.

crear-droplet

Para crear un droplet con ghost pre instalado simplemente hay que hacer lo siguiente:

creacion de un droplet

Los pasos son claros, para no alargar mucho lo resumiremos así

  1. Selecciona la pestaña "Onclick apps"
  2. Selecciona Ghost en ubuntu 16.04
  3. Selecciona las características que quieres que tenga tu VPS, $5 es suficiente para iniciar (1GB memoria, 25GB SSD, 1TB transferencia)
  4. Selecciona la región la cual está más cerca a tu público objetivo
  5. Agrega una nueva llave SSH (Pública), esto le permite a tu droplet saber que eres tú cuando intentes conectarte. Para generar la clave revisa el recurso que te dejé abajo.
  6. Ingresas el nombre de tu droplet
  7. Click a crear, eso es todo :)

Recurso: ¿Cómo generar claves SSH en Linux?

Ahora hay que verificar la creación correcta del droplet, abre tu navegador y escribe lo siguiente: http://ip_del_droplet, la página resultante debe ser la siguiente:

ghost welcome

Actualizando Ghost

Siempre es importante verificar si existe una nueva actualización (fixes, nuevas características, etc).

Lo primero que debemos hacer es conectarnos a nuestro droplet, el siguiente comando debe funcionar correctamente, tomando en cuenta que agregaste tu llave pública SSH al momento de crear el droplet.

ssh root@ip_del_droplet

Debemos saber que Digital Ocean ha creado diversas cosas automáticamente, tales como el usuario ghost-mgr para ghost-cli y la ruta de la aplicación en /var/www/ghost, justamente aquí se ejecutará la actualización, de la siguiente forma

// inicio sesion
sudo -i -u ghost-mgr
// nos movemos a la ruta de la aplicación
cd /var/www/ghost
// corre la actualización de ghost
ghost update

Corriendo instalación

El siguiente comando se encargará de todo, simplemente ejecutamos

ghost setup

El proceso se explica a continuación


Proceso de instalación a detalle para producción

Si usas para producción un servidor limpio o desde la forma "One click" de Digital ocean este proceso es el mismo, es decir, luego de ghost install o ghost setup respectivamente.

Al iniciar el proceso, las preguntas son las siguientes:

  • Enter your blog Url: Url de tu blog, incluyendo protocolo https/https ejemplo: https://elmejorblogconghost.com o http://999.999.999.99.
  • Enter your MySQL hostname: Ingresa el nombre del host de la base de datos, por defecto es localhost, así que solo presiona Enter.
  • Enter your MySQL username: Nombre de usuario que usará Ghost para conectarse a la base de datos, ten en cuenta que ghost prefiere no utilizar root para sus transacciones y consultas
    • Si tienes un usuario diferente a root, ingresalo directamente aquí.
    • Si solamente tienes al root, de igual forma ingrésalo, la única diferencia es que Ghost la usará para generar un nuevo nombre de usuario, si es que lo deseas.
  • Enter your MySQL password: Password del usuario.
  • Ghost database name: Ingresa el nombre de una base datos que se utilizará.
    • Si la base de datos no existe, Ghost la creará siempre y cuando el usuario proporcionado tenga los permisos para hacerlo.
    • En caso de que la base de datos no tenga root, el usuario proporcionado anteriormente debe tener privilegios sobre ella.
  • Do you wish to set up a ghost MySQL user?: Ghost te preguntará si quieres que se encargue de la creación del username.
    • Si ingresaste root como el nombre de usuario, te recomiendo escribir yes.
    • Si ingresaste un usuario existente diferente a root, simplemente escribe no.
  • Do you wish to set up nginx?: Permite o no que tu sitio sea configurado automáticamente por Nginx para que esté disponible al público, por defecto es yes, así que simplemente presiona Enter.
  • Do you wish to set up SSL?: Ghost también puede ayudarte con el protocolo de seguridad SSL apoyándose de Let's Scrypt, para decidirlo toma en cuenta lo siguiente.
    • Si NO tienes listo un dominio en tu servidor, escribe no, más adelante cuando ya lo tengas disponible podrás continuar este paso en específico.
    • Si ya tienes instalado un certificado SSL, escribe no.
    • Solo cuando ya tienes un dominio en tu servidor pero no SSL, puedes escribir yes.
  • Enter your email (used for SSL certificate generation): Simplemente se pide un email para notificarte si existe un problema con tu certificado.
  • Do you wish to set up systemd?: Activar esta opción te asegura que Ghost se encuentre activo, el systemd es un demonio que se encargara de este proceso, recomiendo un yes.
  • Do you want to start Ghost?: Ejecuta Ghost al terminar la instalación.

Instalar Ghost para desarrollo

Una versión de Ghost para desarrollo significa que lo usarás localmente para realizar/modificar temas, esta versión omite ciertas características innecesarias que utilizaba la versión de producción, tales como:

  • Elimina el almacenamiento en caché
  • Utiliza como base de datos Sqlite3.
  • No se configura Nginx, SSL y tampoco Systemd
  • Ghost se ejecuta en un proceso separado.

Requerimientos necesarios

Algunos de los siguientes requerimientos ya se han mostrado anteriormente como instalarlos.

Proceder con la instalación

Lo único que debes hacer antes iniciar esta acción es ubicarte en cualquier carpeta limpia donde quieras instalar Ghost y luego correr el siguiente comando:

ghost install local

Al finalizar, nuestra versión "lite" estará corriendo en el puerto 2368.

ghost local

Ya instalé Ghost ¿Ahora qué?

Tranquilo, sé que este post ha sido extenso, pero ya estamos cerca de la gloria, lo único que falta configurar la administración de Ghost, esto te permitirá a ti, a tus colaboradores, editores, etc, ingresar a su determinado perfil.

Lo primero de debes hacer es abrir tu navegador y dirigirte a la siguiente url(según tu entorno):

  • Producción solo con IP: http://999.999.99.99/ghost
  • Producción con dominio: https://midominio.com/ghost
  • Desarrollo: http://localhost:2368/ghost

La pantalla inicial es la siguiente, dale click a create your account

welcome ghost

Esto es muy intuitivo los datos que hay que ingresar son el Titulo de blog, tu nombre completo, email y un password. Pan comido.
create-your-account

Si ya un equipo listo para apoyarte, Ghost te permite invitarlos a crear una cuenta en tu blog por medio de emails. Si no quieres hacer esto ahora, simplemente dirigete al blog clickando en I'll do later, take me to my blog.

invite-your-team

Todo está hecho!

Aquí tienes al dashboard y el index en su máximo esplendor :)

ghost-dashboard

main

Conclusiones

En buena parte podemos ver que Ghost nos facilita muchas cosas a la hora de ponerlo en marcha, con una configuración optimizada para cada entorno. Por otra parte en el modo de desarrollo lo más factible es usarlo para editar/crear temas, se espera que en un mediano plazo se puedan realizar plugins que extiendan las funcionalidades del core.
Ghost nos trae un futuro prometedor, y esperemos que su equipo nos sorprenda con nuevas características, mientras tanto te invito a probarlo y a unirte a esta gran comunidad.

Patrick Harris

Cuéntanos que te pareció esta nueva entrega en los comentarios, si te ha gustado y crees que le puede ayudar esta información a alguien más compártelo ahora mismo, no olvides visitarnos en nuestras redes sociales y suscribirte para recibir una notificación apenas lancemos otra entrega.