Instalar Nikola, crear post, deploy de tu blog en github, etc. [ubuntu].

Posted: 2013-02-24 14:18 [Source]
Tags:  Nikola github blog

Así lo hice yo, no quiere decir que es la mejor forma, si saben una mejor, compartan ¬¬.

En este post se darán los pasos para crear un blog utilizando nikola y hacer el deployment en github. Todos los comandos de abajo son en la consola de linux.

Este blog que estás leyendo está hosteado en Github Pages , el servicio de hosting gratuito de contenido estático que ofrece Github.

Lo primero es lo primero

Tengo que referenciar de donde saque la info.

es un sitio estático y un generador de Blog. Aquí se veran los comandos básicos

El entorno

Antes que nada, debemos configurar nuestro entorno python. Porque muchos programas instalan varias versiones de python en tu sistema. Por esto a veces es difícil configurar un espacio de trabajo limpio para que ejecutes tus programas.

Sandbox

segun wikipedia:
El concepto del sandbox (a veces llamado también directorio de trabajo, servidor de pruebas o de desarrollo, o en un contexto limitado: host virtual) es normalmente desarrollado y gestionado por un software de control de revisiones, mediante el cual, los desarrolladores trabajan con una copia del código fuente, datos o información sin alterar el original. Después que el desarrollador ha comprobado que los cambios se ajustan a lo esperado, tiene la opción de transformarlos en definitivos en el objeto de trabajo.

En el tuto que encontré en shisaa.jp usaba para esto Virtualenv.

sudo pip install virtualenv

Ahora podemos configurar nuestro entorno virtual

virtualenv --python=python2.7 tu/directorio

Con esto le decís a Virtualenv que ocupe python 2.7 en ese directorio, entramos al mismo y ejecutamos

source bin/activate

para cargar este entorno sandbox al shell. Y listo, si lo hiciste bien podes ver el nombre del directorio actual entre paréntesis en tu terminal, eso es todo, ahora a instalar Nikola.

Instalar Nikola

sudo pip install nikola

Crear Repositorio en Github

El nombre del repositorio debe ser:
username/username.github.com

una vez creado, clonamos el repositorio en nuestro lugar de trabajo.

git clone https://github.com/user/repo.git

lo que se suba al master, sera lo que se muestre, nosotros queremos que sea la carpeta output generado por Nikola. Entonces crearemos una nueva rama que contendrá todo el proyecto de nikola(no solo la carpeta output) ejecutamos

git branch nombre_del_branch
git checkout nombre_del_branch

Iniciar un nuevo proyecto de nikola

nikola init blog

con esto nikola crea la carpeta "blog" que contiene los siguientes directorios:

files

galleries

listings

posts

stories

Aca me detengo para explicar para que es cada directorio

En el directorio files van los archivos que queres tener disponibles en los post, debes ponerlos ahí y no directo en el output porque tiene que ser registrados por nikola, el solo los pasa cuando haces un build. galleries sirve para crear galería de fotos. En este directorio, podes crear directorios tantos como quieras, cada uno es una galería independiente. En listings, van los archivos de código fuente que queres mostrar. Nikola creara una pagina de listados de código, con sintaxis remarcada para cada archivo que exista en esta carpeta. post este directorio contendrá todos tus posts con el formato que hayas elegido en el conf.py. y por ultimo stories aquí van las paginas estáticas que no son post, por ejemplo "contact" o "about", etc.

Continuamos entrando a la carpeta

cd blog

Nuevo post

Para crear un post utilizamos el comando en bash:

nikola new_post

el cual nos pedira que ingresemos el titulo. luego podrás editar el archivo que se creo en la carpeta posts, tenes que saber un poco de Structured text (el cual yo no se XD) para poder formatear un poco el estilo de las paginas y que no se vean tan horribles como la que estas leyendo.

Eso es todo, para poner imágenes, galerías de imágenes, vídeos, y demás yerbas, vayan al handbook de nikola.

Construir

para construir y que nikola haga el trabajo de construir los archivos estáticos y genere el "output" ingresamos este comando:

nikola build

Correrlo

nikola serve

ahora podes visitar http://localhost:8000/ y ver como quedo.

Subir los archivos a github

en el mismo branch que estamos, se supone que están en el branch creado y no en el master ejecutamos los siguientes comandos:

git add .
git commit -m "subida de archivos"
git push origin nombre_del_branch

Cambiarse al master

git checkout master

si por ahi le tira bardo al cambiar de branch y están seguros que no hay nada importante que se pueda perder, tiren el comando

git checkout -f <branch>

como dije antes lo que va a contener el master sera lo que queramos desplegar, en este caso con nikola es la carpeta "output" que se genera cuando le das al comando "nikola build" para hacer esto ejecutamos:

git read-tree nombre_del_branch:ruta/hasta/output
git commit -m "deploying last build"
git push

y listo, con eso ya tenemos hecho el deployment, la idea supuestamente es trabajar en la rama, y luego sincronizar en el master solo el output, con el código de arriba se hace esto. Debe haber una manera mas feliz y fácil de hacerlo, por ahora lo hago asi y funciona.

Una manera mas automática seria configurar el array de comandos para hacer el deploy en el conf.py.