Monta un Blog con CMS en 10 minutos usando Ghost y AWS.

Monta un Blog con CMS en 10 minutos usando Ghost y AWS.
Perfecto para Hackathons, no pierdas tiempo con código de más

Una solución OpenSource, Full Responsive, con CMS integrado, capacidad para varios editores, Newsletter y suscriptores.

primero lo primero

la musica correcta para la tarea. Sugerencia del chef:

1- Creamos una cuenta de AWS.

Vale, ahora que ya estamos en el mood, toca crearse una cuenta gratuita de AWS.

2- Creamos una Instancia EC2

En este ejemplo llamaremos a la instancia 'blog'. Erigiremos un Ubuntu Server 20.04 LTS (Free tier eligible)

Elegimos servidor Ubuntu 20.04

En Instance type, vamos a elegir una t2.micro 1GiB Memory (Free tier elegible)

RAM t2.micro 1GiB

Key pair(login) crearemos una nueva llave para conectarnos a la consola por ssh.

elige el nombre de la llave y el formato .pem

Una vez creada la llave, se descargara {tuLlave}.pem. Si estas en iOS o Linux puedes saltar al siguiente paso. Si estas en Windows, tienes que copiar la llave al directorio c:/users/{tuUsuario}/.ssh/

Memoria 30gb

Dejamos los Networks Settings tal cual vienen por defecto por ahora. En Configure Storage, Asigna 30gb de espacio y deja todo lo demás como está. Dale a Launch Instance

perfecto! nuestra instancia se genero con éxito.
Perfecto. Nuestra instancia se genero con éxito.

3- Conectarse por consola

Ahora entramos nuestra instancia, y le damos al botón de Connect. Una vez dentro, elegiremos SSH Client y seguiremos los pasos indicados en la imagen para conectarnos.

Seguimos los pasos para conectarnos por ssh.

No te olvides de abrir la terminal desde el directorio de donde esta la llave que acabas de generar:

ssh -i "tuLlave.pem" ubuntu@tuPublicDns

Deberías de ver como te conectas a la consola de Ubuntu 🚀

Logramos conectarnos a la consola de Ubuntu

ROUND 2

nginx, mysql & ghost

4- Crear usuario server

Tenemos que crear un usuario que tenga acceso de admin sobre nginx, mysql y ghost. Para ello, vamos a escribir:

# Creamos usuario 'server'
sudo adduser server

# Añadimos al usuario al grupo de superuser para tener los derechos de admin
sudo usermod -aG sudo server

# Ahora nos logueamos con el usuario server
sudo su - server

Al crear el usuario, puede que te pida ingresar una contraseña. Luego te pedirá datos como nombre, teléfono, fax, etc que puedes simplemente darle al enter y pasarlos.

Notaras como cambiaste de Ubuntu a server en la consola. Lo siguiente es actualizar antes de instalar lo que sigue.

sudo apt-get update

sudo apt-get upgrade
Los de toda la vida.

5- Instalar & Configurar Nginx

sudo apt-get install nginx
Instalamos nginx
sudo ufw allow 'Nginx Full'
Abre el firewall para aceptar HTTP y HTTPS

6- Instalar & Configurar MySQL

sudo apt-get install mysql-server
Instalamos MySQL
sudo mysql
Para establecer una contraseña

Inserta la siguiente línea en el registro:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Reemplaza 'password' por tu contraseña
quit
Para salir de MySQL

7- Instala Node 16

Ghost solo funciona con la versión de Node 16.x, así que vamos a asegurarnos de bajar solo esa.

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash
sudo apt-get install -y nodejs

8- Instalar Ghost

sudo npm install ghost-cli@latest -g
Instalamos el Ghost-CLI que nos dejara todo configurado fácil y rápido

9- Crear directorio para Ghost

sudo mkdir -p /var/www/blog
Puedes cambiar el nombre del sitio "blog" al nombre que prefieras.
sudo chown servidor:servidor /var/www/blog
Establecemos a server como dueño del directorio.
sudo chmod 775 /var/www/blog
Establecemos los permisos correctos.
cd /var/www/blog
Y por ultimo, nos dirigimos al directorio recién creado.

10- Instalamos Ghost

ghost install
Instalamos Ghost.

🛑La instalación va a un tiempo, sobre todo dependiendo de la cantidad de memoria RAM que le hayamos asignado al principio. Si bien en la documentación oficial que con tan solo 1GiB es suficiente, en mi experiencia 2GiB es realmente lo mínimo que necesitas para que corra decentemente, la diferencia con el de 4GiB tampoco es tan grande y permite escalar en caso de tener un sistema varios editores y muchos visitantes.

Los valores a completar del config son:

  1. BlogUrl: Ingresa aqui tu dominio, si todavi no lo tiene, no te preocupes deja el valor por defecto luego vamos a cambiarlo
  2. MySQL hostname: localhost
  3. MySQL username: root
  4. MySQL password: la contraseña que elegiste en el paso 6
  5. Ghost database name: deja el valor por defecto

Luego de eso, dale Yes a todo. Deberias ver que ghost esta corriendo en verde.

ghost ls
Deberías de poder ver que todo esta corriendo correctamente.

11-IP Elástica y Dominio

Genial! Ahora solo tenemos que ir a Network & Security > Elastic IPs y le damos al botón de Allocate Elastic IP address. Una vez creada, entramos en ella y le damos a Associate Elastic IP address y seleccionamos nuestra instancia

Esta IP, es la que usaremos para dirigir nuestro Dominio de donde sea que lo tengamos alojado. Yo en mi caso uso Namecheap que creo que tiene un excelente servicio de soporte y precios muy competitivos.

Para redireccionar su dominio, lo único que tienen que hacer es agregar un record del tipo A apuntando hacia la IP recién creada.

12- Abrir los puertos

Network & Security > Security Groups: seleccionas tu grupo (que se creo automáticamente cuando hiciste la instancia) le das al botón de Edit inbound rules y copias estos valores:

13- Última configuración de Ghost 🛠

Ahora en al terminal, escribe lo siguiente. Si aun no tienes dominio puedes reemplazarlo por la IP del paso 11.

ghost config url https://{tuDominio}
Establecemos a donde apuntara el sitio.
ghost config nginx
Reconfiguramos el Nginx.
ghost config ssl
Creamos en instalamos los certificados SSL.
ghost restart
Reiniciamos Ghost para actualizar los cambios.

Ahora si van a su dominio https://tuDominio.com/ghost podrás acceder a tu panel de admin y terminar la configuración. Puedes crear tu primer post de inmediato para ver como se ve.

Suscríbete al El Método Zuzzjenmaijsch

Déjame por aqui tu correo y tendras acceso al contenido exclusivo para miembros.
Lionel Messi
Suscríbete