Generar blogs estáticos con BashBlog

Generadores de sitios Web estáticos hay muchos, es difícil definir cuál es el mejor o más productivo. Cada usuario tiene sus preferencias y por lo general se resumen a Jekyll, Pelican, Middleman, Hugo y algunos más entre los más utilizados.

bashblog-img-00

En esta ocasión me he encontrado con la herramienta BashBlog, un pequeño script escrito totalmente en Bash, apenas unos 47KB de tamaño —alrededor de 800 lineas de código— con el cual podemos generar blogs estáticos con una gran cantidad de características:

  • Edición sumamente sencilla. Escoger el editor de texto favorito y empezar a escribir el post.
  • No requiere la instalación de librerías externas o dependencias. Es solo Bash.
  • Corre en GNU/Linux, BSD y OS X. —Supongo que en Windows 10 también lo hará—.
  • Todo el contenido es estático, solo se necesita acceso a una consola y una carpeta Web pública para publicar los posts.
  • Correr un servidor Web —en este caso he utilizado Apache—.
  • La posibilidad de montar una carpeta pública remota a través
    de ftpfs y correr el script localmente.
  • Permite edición borrador (Draft).
  • Cuenta con un una hoja de estilo sencilla, la cuál podemos modificar por nuestra cuenta.
  • Copia de seguridad automática del sitio cada vez que se publique (almacenados como .backup.tar.gz).

Otras características no menos interesantes:

  • Generador RSS automático.
  • Soporte de:
    • Etiquetas (tags), categorías.
    • Markdown.
    • Comentarios a través de Disqus.
    • Twitter, Feedburner, Google Analytics.

En resumen contamos con un simple script bash bastante completo que además de lo descripto anteriormente cualquier usuario con meros conocimientos en bash puede escalar aún más las características del script (bb.sh).

Descargar el script desde GitHub

git clone https://github.com/cfenollosa/bashblog.git

También puedes descargarlo desde aquí:

bashblog.zip

Instalación

Dentro la carpeta bashblog encontraremos el script bb.sh, debes copiarlo en la carpeta en dónde va a ser servido tu blog. En mi caso al instalar Apache2 en Debian GNU/Linux 8 este ya me asigna una carpeta específica por defecto en la ubicación /var/www/html. Como cada usuario utiliza una configuración determinada a su fin, queda en ustedes la configuración del servidor.

Una buena práctica sería editar las líneas referentes a la raíz de nuestro sitio (DocumentRoot) además de las directivas de configuración del directorio raíz de la Web local <Directory /var/www/>.

Sin embargo a fines didácticos para no alterar mi configuración inicial solo he configurado un enlace simbólico (symlink) para servir mi carpeta —en este caso blog—:

## En /home/mi_usuario/  Reemplaza 'mi_usuario' por tu usuario

mkdir blog

## Dentro de ella copio el script bb.sh

cd bashblog & cp bb.sh /home/mi_usuario/blog

Ahora resta configurar mi carpeta pública (blog) para postear los artículos.

cd /var/www/html
sudo ln -s /home/mi_usuario/blog blog

De aquí en adelante cada vez que apunte a la dirección http://localhost/blog o dirección del server p. ej.: http://192.168.x.x/blog, se mostrará el contenido HTML estático generado por bb.sh, es decir mi página Web.

Si por alguna razón el script requiere de privilegios ejecutamos: chmod +x bb.sh

Utilización

Ya contamos con el script bb.sh dentro de nuestra carpeta servida (blog), es momento de crear nuestro primer post. Desde un terminal ejecutamos:

./bb.sh post

o

./bb.sh post nombre_archivo  ## Si se continúa la edición de 
				un archivo en borrador (draft)

Es probable que la primera vez se queje de que no tenemos definido un editor de texto. Cuando hacemos uso de este comando automáticamente inicia el EDITOR que tengamos configurado como variable para bb.sh.

"Please set your $EDITOR environment variable"

Esto se resuelve de forma muy sencilla:

## Reemplaza vim por tu editor favorito

export EDITOR=vim

Luego al ejecutar nuevamente ./bb.sh post ya podemos editar nuestro post. De forma predeterminada despliega las siguientes líneas:

Title on this line

The rest of the text file is a **Markdown** blog post. 
The process will continue as soon as you exit your editor.

Tags: keep-this-tag-format, tags-are-optional, 
beware-with-underscores-in-markdown, example

Simplemente como se indica, reemplazar la primera línea por el título del post —este será finalmente el nombre del archivo— y el resto del texto sustituirlo por nuestro contenido en formato Markdown aquí tienes información al respecto—, también la categorías en caso de utilizarlas. El proceso continuará tan pronto como salgamos del editor, este nos ofrece tres opciones:

  • Postear la entrada.
  • Editar nuevamente el contenido.
  • Guardarlo como borrador.
To preview the entry, open http://example.com/blog/title-on-this-line.html 
in your browser [P]ost this entry, [E]dit again, [D]raft for later? (p/E/d) _

Por defecto bb.sh está configurado para trabajar en Markdown —el original de John Gruber—. El script busca automáticamente el ejecutable Markdown.pl en nuestro sistema, si no está instalado y vamos a utilizar Markdown seguiremos estos pasos.

Descargamos el archivo Markdown.pl y lo copiamos en la carpeta apropiada:

Markdown_1.0.1.zip

unzip Markdown_1.0.1.zip & cd Markdown_1.0.1 
sudo cp Markdown.pl /usr/local/bin

En caso de no instalar Markdown.pl —o simplemente no usar este lenguaje de marcas—, lo indicamos mediante la opción -html y la edición del post se hará en formato HTML:

./bb.sh post -html

Ahora nuestro archivo de edición se verá así:

Title on this line

<p>The rest of the text file is an <b>html</b> blog post. 
The process will continue as soon as you exit your editor.</p>

<p>Tags: keep-this-tag-format, tags-are-optional, example</p>

Otras opciones

Editar un archivo .html o .md ya publicado

./bb.sh edit -n foo.html  
./bb.sh edit -n foo.md  

 o 

./bb.sh edit -f foo.html

Dónde:

-n: Dar un nombre nuevo al archivo si el título ha cambiado.

-f: Edita el archivo HTML completo en lugar de solo una parte del texto —preserva el nombre—.

Borrar, reconstruir, eliminar (todo)

./bb.sh delete nombre_de_archivo  ## Elimina un archivo especificado

./bb.sh rebuild  ## Regenera todas la páginas y posts, 
                    preservando las entradas

./bb.sh reset  ## Elimina todo excepto el script (precaución)

Ejecuta ./bb.sh para ver toda la información.

En el caso de la opción reset las copias de seguridad (.backup.tar.gz) son preservadas.

Configurar opciones globales

bashblog_img-01

Esta herramienta es muy configurable, algunos cambios podrían ser:

  • Título del blog.
  • Descripción del título o sitio Web.
  • Cantidad de artículos que se mostrarán en la página principal.
  • Configuración de:
    • Email
    • Autor
    • Twitter
    • Disqus
    • Cabecera y pie de página
    • Etc.

Esta acción se puede realizar de dos formas:

  1. Crear un archivo .config y editar las variables necesarias.
  2. Editar directamente el archivo bb.sh.

Si optamos por la 1ra. opción debemos tener en cuenta la sintaxis variable_nombre=»valor» —el signo igual (=) no debe tener espacios alrededor—. Hay que tener en cuenta que las configuraciones en el archivo .config tienen precedencia sobre el archivo bb.sh

Un ejemplo simple de ambos casos podría ser este:

bashblog-img-02

bashblog-img-03

De forma predeterminada bb.sh no corta las líneas de texto en la página principal, los artículos se mostrarán completos. Si queremos que solo sea visible un extracto del artículo debemos utilizar la etiqueta <hr> en HTML, y 3 o más guiones - - - en Markdown, algo similar a lo que ocurre con la etiqueta more.

bashblog-img-04

bashblog-img-05

Fuente:

https://github.com/cfenollosa/bashblog

¿Te resultó interesante? Compártelo ...



Percaff_TI99

Publicado por Percaff_TI99

http://gutl.jovenclub.cu/ » Forma parte de GUTL desde el 10 agosto, 2013. Amante de la ciencia y tecnología en general. Usuario de GNU/Linux desde hace varios años.

Este artículo tiene 8 comentarios

  1. This is just another great post! Excelente contenido. Gracias por compartir Percaff_TI99

Los comentarios están cerrados.