En este primer post en el blog, contaré todo el proceso de su creación utilizando Pelican y Github Pages.
Antes de comenzar con el contenido real, a repasar conceptos.

¿Qué es Pelican?

Pelican, es un static site generator escrito en Python, no requiere base de datos ni lógica del lado del servidor.

Algunas características que incluye son:

  • Escribe tu contenido en reStructuredText, Markdown o AsciiDoc
  • Compilar contenido completamente estático
  • Temas editables con Jinja
  • Soporte para multi lenguaje
  • Atom/RSS Feed
  • Resaltado de código
  • Importar contenido desde Wordpres, Dotclear, RSS feeds, entre otros.
  • Sistema de plugins modulares.

Es un generador muy potente y a la vez muy simple, en el fondo it gets the job done.

Instalación y Configuración

Primero debemos instalar las herramientas, dependiendo de tu version de Python elige una.

$ sudo -H pip install pelican
$ sudo -H pip3 install pelican

Teniendo una cuenta en github, es necesario crear dos repositorios.

usuario.github.io-src

usuario.github.io

usuario.github.io-src será el encargado de contener el generador para luego compilar el blog y subir la parte estática al repo usuario.github.io.

Para que esto sea posible tenemos que incluir el repositorio usuario.github.io como submódulo del repositorio usuario.github.io-src.

$ git clone [email protected]:usuario/usuario.github.io-src.git
$ cd usuario.github.io-src
$ git submodule add [email protected]:usuario/usuario.github.io.git output

Ahora que tenemos listos los repositorios necesarios y el submódulo, podemos comenzar con la herramienta de Pelican para generar el blog.

$ pelican-quickstart

Esta herramienta nos hará varias preguntas iniciales, las que importan son:

  • Where do you want to create your new web site? (Enter)
  • URL prefix: https://usuario.github.io
  • Generate a Fabfile/Makefile: Yes
  • Upload mechanisms: Elegir No para todo menos Github Pages
  • Is this your personal page (usuario.github.io)?: Yes

Con esto la configuración inicial queda terminada, para editar el archivo de configuración haremos:

$ vim pelicanconf.py

Dentro podremos encontrar la variable DELETE_OUTPUT_DIRECTORY = True, debemos modificarlo para que sea falso: DELETE_OUTPUT_DIRECTORY = False.
Esto evitará que se borre el contenido de la carpeta output cada vez que compilemos.

Creando contenido

Actualmente nuestra estructura de archivos queda parecida a esto:

usuario.github.io-src
│   develop_server.sh
│   fabfile.py
│   LICENSE
│   Makefile
│   pelicanconf.py
│   publishconf.py
│
└───content
│
└───output

Además puedes crear las carpetas plugins y themes, para más info respecto a esto mirar los docs sobre temas y plugins.

Para escribir nuestro primer post, vamos a crear un archivo markdown en la carpeta content.

$ touch content/primer-post.md

Dentro de este archivo, pondremos lo siguiente:

Title: Título del Post
Date: YYYY-MM-DD HH:MM
Modified: YYYY-MM-DD HH:MM
Category: Categoría
Tags: Etiquetas, separadas, por, coma
Slug: url-del-post
Author: Nombre del Autor
Summary: Resumen del contenido del post.

Aquí ya puedo comenzar a escribir el contenido del post en Markdown.

Una vez que hemos creado nuestro primer post, podemos pasar a compilar.

Generando el sitio

Para generar el sitio tenemos varias opciones, yo utilizo el comando ~~~make~~~.

Primero debemos compilar el markdown en html plano, para eso:

$ make html

Esto generará contenido estático en la carpeta output, para comprobar si el blog funciona:

$ make serve

Abrirá un servidor en localhost:8000.

Si tu blog funciona perfectamente, es hora de publicarlo y hacer commit y push al repositorio que agregamos como submódulo en la carpeta output:


  $ make publish
  $ cd output
  $ git add .
  $ git commit -m "Primer post" <--  usuario.github.io
  $ git push origin master
  $ cd ..
  $ git add .
  $ git commit -m "Primer commit"  <-- usuario.github.io-src
  $ git push origin master

Ahora puedes visitar usuario.github.io y disfrutar del blog que acabas de crear.

Fin

Al final me dio flojera terminar el post, tenía pensado agregar una sección de cómo implementé el tema del blog y los plugins que estoy usando, así como uno que otro tip y script que hice para que todo sea más fluido, pero creo que todo eso quedará para otro día si ando con ganas de escribir un poco más.

Si tienes alguna duda o comentario, o quieres saber más detalle de como crear un blog con Pelican puedes consultarme por Twitter o Email. Ando buscando una forma de generar comentarios estáticos sin depender de un servicio externo, creo que pelican-comment-system es la solución pero no me he dado el tiempo de implementarlo, de todas formas si lo logro antes del post sobre plugins, fijo que estará el como implementar. Chao pescao.