joe di castrohttp://joedicastro.comMon, 27 Jun 2011 10:21:00 +0200Pelican - Introducción e Instalaciónhttp://joedicastro.com/pelican-introduccion-e-instalacion.html<p><a href="http://docs.notmyidea.org/alexis/pelican/">Pelican</a> es un generador de sitios web con contenido estático. Está orientado originalmente a la creación de blogs. <strong>Pelican</strong> (Pelicano) es una anagrama de la palabra francesa <em>Calepin</em> que significa en español "cuaderno de notas" (blog). Su creador y desarrollador principal es el programador francés <a href="http://blog.notmyidea.org/">Alexis Métaireau</a>. Y es la aplicación que genera el contenido para este blog. Personalmente le veo muchas ventajas frente a una plataforma de blogs convencional como Wordpress o Drupal, como ya comentaba en mi <a href="http://joedicastro.com/de-drupal-a-pelican.html">anterior articulo</a>. </p> <p>Pelican genera este contenido estático (páginas HTML) a partir de ficheros de texto plano formateados en un lenguaje de marcado ligero como <a href="http://es.wikipedia.org/wiki/Markdown">Markdown</a> o <a href="http://es.wikipedia.org/wiki/ReStructuredText">reStructuredText</a>. También crea fuentes RSS y Atom de los artículos. Y dependiendo del tema empleado se pueden tener un archivo de los artículos publicados, clasificación por categorías, nube de etiquetas, un <a href="http://es.wikipedia.org/wiki/Blogroll">blogroll</a>, enlaces a redes sociales, botón para tweeter, paginación, traducciones, etc. Aunque viene un tema completo por defecto y están disponibles <a href="https://github.com/ametaireau/pelican-themes">algunos más</a>, se puede crear uno completamente personalizado desde cero. La creación de estos temas se basa en el sistema de plantillas <a href="http://jinja.pocoo.org/">jinja2</a>, lo que nos permite una gran flexibilidad. También disponemos de varios scripts que nos proporcionan soporte para comentarios con <a href="http://disqus.com">Disqus</a> y de analíticas con <a href="http://www.google.com/intl/es/analytics/">Google Analytics</a> ó <a href="http://piwik.org/">Piwik</a>. También nos permite generar ficheros PDFs de los artículos automáticamente y mostrar los enlaces a ellos, siempre que los artículos se hayan creado con reStructuredText.</p> <p>Es un software muy joven, el primer commit en <a href="https://github.com/ametaireau/pelican">GitHub</a> data del 13 de Agosto de 2010, pero que ha evolucionado bastante rápido y que aún sigue desarrollándose a un buen ritmo. Es posible que por esto aún tenga alguna carencia o algún que otro fallo, pero su autor es muy receptivo y acepta de buena gana las sugerencias, informes de errores y colaboraciones de desarrollo. Cuenta con una documentación bastante decente y actualizada. Alguno que otra cosa no está documentada, pero lo veo normal dado el ritmo de desarrollo y de a quien va orientado un software como este. Es muy sencilla su instalación y su utilización cuando se ha leído esta, pero será mejor que lo explique con un ejemplo sobre la marcha.</p> <h2 id="instalaci+n_para_linux">Instalación (para Linux)</h2> <p>La instalación del mismo es relativamente sencilla si no queremos complicarnos la vida, siempre tenemos la última versión disponible en el <a href="http://pypi.python.org/pypi/pelican/2.7.2">PyPi</a>. Así que instalarlo podría ser tan sencillo como esto:</p> <div class="codehilite"><pre><span class="gp">$</span> easy_install pelican </pre></div> <p>Aunque recomiendo emplear <a href="http://www.pip-installer.org/en/latest/index.html"><code>pip</code></a> en lugar de <code>easy_install</code>, de este modo:</p> <div class="codehilite"><pre><span class="gp">$</span> pip install pelican </pre></div> <p>De todos modos desaconsejo emplear este método, me parece mejor solución, dada la velocidad de desarrollo del software, emplear un entorno virtual para su instalación. Un <a href="http://www.virtualenv.org/en/latest/index.html">entorno virtual</a> nos permite tener una versión de Python independiente de la del resto del sistema, con sus propias librerías y con el software instalado que nosotros deseemos. Todo esto solo estará disponible cuando nos encontremos dentro de este entorno virtual, sin afectar al resto del sistema. Y podemos eliminarlo o des/activarlo cuando deseemos. Es bastante más sencillo de utilizar de lo que parece y es realmente potente. </p> <p>Veamos, paso a paso, la forma en que yo lo instalaría.</p> <p>Creamos una carpeta que contendrá Pelican, el entorno virtual y el sitio que crearemos. Yo le daría el nombre de la URL del blog, por ejemplo, <em>myblog.com</em></p> <div class="codehilite"><pre><span class="gp">$</span> mdkir myblog.com <span class="gp">$</span> <span class="nb">cd </span>myblog.com </pre></div> <p>Descargamos la revisión actual del repositorio de Pelican en GitHub. Esto nos creara una carpeta llamada <em>pelican</em> que contendrá una copia del repositorio en local (lo cual nos será muy útil en el futuro para actualizarlo). </p> <div class="codehilite"><pre><span class="gp">$</span> git clone git://github.com/ametaireau/pelican.git <span class="go">Cloning into pelican...</span> <span class="go">remote: Counting objects: 2603, done.</span> <span class="go">remote: Compressing objects: 100% (1143/1143), done.</span> <span class="go">remote: Total 2603 (delta 1541), reused 2420 (delta 1374)</span> <span class="go">Receiving objects: 100% (2603/2603), 687.30 KiB | 397 KiB/s, done.</span> <span class="go">Resolving deltas: 100% (1541/1541), done.</span> </pre></div> <p>Ahora vamos a crear nuestro entorno virtual. En caso de no tener instalado <code>pip</code> o <code>virtualenv</code>, es rematadamente sencillo:</p> <div class="codehilite"><pre><span class="gp">$</span> easy_install pip <span class="gp">$</span> pip install virtualenv </pre></div> <p>Voy a llamar <em>env</em> a nuestro entorno virtual. Lo creamos así.</p> <div class="codehilite"><pre><span class="gp">$</span> virtualenv env <span class="go">New python executable in env/bin/python</span> <span class="go">Installing distribute...........................................................</span> <span class="go">................................................................................</span> <span class="go">.......................................done.</span> <span class="gp">$</span> ls <span class="go">env pelican</span> </pre></div> <p>Ahora activaremos nuestro entorno virtual para "sumergirnos" dentro de él. </p> <div class="codehilite"><pre><span class="gp">$</span> <span class="nb">source </span>env/bin/activate <span class="gp">(env)$</span> </pre></div> <p>Vemos que aparece el nombre del entorno virtual entre paréntesis antes de la línea del <a href="http://es.wikipedia.org/wiki/Prompt">prompt</a>. Eso quiere decir que nos encontramos dentro de este entorno virtual. Ahora procederemos a instalar Pelican. </p> <div class="codehilite"><pre><span class="gp">$</span> <span class="nb">cd </span>pelican/ <span class="gp">$</span> python setup.py install </pre></div> <p>Ahora tenemos ya instalado Pelican, <strong>solo dentro de nuestro entorno virtual</strong>. Si probamos a llamar al programa fuera de él, veremos que no está disponible, luego necesitaremos activar este entorno cada vez que queramos emplearlo.</p> <div class="codehilite"><pre><span class="gp">$</span> pelican <span class="go">CRITICAL: you need to specify a path containing the content (see pelican --help for </span> <span class="go">more information)</span> </pre></div> <p>Nos da un error porque no le hemos pasado los parámetros necesarios. Ahora desactivamos el entorno y volvemos a llamar al programa y nos dice que no existe.</p> <div class="codehilite"><pre><span class="gp">$</span> deactivate <span class="gp">$</span> pelican <span class="go">pelican: orden no encontrada</span> </pre></div> <p>Tenemos ahora dentro de <em>myblog.com/</em> dos directorios, <em>env</em> y <em>pelican</em>. Podríamos borrar ahora el directorio <em>pelican</em> porque ya lo tenemos instalado dentro del entorno virtual, pero sería bueno conservarlo para poder actualizarlo en el futuro mediante <code>git pull</code>. Yo crearía una tercer directorio, <em>site</em> donde se alojaría nuestro sitio, organizado a su vez en tres subdirectorios: </p> <ul> <li> <p><strong>source</strong>: sería la carpeta donde alojaríamos los archivos de texto de nuestro blog y todo aquello que quisiéramos que formara parte de nuestro sitio: imágenes, fichero <a href="http://es.wikipedia.org/wiki/Htaccess">.htacess</a>, fichero <a href="http://es.wikipedia.org/wiki/Robots.txt">robots.txt</a>, páginas personalizadas...</p> </li> <li> <p><strong>output</strong>: El resultado del procesamiento de Pelican, es decir, nuestro blog.</p> </li> <li><strong>theme</strong> : Sería el tema que usariamos para crear nuestro blog, en el estarían las plantillas <strong>jinja2</strong>, las hojas de estilo .css, el contenido estático (iconos, imágenes), ...</li> </ul> <p>Luego, lo haríamos así:</p> <div class="codehilite"><pre><span class="gp">$</span> <span class="nb">cd</span> .. <span class="gp">$</span> mkdir -p site/source <span class="gp">$</span> mkdir site/output <span class="gp">$</span> mkdir site/theme <span class="gp">$</span> ls site/ <span class="go">output source theme</span> </pre></div> <p>Ya está, tenemos instalado Pelican y creada nuestra estructura para empezar a trabajar con él. Para eso nada mejor que crear un primer sitio de ejemplo. Entramos en el entorno virtual y creamos el sitio que viene de ejemplo con Pelican:</p> <div class="codehilite"><pre><span class="gp">$</span> <span class="nb">source </span>env/bin/activate <span class="gp">$</span> pelican pelican/samples/content/ -o site/output -s pelican/samples/pelican.conf.py </pre></div> <p>Y ahora si abrimos el fichero <code>myblog.com/site/output/index.html</code> en un navegador, veremos algo como esto (en la imagen se ve la categoría cat1 seleccionada):</p> <p style="text-align:center;"><img src="pictures/sample_blog.png" alt="pelican sample blog" title="pelican sample blog" width=453 height=700 /></p> <p>Es así de fácil de emplear Pelican, simplemente especificarle el directorio donde está el origen del contenido, el directorio destino y el fichero de configuración. Aunque con el fichero de configuración correctamente creado, solo será necesario indicarle la ubicación del mismo. Para comprender mejor la estructura y como funciona Pelican, sería buena idea copiar el tema, el fichero de configuración y el contenido que han generado este sitio de ejemplo a la carpeta <em>site</em> para no empezar nuestro blog desde cero.</p> <div class="codehilite"><pre><span class="gp">$</span> cp -r pelican/samples/content/* site/source <span class="gp">$</span> cp -r pelican/pelican/themes/notmyidea/* site/theme/ <span class="gp">$</span> cp pelican/samples/pelican.conf.py site/ </pre></div> <p>En próximos artículos veremos como crear artículos, publicar el sitio, personalizar el tema y automatizar todos estos procesos para hacerlo todo mucho más sencillo. </p>joe di castroMon, 27 Jun 2011 10:21:00 +0200http://joedicastro.com/pelican-introduccion-e-instalacion.htmlpelicanpythonmarkdownrestructuredtextbloghtmlpiwikdisqus