Pelican: Generador de blogs estáticos para hackers.

Hola GUTL:

Después de un tiempo sin molestar sus neuronas con mis artículos(trato de buscar siempre algo interesante que mostrarles), hoy les quiero presentar un generador de blogs estáticos escrito en Python(obvio no?). Acotar también que gran parte del crédito de este artículo se le debe dar a @dhunter ya que el me dio los pininos sobre este framework.

Se define como blog estático aquel blog que no posea base de datos ni lógica del lado del servidor. A veces queremos hacer una bitácora, y nos topamos con, por ejemplo, wordpress, el cual, a pesar de tener 5 sencillos pasos, requiere una base de datos para funcionar :(, y yo lo que quiero es un monopatín, no un Audi.

Sin mas preámbulo, les presento a Pelican, que, no es el ave marina, es un anagrama, de calepin, o blog de notas en francés. Existen otros generadores de blogs, entre ellos Octopress(ahora si, el pulpo), el cual está escrito en Ruby(fue mi primera opción) pero aún estoy en pañales.

Pelican incluye en sus funcionalidades:

  • Formato de entrada en reStructuredText, Markdown, o AsciiDoc.
  • Formato de salida completamente estática(HTML, CSS, JS, imágenes).
  • Temas configurables usando el sistema Jinja de plantillas.
  • Internacionalización.
  • Sindicación RSS/Atom.
  • Coloreado de sintaxis(muy útil).
  • Puede importar de WordPress, RSS y otros servicios.
  • Sistema modular de plugins.

Después de leer tan atractivas opciones, es dificil no caer rendidos a sus pies. Así que pues manos a la obra y hagamos nuestro blog estático.

Preparando el terreno:

Ya saben, pico, pala, martillo y cincel. De preferencia un vasito de café 😀

Requisito? Tener Python y virtualenvwrapper instalado(recomiendo personalmente usarlo sobre virtualenv). Para esto hacemos

Debian, Ubuntu y sus tropecientos hijos:

aptitude install python-virtualenvwrapper

Fedora y demás:

yum install python-virtualenvwrapper.noarch

La gente de DL(Arch):

pacman -S python-virtualenvwrapper.noarch

virtualenvwrapper es una herramienta para crear entornos de Python estériles o aislados(isolated). Con esto nos aseguramos que tendremos una o varias instalaciones de Python diferenciadas(por ejemplo, una para desarrollo web, otra para desktop, y así no sobrecargamos el sistema con librerías).

Luego, nos movemos al directorio donde trabajaremos, en mi caso es /home/ozkar/public_html. Aquí crearemos nuestro entorno virtual, de la siguiente forma:

mkdir gutl_pelican

cd gutl_pelican/ && mkvirtualenv gutl_pelican

Debe salirles algo como:

New python executable in gutl_pelican/bin/python
Installing Setuptools....................................................done.
Installing Pip...........................................................done.
(gutl_pelican)[09:53:59] ozkar@durotar ~/public_html/gutl_pelican  +

Fijense que el prompt de bash indica que está dentro del entorno, para salir teclearemos

deactivate

Para regresar al entorno virtual teclearemos(desde la carpeta de nivel superior o desde el  /home)

workon gutl_pelican

virtualenv tiene una curva de aprendizaje poco pronunciada, así que les recomiendo un man virtualenv.

Si todo es satisfactorio, ya tendremos nuestro entorno aislado de python, como ven, ignora todas las libs de python del sistema y solo instala pip(man pip) y setuptools. Ahora procederemos a instalar las dependecias de Pelican. Para ahorrarles trabajo, he aquí las dependencias.

Dependencias de Pelican

Luego que tengamos las dependencias en nuestro HDD, las descompactaremos, abriremos una terminal en el directorio de las dependencias y teclearemos:

python -m SimpleHTTPServer

Esto nos inicia un servidor web con dirlisting, muy sencillo, el cual usaremos para instalar a travéz de pip.(No es la solución más elegante, ni la más ortodoxa, pero algunos no tienen acceso a Internet).Para comprobarlo, con un navegador iremos a http://localhost:8000

Luego, con nuestro edtior de texto preferido, le diremos a pip que utilice nuestro repo local, ya que por defecto, usa http://pypi.python.org/pypi. Nuevamente con nuestro editor preferido iremos a ~/.pip.conf(si no existe lo creamos) y dentro pondremos:
[global]
timeout = 60
index-url = http://localhost:8000/

Con esto ya pip utilizará nuestro minirepo. Luego, dentro de nuestro entorno virtual de python(recuerden, delante del prompt de bash debe estar entre paréntesis el nombre del directorio, en caso contrario, workon gutl_pelican). Luego haremos:

pip install pelican --pre

Al final debe salir algo como:

Successfully installed pelican feedgenerator jinja2 pygments docutils pytz blinker unidecode six markupsafe
Cleaning up...

Y tachán!! Ya tenemos pelican instalado, para comprobarlo:

pelican --help

Creando el blog.

Bueno, ya temenos Pelican, pero, y el blog? Sencillo, nos bajamos este pequeño esqueleto creado por @dhunter:

Esqueleto de blog en Pelican

Luego de descargado y descompactado lo copiaremos para dentro de nuestro entorno virtual(gutl_pelican). Fijense que la estructura del esqueleto es:

pelican_skeleton/
├── blog
│   ├── images
│   ├── pages
│   └── rst
├── output
├── regen.sh
└── settings.py

La carpeta blog contendrá todas nuestras fuentes, output contendá el blog ya generado, regen.sh es la instrucción bash para crear el blog y settings.py contiene los metadatos de nuestro blog. Abriremos con nuestro editor de texto(o IDE) este fichero, settings.py y lo adecuaremos a nuestro parecer. Por ejemplo:

# -*- coding: utf-8 -*-
AUTHOR = u'Ozkar'
MAIL_USERNAME = 'ozkar'
MAIL_HOST = 'somehost.com'
SITENAME = u'Pelican GUTL'
SITESUBTITLE = u'sitio demostrativo'
SITEURL = 'http://127.0.0.1:8000'
TIMEZONE = 'America/Havana'
SECTIONS = [('About', 'pages/about.html'),]
DEFAULT_CATEGORY = ''
DATE_FORMAT = {
'en': '%d %m %Y'
}
TWITTER_USERNAME = 'ozkargarcell'
GITHUB_URL = 'http://ozkargarcell.github.io'
PDF_GENERATOR = False
REVERSE_CATEGORY_ORDER = True
DEFAULT_PAGINATION = 10
LOCALE = ""
SUMMARY_MAX_LENGTH = 40
DISPLAY_PAGES_ON_MENU  = True
FEED_RSS = 'feeds/all.rss.xml'
OUTPUT_PATH = 'output'
STATIC_PATHS = ['images']

Luego de esto, dentro de nuestro entorno virtual(recuerden, si no estás en el, activarlo con workon gutl_pelican) haremos:

bash regen.sh

Debe salir algo como:

$ bash regen.sh
WARNING: No valid files found in content.
Done: Processed 0 articles and 0 pages in 0.13 seconds.

Si todo es satisfactorio, haremos lo siguiente:

cd output && python -m SimpleHTTPServer

Abriremos un navegador y tendremos algo como:

pelican-setup

Nuestro primer post.

Ahora crearemos nuestro primer post, para ello con nuestro editor de texto crearemos un fichero dentro del directorio rst de nuestro blog.

Ejemplo:

vim rst/my-first-post.rst

Y dentro algo como:

pelican-vim

Nuestra primera página.

Ahora crearemos nuestra primera página, para ello con nuestro editor de texto crearemos un fichero dentro del directorio pages de nuestro blog.

Ejemplo:

vim pages/about.rst

Y dentro algo como:

pelican-vim2

Luego de creados el post y la página, iremos a nuestro entorno virtual y haremos:

bash regen.sh

Luego:

cd output && python -m SimpleHTTPServer

Nuevamente iremos a nuestro navegadoir para ver los cambios:

pelican-browser1

Cada vez que hagan algun cambio en el blog, deben hacer bash regen.sh para regenerar los ficheros HTML y demás.

Eso es todo GUTL; espero que se diviertan con el juguetito. El post es bastante largo pero me atrevo a asegurar que la guía está bastante potable.

Fuentes:

http://octopress.org/docs/

http://blog.getpelican.com/

http://xr09.github.io/

http://fjavieralba.com/pelican-a-static-blog-generator-for-pythonistas.html

 

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



Ozkar

Publicado por Ozkar

http://codeshard.github.io/ » Forma parte de GUTL desde el 6 diciembre, 2011. Soy uno ahí, no seas como yo...

Este artículo tiene 25 comentarios

  1. Ozkar:

    Cuando decidimos crear Alarife 3, aplicación para generar enciclopedias o sitios web temáticos portables, escogimos un camino diferente pero menos adusto.

    Es cierto, Alarife 3 (el generador) necesita de un servidor; pero, después de dos click ya estás creando tu sitio, blog o como quieras llamarle al resultado que te genera y, para parecernos a los demás CMS, le añadimos la posibilidad de consultar el contenido en línea a la medida que se va creando a otras personas que no sean los editores.

    Luego, convencí a Maikel Pernía y este, junto con Herlin Matos, desarrollaron Alarife 4, aplicación de escritorio programada en C++ y Qt, que hace lo mismo que Alarife 3 pero no necesita un servidor para funcionar porque usa Sqlite embebido como gestor de base de datos.

    Son pues, estas aplicaciones, generadores de blog, sitios web o enciclopedias estáticas como Pelican pero no para hackers; sino, para personas sin tantos conocimientos que necesiten difundir o publicitar ideas y conocimientos.

    • Delio:
      No he probado ni visto Alarife, así que no puedo dar mi apreciación. En la Universidad de Ciencias Médicas de Holguín, se desarrolló un sofware, nombrado ChreasSoft que, según veo, tiene el mismo principio de funcionamiento que Alarife, pero enfocado a multimedias.
      Hay muchas aplicaciones que hacen lo que Pelican, con editores de texto enriquecido y demás. Otra cosa, para usar Pelican no es necesario tener entorno de escritorio, ni libs complejas ni nada de eso. Tan simple como tener Vim y una terminal a mano y voilá, se hace la magia.

      • Ozkar:

        Alarife, en sus versiones 3 y 4, puedes descargarlo desde REPOGUTL y, como precisaba en mi primer comentario, está concebido no para especialistas -son la minoría-, sino, para la mayoría de los usuarios que necesitan un programa amigable para difundir información.

        • Correcto, y felicidades por ello! Pero ya sabe, Pelican es siemple, donde siemple significa que sabes como funciona :D. Me descargo Alarife 4, hace unos años fuí fan de Qt4. Ahora no lo soy porque no tengo tiempo…

  2. echenle un ojo a este Jekyll, esta echo en ruby y sobre este fue que se hizo el octopress y el es reponsable de renderear todos los blog y paginas de proyectos de Github

  3. Desde que comencé con Pelican no quiero saber de WordPress, es que la idea de que todo es estático y los comentarios dinámicos con Disqus le gana a montar una bd mysql y tener un chorrero de código php corriendo en el server.

  4. dhunter:

    O sea, ¿tienes un blog estático que puedes llevar en una memoria flash y consultar sin problema alguno y si lo pones en el web, puedo hacer comentarios al contenido posteado? ¿Es así o estoy errado?

    • Contesto por él: positivo. Puedes hacer todo eso sin problemas. Lo que, necesitas un sistema de comentarios externo como disqus.

    • Son ficheros estáticos, solo lectura, para tener comentarios se usa un servicio externo (gratis) como disqus.

      Local en mi pc entro a la raiz del contenido generado (directorio blog en el ejemplo) y ejecuto «python -m SimpleHTTPServer» y se sirve por el 8080, con esto cualquier pc en la red local puede acceder al blog poniendo http://mi_IP:8080/

  5. dhunter y Ozkar:

    Cuando me refiero a comentarios sobre el contenido estoy hablando de los lectores, no del autor o administrador; o sea, ¿un lector puede hacer un comentario a un contenido estático, como se hace con wordpress, por ejemplo?

    • Le respondimos a eso mismo lo que quizás no fuimos lo suficientemente explicitos. Por defecto Pelican no tiene ningún mecanismo para esto implemetentado, hay que usar servicios externos(recuerde, Pelican no usa DB) como disqus(muy popular en estos días pero me cae gordo).

  6. a la verdad que esta barbaro este fw,pero tambien es verdad que esta tetralargo y pico,todos esos pasos para hacerlos uno a uno te coje el armagedon y no has terminado,hay que tratar de encontrar algo mas sencillo y mas rapido.Es valido el post pero realmente es muy extenso gracias nuevamente y agradeceria que existiera otra forma

    que creen de esto ?????

Los comentarios están cerrados.