Migrando mi blog a Octopress

4 minuto de lectura

Ayer tomé la decisión de migrar mi blog en wordpress a algo mas liviano y que no consumiera parte de lo escaso que me queda de server. Les recuedo que mi server no es ninguna maravilla, es más, califica como WC.

processor	: 0
vendor_id	: GenuineIntel
model name	: Intel(R) Pentium(R) 4 CPU 2.40GHz
cpu MHz		: 2399.962
address sizes	: 36 bits physical, 32 bits virtual

Por otro lado quería darle un poco mas de utilidad a una de las raspberry-pi que compré hace un tiempo, así que me decidí y manos a la obra.

Elección de un buen sistema de blogging

Hace rato estaba mirando el cómo github publicaba los blogs de contenido estático con los dominios de los usuarios. Muchos lo hacen con algunas herramientas provistas por github y otros con herramientas que generan contenido a partir de archivos de textos escritos en algún lenguaje, uno de los más usados es Markdown Language

Jekyll-bootstrap y Ruhoh

Acompañado de un buen lenguaje hay que elegir un sistema de contenido que lo soporte, desde antes ya estaba mirando Jekyll-bootstrap y se veía bien prometedor, hasta que el creador lo deprecó para iniciar un nuevo proyecto. El nuevo proyecto se llama Ruhoh y tiene una lista interesante de funcionalidades, tales como:

  • Soporte para Markdown
  • Template con Mustache
  • Administración del contenido con GIT
  • Gestión mediante línea de comandos
  • Open Source, MIT License

Octopress

Entre los tantos twitts inútiles y de fútbol que pone @cereal_bars, escribió acerca de Octopress. Cumple con la mayoría de las funcionalidades que andaba buscando además de ser simple y lo mejor de todo, es que hay algunas herramientas de migración desde wordpress a Octopress. Con esto último me quedé.

Migración de Wordpress a Octopress

Hay una herramienta super simple Exitwp que toma un export hecho desde wordpress y lo convierte en archivos markdown, listo para poner en Octopress. Algo importante de remarcar, no hace migración de contenido estático desde wordpress, es decir, las imágenes subidas a WP las debes mover manualmente.

Siguiendo el paso a paso no tendrán ningún problema.

Usando Octopress

Octopress trae un par de tareas en rake para que puedan levantar un webserver y poder mirar como esta quedando su blog antes de ponerlo en “producción” o hacer deploy. Veamos un par de pasos para usar Octopress.

Primero hay que descargar Octopress desde el repositorio en github

$ git clone git://github.com/imathis/octopress.git octopress

Debemos asegurarnos de tener ruby (al menos la 1.9.3) instalado en el sistema, les recomiendo que usen rvm sino tienen permisos de root.

$ ruby --version
$ gem install bundler #instalación de bundler para administracion de dependencias (gems)

Luego nos metemos dentro del directorio Octopress y ejecutamos la instalación de las gemas con bundler

$ bundler install

Finalmente instalamos el theme por omisión de Octopress

$ rake install

Ahora a bloggear con Octopress

Gestión del contenido con git

Primero deben cambiar el origin del repositorio que clonaron y apuntarlo a un nuevo origin (su repo).

$ git remote rm origin                  # borrar origin
$ git remote add origin user@host:su-repo.git # agregar nuevo origin
$ git push origin master						# push al nuevo repo

Ahora para crear un nuevo post solo deben ejecutar una tarea con rake de la siguiente forma:

$ rake new_post["Titulo de su nuevo post"]

Esto creará un archivo dentro del directorio ./source/_posts/ listo para ser escrito. Una vez escrito el post solo deben agregar el archivo al repo git y hacer commit, push, pull y todo lo que saben hacer con git para administrar sus versiones.

Para poder pre visualizar el contenido generado pueden hacer lo siguiente:

$ rake generate # genera el contenido estático (html)
$ rake preview	# levanta el servidor web 

Esta última instrucción levanta un servidor web para que puedan pre-visualizar el cómo esta quedando el blog y jugar con el. Si quieren hacer cambios en caliente e ir mirando deben ejecutar.

$ rake generate # genera el contenido estático (html)
$ rake watch    # esto mira los cambios y regenera el contenido
$ rake preview	# levanta el servidor web 

Infraestructura

Como les había mencionado, quería ahorrar algunos ciclos de cpu de mi WC porque esta algo colapsado, así que decidí usar una raspberry-pi como webserver con Nginx. Para poder hacer que todo quedara automatizado con git, tuve que hacer un par de artilugios que me permitieran que al momento de hacer un push en una rama especifica (master) se publicara el nuevo post o modificación que se le haya hecho al sitio.

Octopress trae una tarea rake para hacer deploy, deben mirar el archivo que se llama Rakefile

Todo junto: git + gitlab + jenkins + ssh + rsync + nginx

Les explico el ciclo completo para que entiendan las herramientas que estoy usando para la automatización.

  • Git: no hay mucho que explicar ;)
  • gitlab: es un administrador de repositorios git muy interesante, recomendado.
  • jenkins: servidor de integración continua y otras vainas
  • ssh: algo que decir? god bless you damn SSH
  • rsync: después de las papas fritas y el ketchup, el mejor invento para sincronizar archivos.

Al momento de hacer un push en el servidor git (gitlab) a través de un web-hook se detona una tarea en jenkins, en jenkins se crea una serie de configuraciones que ejecutan las tareas rake de generación del contenido estático y luego hace el deploy del sitio. Aquí entra a jugar rsync + ssh ya que finalmente hace el deploy en la raspberry-pi que sirve el contenido a través de nginx. Omití todas las configuraciones de claves ssh publicas que hay que pasear por todos los involucrados.

Con esto queda automatizado todo el proceso desde que se hace un push en la rama que Jenkins esta construyendo.

Espero les sirva y se animen con Octopress, esta bien interesante. Vean su documentación esta bien completa.

Comentar