Instalar MongoDB sobre una máquina con ARM con Linux

Hoy voy a mostrar cómo instalar paso a paso MongoDB en una máquina con procesador ARM. Estos comandos, y el repositorio que vamos a utilizar, están originalmente orientados a la Raspberry Pi, pero son compatibles con otros dispositivos con la misma arquitectura de procesador.

Pese a que MongoDB es exigente en hardware y recursos, llevo tiempo queriendo montar un entorno de desarrollo tal y como lo montaría en cualquier PC-servidor con Linux. Sin embargo, la arquitectura ARM aún no está tan extendida como para instalar cualquier servicio y no es sencillo recopilar información para preparar todo el entorno.

Antes de comenzar, deberemos instalar una serie de librerías esenciales para la instalación de MongoDB. Es probable que alguna de ellas ya la tengamos instaladas, pero por si acaso, listamos todas las imprescindibles.

sudo apt-get install build-essential libboost-filesystem-dev libboost-program-options-dev libboost-system-dev libboost-thread-dev scons libboost-all-dev python-pymongo git

Responde “yes” en caso de que el sistema operativo solicite confirmación en la instalación de las librerías y sus dependencias.

La versión de MongoDB que vamos a instalar es una versión modificada para funcionar en una Raspberry Pi, por tanto, será compatible con sistema cuyo procesador esté basado en una arquitectura ARM.

A día de hoy, pese a que existe una petición para que MongoDB de soporte a ARM respaldada por mucha gente de la comunidad, no existe otra forma de instalar MongoDB. Cruzamos los dedos para que ese día llegue pronto y me comprometo a manteneros informados sobre este asunto.

Compilación e instalación de MongoDB

Volviendo al asunto que nos ocupa, el repositorio que clonaremos de github compilará la versión 2.1.1 de MongoDB. Sí, hoy en día estamos estrenando la versión estable 2.6.0, pero no existe otra alternativa.

Para clocar el proyecto, tendremos que ejecutar el siguiente comando:

git clone https://github.com/skrabban/mongo-nonx86

Tras descargar algo más de 100MB, accederemos a la carpeta que contiene el proyecto:

cd mongo-nonx86

Ya está todo preparado para comenzar la compilación de MongoDB, esta tarea puede demorarse mucho. En el Utilite Pro, un quadcore ARM, sin paralelizar la compilación, el proceso se alargó algo más de hora y media. En una Raspberry Pi recomiendo dejarlo compilando mientras realizamos otras tareas.

He de advertir que una vez ejecutado el siguiente comando, el directorio puede llegar a pesar 2GB, por lo que revisar el espacio libre de disco antes de comenzar.

sudo scons

El comando anterior es una herramienta que se utiliza para compilar software. Una vez termine, procedemos a la instalación de sistema. El siguiente comando, también se tomará un buen rato. No sabría detallar cuanto tiempo ya que lo dejé trabajando por la noche pero, según Chris Mobberley en su blog que se enlaza al final de esta entrada, la Raspberry Pi podría alargarse unas cuatro horas.

sudo scons --prefix=/opt/mongo install

Puesta a punto de MongoDB

Una vez terminada, por fin, la instalación, sólo nos quedará por ejecutar algunas tareas para poner a punto MongoDB, poder ejecutarlo y empezar a usarlo.

Añadimos el usuario “mongodb” y al grupo “nogroup” con el siguiente comando.

sudo adduser --firstuid 100 --ingroup nogroup --shell /etc/false --disabled-password --gecos "" --no-create-home mongodb

Creamos el directorio que almacenará los logs de MongoDB:

sudo mkdir /var/log/mongodb/

Y cambiamos el propietario de la carpeta para que Mongo pueda escribir sobre ella:

sudo chown mongodb:nogroup /var/log/mongodb/

Creamos también el directorio donde se almacenarán los datos:

sudo mkdir /var/lib/mongodb

Con su propietario correspondiente:

sudo chown mongodb:nogroup /var/lib/mongodb

Movemos el demonio de MongoDB a init.d para que se ejecute al iniciar el sistema:

sudo cp debian/init.d /etc/init.d/mongod

Damos permisos de ejecución a mongod:

sudo chmod u+x /etc/init.d/mongod

Y actualizamos los defaults de update-rc

sudo update-rc.d mongod defaults

Movemos el fichero de configuración de MongoDB a etc:

sudo cp debian/mongodb.conf /etc/

Creamos enlaces para todos los ejecutables (mongo, mongodump, mongotop, etc.) en /usr/bin/. Esto hará que podamos ejecutar los programas sin necesidad de especificar toda la ruta ya que /usr/bin/ está en el classpath the ejecución de linux.

sudo ln -s /opt/mongo/bin/* /usr/bin/

Con esto, tendríamos MongoDB preparado para ejecutarse. Si reiniciamos el sistema, mongod se levantará automáticamente. Pero si queremos continuar sin reiniciar, podemos ejecutar el siguiente comando para levantar el demonio de MongoDB manualmente:

sudo /etc/init.d/mongod start

Para hacer la prueba, podemos ejecutar el cliente de mongo que responderá como se muestra a continuación:

mongo
MongoDB shell version: 2.1.1-pre-
connecting to: test

Por tanto, tendremos una instancia de mongo ejecutandose en nuestro servidor en http://localhost:27017 (el puerto por defecto de mongo). Además, podremos ver que mongo también tiene una interfaz gráfica muy básica a la que podremos acceder a través de http://localhost:28017 con información básica.

Sin embargo, por defecto, REST no está habilitado y, por tanto, clicando sobre cualquier enlace del servicio web, devolverá el siguiente mensaje:

REST is not enabled. use --rest to turn on.

Para activar REST, tendremos que modificar el demonio de init.d y añadir —rest como parámetro. Editamos el demonio de mongodb:

sudo nano /etc/init.d/mongod

Y buscamos la siguiente porción de código:

DAEMONUSER=${DAEMONUSER:-mongodb}
DAEMON_OPTS=${DAEMON_OPTS:-"--dbpath $DATA --logpath $LOGFILE run"}
DAEMON_OPTS="$DAEMON_OPTS --config $CONF"

Añadimos —rest antes después de $CONF, quedando el código así:

DAEMONUSER=${DAEMONUSER:-mongodb}
DAEMON_OPTS=${DAEMON_OPTS:-"--dbpath $DATA --logpath $LOGFILE run"}
DAEMON_OPTS="$DAEMON_OPTS --config $CONF --rest"

Ahora nos queda cerrar y guardar, que haremos haciendo CTRL+X y respondiendo Y. Reiniciamos mongodb haciendo:

sudo /etc/init.d/mongod restart

De esta forma, terminamos la entrada sobre cómo instalar MongoDB en una máquina con procesador ARM. Por ahora, esto es todo; más adelante, tengo intención de escribir sobre herramientas con las que poder acceder a los datos de MongoDB, herramientas parecidas al phpMyAdmin de MySQL. Y como no, contar algo sobre este interesantísimo SGBD con el que es muy fácil empezar pero que requiere un cambio de concepto, de chip, muy fuerte respecto a las bases de datos relacionales.

Por último, quiero mencionar y agradecer la estupenda guía de Chris Mobberley, en la que me basé para instalar MongoDB en mi máquina.

Ibai

Apasionado por la tecnología, el software, las interfaces de usuario (UX UI) y los sistemas. Utilizo este canal de comunicación para transmitir de manera informal, y muchas veces "rápido", pequeñas aportaciones a la comunidad software.

One thought on “Instalar MongoDB sobre una máquina con ARM con Linux

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.

*

Artículos relacionados