Blog con Pelican y GitHub
Actualización
Pueden ver una actualización de estas instrucciones en este nuevo post
Instrucciones
El sitio con las intrucciones sobre Pelican es este. Casi todo el contenido siguiente está basado en las instrucciones de Nicholas Tan Jerome. Para instalar Pelican se puede usar "pip", más adelante hay más detalles, pero como referencia veloz basta decir que se puede hacer sencillamente (en la rama "source" y desde el ENV que se creará más adelante):
|
|
La idea para trabajar Pelican con Git es tener un directorio para el repositorio con el nombre de la página, y dentro de él un directorio para el virtualenv donde va a correr el Pelican. Por ejemplo, algo así (más adelante se explica en qué ramas del repositorio se almacenará el código fuente del sitio, y las páginas del blog propiamente dichas):
|
|
Primero armo un repositorio (vacío) en GitHub para alojar mi blog personal. GitHub ofrece la dirección nombreUsuario.github.io con este propósito. Luego clono el sitio en un directorio local donde se desea mantener el blog:
|
|
Como el repositorio lo creé vacío, sin más que el README.md, entonces éste es el único archivo que existe en el directorio ~/documentos/nombreUsuario.github.io
Para instalar el virtualenv (medio ambiente virtual) en el directorio deseado:
|
|
La última instrucción puede reemplazarse por "source ENV/bin/activate"
Esas instrucciones dejan el entorno listo con un Python funcional (y sus librerías). Los directorios instalados dentro de ENV son:
- bin
- include
- lib
- lib64
La última orden (. bin/activate) activa este entorno y cambia el prompt (que aparecerá precedido de ENV).
El directorio ENV no necesita ser mantenido en el repositorio de GitHub (eso sí, si se trabaja el blog desde distintas computadoras, hay que tenerlo instalado en cada una), así que conviene agregarlo al .gitignore con la siguiente linea en ese archivo (igual finalmente lo saqué, así al clonar el repositorio del blog en una computadora nueva no lo tengo que instalar):
- ENV/
Tampoco interesa mantener los archivos de backup así que también se puede agregar este renglón:
- *~
Con git status veremos que estamos en la rama "master" y que falta el commit para agregar el archivo .gitignore. Entonces hacemos:
|
|
Nuestra rama local de master queda adelantada respecto de la rama master en el repo externo. Esto lo avisa el sistema ante la última orden ingresada.
Dado que al repositorio externo no vamos a necesitar subir los archivos de Pelican y los que surjan de la configuración del sitio, entonces instalamos este programa en una nueva rama que llamaré "source":
|
|
(alternativamente estas dos instrucciones se pueden condensar en una sola: git checkout -b source)
Para instalar Pelican hay 3 opciones (y no hay que olvidarse que se instala en el ENV). Hay que estar atento a que no haya errores, porque sino se instala mal y, por ejemplo, más tarde puede no funcionar "make serve".
|
|
La primera vez tras la instalación se debe ejecutar la orden pelican-quickstart para configurarlo (va el guión entre las dos palabras). Tras ese comando, y tras contestar todas las preguntas que aparecen, no solamente se guarda la configuración deseada (en los archivos pelicanconfig.py y publishconf.py), sino que se generan todos los archivos que Pelican necesita (incluso dos directorios nuevos: content y output). El site url que elijo es http://nombreUsuario.github.io
El contenido de pelicanconf.py tras responder a las preguntas de pelican-quickstart y además editar manualmente el archivo para completar los datos, queda así:
|
|
Y el contenido de publishconf.py queda así:
|
|
Guardo un post armado en Markdown o restructuredText dentro del directorio content, así cuando vaya a generar el sitio voy a tener un contenido (para que ver algo cuando cargue el blog).
Genero el sitio con make html (procesa todos los archivos del directorio content y aloja el sitio resultante en el directorio output) y ejecuto el servidor local con make serve:
|
|
El sitio lo puedo visitar en http://localhost:8000. Veo que tiene un problema para encontrar el CSS, no sale bien formateado. Sin embargo, luego cuando subo el sitio al repositorio externo, corroboro que la página carga bien.
Una alternativa, que permite que la edición se refleje inmediatamente en el sitio, es usar la siguientes dos instrucciones, la primera combina make html junto con make serve (el sitio se regenera ante cualquier edición de su contenido, y permanece accesible en el localhost) y la segunda es para detener el servicio.
|
|
Voy a agregar todo al branch source:
|
|
Lo que sigue es casi textual de la página de la página de Nicholas, se explica como hacer push del sitio al repositorio externo:
Supongamos estar en la rama "source". Lo que se verá al acceder al blog, es lo que esté en la rama "master", así que hay que copiar allí las páginas html de la carpeta output. Nicholas propone usar un script llamado ghp-import para facilitar esa tarea. Este script exporta el contenido de la carpeta que se menciona en la linea de comandos (al ejecutarlo) hacia la rama "gh-pages". Por eso es necesario durante la puesta a punto inicial, crear una rama con ese nombre antes de correr el script, y luego hacer un merge desde la rama "master" con la rama "gh-pages"
Si no está instalado ghp-import, se puede instalar con:
|
|
Finalmente, eston son los pasos restantes:
|
|
Cuando hice el merge creo que no estaba más .gitignore en la rama master. Así que lo creé de vuelta, tuve que agregarlo y comitearlo.
Hay que esperar un rato hasta que el sitio esté accesible (sólo la primera vez, las siguientes actualizaciones que se hagan permiten acceder al nuevo contenido inmediatamente).
Se podría hacer un push que incluya sólo el contenido de la rama "master", pero hacer un push de todas las ramas no molesta a nadie.
GitHub pregunta el nombre de usuario y la contraseña al hacer el push al repositorio online.
La página para acceder al blog es nombreUsuario.github.io
Agregado de posts
Al agregar nuevos posts (hechos con restructuredText o Markup, que deben ser guardados en el directorio "content") es necesario efectuar los siguientes pasos (suponiendo que uno está actualmente en la rama "source":
|
|
Ultimos detalles
Para usar el tema Elegant hay que instalar Beautiful Soup y para usar el plugin que permite embeber videos de youtube hay que instalarlo:
|
|
Problemas con GitHub
Puede suceder que tras esperar media hora, luego de subir el sitio, siga dando un mensaje de error (404) al intentar visitarlo en su dirección final. Aparentemente esto puede evitarse si la subida se realiza mediante SSH en vez de hacerlo mediante HTTP. Esto lo advertí en las instrucciones de Leonard Axelsson. Las instrucciones para generar las llaves SSH (SSH keys) están en esta ayuda de GitHub, mientras que el cambio propiamente dicho se explica en Changing a remote's URL, también en GitHub.
{{ template “_internal/disqus.html” . }}