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: Lista de Spotify

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.

No hay texto alternativo para esta imagen

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

RAM t2.micro 1GiB

No hay texto alternativo para esta imagen

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

Elige el nombre de la llave y el formato .pem

No hay texto alternativo para esta imagen

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

No hay texto alternativo para esta imagen

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.

No hay texto alternativo para esta imagen

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.

No hay texto alternativo para esta imagen

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 🚀

No hay texto alternativo para esta imagen

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 nginxsudo ufw allow ‘Nginx Full’

Abre el firewall para aceptar HTTP y HTTPS

6. Instalar & Configurar MySQL

sudo apt-get install mysql-server

Instalamos MySQLsudo mysql

Para establecer una contraseña

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. Deberías 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.

No hay texto alternativo para esta imagen

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:

No hay texto alternativo para esta imagen

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 cómo se ve.

No hay texto alternativo para esta imagen

Cuéntame si sigues los pasos para crear tu blog con este tutorial y cualquier duda puedes escribirme mediante mi Linkedin, ¡Conectemos!

Jean-François Gutierrez, del Dev-Team de My Tech Plan.