13 de octubre de 2010

Instalando Cherokee y MoinMoin en ArchLinux

Instalación de ArchiLinux

ArchLinux (http://www.archlinux.org/) es una distribución de Linux que tiene como objetivo la simplicidad, «Keep It Simple» es su eslogan. Hace algún tiempo había oído hablar bastante bien de ella, pero no había encontrado el tiempo para probarla.

Como también estaba pensando en reorganizar la red en casa, pensé que esta era una buena oportunidad para probar esta distribución.

La instalación es bastante similar a otras distribuciones, aunque sólo en modo texto, el instalador sigue una secuencia de pasos y nos va presentando opciones. Desde aquí puede verse una de las características de ArchLinux, siempre supone que el usuario sabe que es lo que esta haciendo. Por ejemplo un paso antes de finalizar la instalación es presentar al usuario una lista con los archivos de configuración para que pueda customizar el sistema por completo.

En caso de duda uno puede ayudarse de la guía oficial para los detalles más puntuales y la guía para principiantes, si es la primera vez que usan ArchLinux.
De todos me encontré con un par de inconvenientes:

  • Antes de terminar la instalación, grub no podía instalar el sector de arranque en /dev/vda (la instalación fue en una máquina virtual de kvm usando virt-manager). Consultado el wiki entre la solución, primero hay que hacer que la instalación falle, de manera que los archivos necesarios queden en /boot, y luego proceder como en el wiki. 
  • Al iniciar el arranque no encuentra /dev/vdaX para montar como directorio root. El problema es que el disco de inicio o initrd no contiene los drivers para virtio (virtio_blk, virtio_pci), consultando de nuevo el wiki la solución es agregar al final de la instalación los drivers al tener la oportunidad de configurar el archivo mkinitcpio.conf.
Una pieza fundamental para un servidor es openssh, cuya instalación es ejectuar pacman -S openssh y editar los archivos /etc/hosts.allow y /etc/hosts.deny para permitir conexiones. Pueden consultar el wiki para más detalles.

El resto es bastante simple para pacman -Syu para sincronizar y actualizar con los repositorios. 
Instalación de Cherokee y MoinMoin

Para instalar Cherokee ejectuamos pacman -S cherokee, queremos que cherokee se ejecute desde el inicio del sistema tenemos que modificar el archivo /etc/rc.conf y agregar cherokee a la línea DAEMONS.
Una de las ventajas de Cherokee es que tiene un wizard que automatiza la tarea de editar el archivo de configuración, simplemente apuntando donde están los archivos de MoinMoin y spawn-fcgi.
Para poder ejectuar MoinMoin necesitamos instalar spawn-fcgi y moinmoin, para ello basta pacman -S moinmoin spawn-fcgi.

Ahora necesitamos preparar un directorio para que puede ser utilizado por la instalación de MoinMoin. Por ejemplo:

Creamos la carpeta
# mkdir /srv/http/wiki
# cd /srv/http/wiki
Copiamos los archivos de configuración y creamos un enlace para los archivos estáticos
# cp -R /usr/share/moin/* .
# cp server/moin.fcgi config/wikiconfig.py .
# ln -s /usr/lib/python2.6/site-packages/MoinMoin/web/static/htdocs htdocs
Corregimos permisos para que sean accesibles por el servidor web
# chown -R http:http /srv/http/wiki
# chmod -R ug+rwx /srv/http/wiki
# chmod -R o-rwx /srv/http/wiki
Nota: Opté por el camino más simple de copiar todos los archivos pero al parecer no todos son necesarios en una instalación y se podría evitar copiar algunos.
Ahora usando el wizard de Cherokee podemos agregar nuestro MoinMoin. Comprobar que en Sources este correctamente seteado en el interprete que archivo debe ejecutar /srv/http/wiki/moin.fcgi (la línea aparecía trunca en mi servidor).

Para terminar de configurar MoinMoin puede servirse de alguna de las guías del wiki. Pueden usar como punto de partida las guías para Ubuntu o Centos, obviando la parte de la instalación de paquetes.

Para un próximo artículo la instalación de Gitweb en Cherokee.

Update (02/11): Debido a una reciente actualización del interprete default de python a la versión 3.x, mi setup dejo de funcionar. Para arreglarlo seguí parte de este artículo, en concreto lo que me ayudo es borrar los archivos en la cache, en mi caso también tuve que editar algunos archivos .py para que apunten al intérprete correcto /usr/bin/python2.

3 de octubre de 2010

Lista de tareas pendientes.

  • Estoy aprendiendo Scala, es un lenguaje que combina programación funcional con programación imperativa, usando la máquina virtual de java. Tiene una sintaxis muy amplia y rica, que puede parecer demasiado compleja para manejar adecuadamente.
  • Migrar mis repositorios a un sistema de control de versiones distribuido. La mayoría de las cosas que hago son simples y subversión es suficiente, pero los sistemas distribuidos tienen ciertas ventajas interesantes (historial local, branches). Por ahora Git y Mercurial son las alternativas más interesantes, idealmente me gustaría poder conservar el historial de cambios que tengo.
  • Estuve usando Eclipse como IDE de Scala. Con mi configuración (un quad core 2 Ghz y 4 Gb de memoria) es lento, y a medida que pasa el tiempo se ralentiza cada vez más, hasta el punto que es mejor cerrar todo y volver a abrirlo. Ni recuerdo que fuera tan lento cuando tuve que usarlo para programar en C++, supongo que sera culpa de algún plugin, lo que me hacer acordar a Firefox y sus problemas de memoria.
  • Como IDE alternativa decidí probar Emacs, es más difícil de configurar satisfactoriamente, le falta algunas facilidades más avanzadas (como autocomplete), pero debo decir que no me llevo mucho tiempo acostumbrarme, y me sentí más productivo que en Eclipse. Esto me motivo a intentar aprender un poco más.
  • En el lapso de algunos meses rompí un par de discos rígidos, afortunadamente no perdí información, pero debería implementar alguna forma de copias de seguridad, para empezar los archivos de configuración.
  • Otra forma de tener un copia de seguridad de mis archivos de configuración es escribir en el blog algunos artículos al respecto.
  • En algún momento tenía configurado Redmine, pero alguna transición de paquetes en Debian Squeeze hizo que se rompa la instalación. Aunque Redmine siempre me simpatizó por su completitud y cierta facilidad de uso, lo que no me gusta es que este programado en Ruby.
  • Estaba usando TWiki como wiki interno (es más enterprise), pero cayó en desgracia en Debian por motivos varios, en principio me mude a Foswiki (un fork open source de TWiki), pero por ahora no parece que vaya a ser empaquetado oficialmente dentro de Debian. Así que estoy considerando migrar a MoinMoin, pero veo difícil poder conservar el historial, además TWiki/Foswiki estan programados en Perl lo que agrega cierta dificultad tratar de hacerlo a mano.
  • En estos días me surgió la inquietud de hacer algún curso. Es una época fea del año porque la mayoría de los cursos van por la mitad del segundo cuatrimestre, pero voy a ver si encuentro algo que me guste.
  • Tengo que encontrar algún libro que me guste, no puede ser que hace más de un año que no encuentro uno que guste de verdad.
  • Debería tomarme algunos días de vacaciones, me las debo.