Entre tantas cosas que han ocupado mi mente este último par de años no estaba este sitio web, y pensando en que a cada cochino le llega su sábado ¿sera que ese dicho se usa sólo en Venezuela o se dice en otras partes así tambien? Tengo tarea quise verlo como una oportunidad de unir varias ideas:

  1. Me quiero obligar a escribir un poco más contenidos distintos a informes o documentos técnicos
  2. Me llama la atención esta tendencia de alejarse de modelos robustos como Wordpress para levantar sitios en favor de generación de sitios estáticos a partir de archivos de texto
  3. Desde hace un tiempo estoy usando Markdown y llegó la hora de aceptar que me encanta :)
  4. A este sitio le faltaba muuucho cariño, y no quería que la gente pensara en el “casa de herrero” al ver el site

Decidiendo que hacer..

Tomando esto me propuse googlear por no más de 10 minutos cómo resolver un sitio rapido, a pesar de mis ambiciones hipsters decidí poner a un lado los requerimientos fastidiosos y sólo me concentré en estos esenciales:

  • Poder publicar contenido cada cierto tiempo (~blog)
  • Poder tener un par de páginas estáticas sencillas (p.e. Acerca de)
  • Poder usar categorías, así sean implementadas de forma sencilla, sobretodo porque si le agarro el gusto a mantener este sitio no apostaría plata en eso siendo ustedes me gustaría tener una categoría para el idioma de cada publicación

Jekyll-logo

Facil, Jekyll. Entiendo que hay varias muy buenas opciones en internet para hacer esta tarea pero sin duda me pareció que Jekyll se veía como la opción lógica, decidí ver que tan fastidioso era y me consigo en el home aquel texto de infomercial:

Get up and running in seconds.

Aja, he leido eso muchas veces -.-

Nada, decidí darle una oportunidad y para mi sorpresa en efecto en unos segundos ya tenía una vista funcional o.O

Jekyll-start

Antes de seguir y lanzarme al vacío consulté qué tan complicado es integrar temas previamente hechos, dado que no quiero una solución rápida para que se me vaya la vida golpeándome con archivos css o teniendo que crearlos.. en el site de Jekyll Themes wow me maté consiguiendo ese site suuper rebuscado Encontré unos que me llamaron bastante la atención, al final me decanté por Kiko Plus (No me golpeen si para el momento en que lees este post tengo otro tema o pasó algún tiempo y ahora los sites se alojan en nuestros cerebros y no soportan Jekyll #GraciasLaGerencia), otros que me llamaron la atención fueron:

Un poco mas al grano, ¿Qué hice?

Tomando en cuenta que uso Linux (Mint 18 para ser más específico):

# copy-paste del sitio de Jekyll
sudo gem install jekyll bundler
# para este ejemplo se clonó un repositorio git con un site funcional con el tema que se eligió (Kiko Plus)
git clone https://github.com/AWEEKJ/Kiko-plus guerracarlos-site
cd guerracarlos-site
# instalamos unas dependencias que nos pide el tema
sudo gem install jekyll-seo-tag
sudo gem install jekyll-admin
# en mi version cambié el archivo _config.yml para que en vez de gems: diga plugins: (entiendo que deprecaron el uso de gems para complementos del site)
# y...
jekyll serve

¡Por ahora listo! Ahora nos queda:

  • hojear los archivos en la carpeta _posts/ y ver cómo hay que escribir los archivos .md para agregar nuevas publicaciones
  • revisar el archivo _config.yml para ver algunas opciones que podemos cambiar
    • El nombre de la página
    • Los enlaces de nuestras cuentas de redes sociales y otros servicios (Facebook, Twitter, Reddit, Github, etc.). Si dejamos algo en blanco no aparece
    • URLs
    • Zonas horarias
    • Menú principal
    • ID de la cuenta de Google Analytics, porque lo soporta :)

Vale ya tengo el site en local, ¿Cómo lo subo a mi servidor?

Parte de la magia de usar páginas estáticas es que no hay que manejar bases de datos o generar más archivos para montar el sitio en tu propio servidor(1), con copiar en tu carpeta pública (en muchos casos public_html) los archivos que están en la carpeta _site/ será suficiente.

(1) Lo único que habría que hacer es cambiar en el archivo _config.yml las variables url y baseurl para que coincidan con el dominio que apunte al servidor a donde subimos los archivos.

¿No es fastidoso tener que subir manualmente los archivos cada vez que actualizo el contenido?

Por supuesto, ahí tenemos varias alternativas:

  1. Buscar una forma de instalar jekyll en el servidor y automatizar que cada vez que hagamos un cambio se genere todo el contenido estático automaticamente: Esta opción no me llama mucho la atención porque necesitaríamos invertir tiempo en configurar todo desaprovechando la magia de una metodología que nos facilite la vida, además cada servidor funciona diferente, si en el que estemos usando es sencillo se pudiera intentar.
  2. Usar git/Github: Se pudiera tener un repositorio en nuestro servidor y desde una instancia del mismo en nuestro equipo actualizarlo, este repositorio pudiera tener sólo los archivos estáticos de la carpeta _site/ o todo el proyecto con las confifuraciones adecuadas. En el caso de Github su plataforma de páginas soporta Jekyll de forma nativa, vale la pena echarle un vistazo a su documentación
  3. Generar todo el contenido local y utilizar herramientas como scp o rsync para copiar al servidor el contenido de la carpeta _site/ cada vez que se actualice el contenido: En lo personal me gusta más esta opción por ser más simple, igual como soy un poco malo para recordar las instrucciones exactas hice un script que puedo ejecutar cada vez que subo contenido nuevo.
# estando en la carpeta del proyecto
jekyll build
rsync -avz _site/ miusuario@miservidor.com:~/webapps/guerracarlos

Algunos tips

  • Si se utiliza este método se puede configurar el servidor remoto para que no pida contraseña cada vez que iniciamos conexión desde nuestro equipo, esto podemos lograrlo instalándole el certificado SSH de nuestra computadora. Referencia
  • Se puede idear un modelo en que nuestra computadora revisa si se modificó la carpeta con el contenido del site y ejecute el script automáticamente, dependiendo del uso que se le de y qué tanto podemos/queremos modificar el proceso, el cielo es el límite..

Y así, en una hora y media aproximadamente, a un paso lento aprendí Jekyll, lo usé, lo instalé en un servidor y redacté este artículo, pareciera que si hay algo en eso de que facilita la vida.. Vamos a ver como avanza :)

¿Qué sequiría?

  • Implementar HTTPS
  • Ir modificando el sitio poco a poco (adaptar estilos css, hacer que los links abran en otras pestañas, habilitar emojis, etc.)
  • Intentar escribir (emoji con la sonrisa y la gota de sudor)