En esta ocasión veremos cómo instalar MongoDB en Debian 8 Jessie paso a paso, de forma que puedas usar este potente motor de bases de datos sobre tu viejo servidor o VPS Debian.
Tabla de contenidos
Antes de instalar MongoDB en Debian 8 Jessie
Para poder seguir los pasos de esta guía de instalación de MongoDB en Debian 8 Jessie sólo tendrás que partir de los siguientes requisitos básicos:
- Un sistema Debian 8 Jessie actualizado.
- Un usuario con permisos de sudo o el mismo root.
- Acceso a Internet.
Cómo instalar el repositorio de MongoDB en Debian 8 Jessie
Vamos a instalar el repositorio oficial de MongoDB en Debian 8 Jessie ya que, aunque existen paquetes de MongoDB en los reposistorios del sistema, la última versión que ofrecen es la 2.4.10. El repositorio oficial de MongoDB nos ofrece paquetes bastante más actualizados, aunque la mala noticia es que sólo llegan hasta la versión 4.0.
El primer paso será añadir la clave pública con la que se firman los paquetes:
~$ wget https://www.mongodb.org/static/pgp/server-4.0.asc -qO- | sudo apt-key add -
Creamos el archivo de repositorio para MongoDB:
~$ sudo nano /etc/apt/sources.list.d/mongodb-org.list
Con el contenido:
deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/4.0 main
Guardamos y cerramos el archivo. Ya sólo queda actualizar las listas de paquetes:
~$ sudo apt update
Cómo instalar MongoDB en Debian 8 Jessie
Una vez configurado y actualizado el repositorio, ya podemos instalar MongoDB en Debian 8 Jessie usando la nueva fuente de paquetes. Concretamente, el paquete que buscamos es mongodb-org, que instalamos con apt:
~$ sudo apt install -y mongodb-org
En unos instantes se descargarán e instalarán MongoDB y sus dependencias, habiendo creado un nuevo servicio en Debian 8, el servicio mongod, que por defecto no queda habilitado ni en ejecución.
Para que el servicio inicie automáticamente con cada arranque de la máquina, lo habilitamos:
~$ sudo systemctl enable mongod
Y si queremos empezar a trabajar de inmediato sin esperar al próximo reinicio del sistema, iniciamos esta vez el servicio de forma manual:
~$ sudo systemctl start mongod
Podemos comprobar el estado del servicio MongoDB en cualquier momento con el comando systemctl status mongod
:
Cómo conectar a MongoDB en Debian 8
Para probar el servicio vamos a conectar a MongoDB en Debian 8 utilizando el cliente de consola mongo:
~$ mongo MongoDB shell version v4.0.26 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("85216a00-1793-4670-b64b-45314e2bb21d") } MongoDB server version: 4.0.26 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: ... I STORAGE [initandlisten] ... I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine ... I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem ... I CONTROL [initandlisten] ... I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. ... I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. ... I CONTROL [initandlisten] --- Enable MongoDB's free cloud-based monitoring service, which will then receive and display metrics about your deployment (disk utilization, CPU, operation statistics, etc). The monitoring data will be available on a MongoDB website with a unique URL accessible to you and anyone you share the URL with. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you. To enable free monitoring, run the following command: db.enableFreeMonitoring() To permanently disable this reminder, run the following command: db.disableFreeMonitoring() --- >
Veremos mucha información en pantalla. Parte de esta información hace referencia a un servicio anónimo de monitorización de estadísticas de uso. Podremos activar o desactivar este servicio, pero hasta que no hagamos una de las dos acciones este aviso se mostrará en cada conexión.
Podemos desactivar el servicio con este comando:
> db.disableFreeMonitoring()
O podemos activarlo con este otro:
> db.enableFreeMonitoring()
Para cerrar la conexión y salir de nuevo a consola usamos el comando exit:
> exit
Cómo configurar MongoDB en Debian 8 Jessie
Veremos a continuación cómo configurar MongoDB en Debian 8 Jessie a través de su archivo principal de configuración, mongod.conf.
Activar autenticación por contraseña
Otro de los avisos que se muestran constantemente en cada conexión al servicio es el relacionado con que no existe autenticación de usuario al realizar la conexión, lo que podría suponer un serio riresgo de seguridad.
Antes de configurar la autenticación de usuario obligatoria, crearemos un usuario administrador con contraseña, para lo que conectamos al servicio:
~$ mongo ... >
Conectamos a la base admin:
> use admin
Y creamos el usuario administrador con contraseña:
> db.createUser({user: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})
Ya podemos salir:
> exit
A partir de ahora para iniciar sesión con el nuevo usuario habrá que indicar contraseña:
~$ mongo -u chacho MongoDB shell version v4.0.26 Enter password: ... >
Para activar la autenticación de usuarios editamos el archivo de configuración de MongoDB:
~$ sudo nano /etc/mongod.conf
Buscamos la directiva security:
... #security: ...
Como se puede ver, esta directiva está desactivada mediante el uso del carácter # al inicio de la línea. Activaremos la directiva eliminando el carácter # y añadimos una subdirectiva authorization:
... security: authorization: enabled ...
Es muy importante tener en cuenta que para realizar el sangrado de las subdirectivas sólo se pueden usar espacios en blanco, nunca tabulaciones.
Guardamos los cambios, cerramos el archivo y reiniciamos el servicio:
~$ sudo systemctl restart mongod
Acceso remoto
Por defecto MongoDB está configurado para permitir solamente conexiones locales, así que en el caso de que necesites realizar conexiones remotas te puede interesar activar el acceso remoto.
Editamos el arhivo mongod.conf:
~$ sudo nano /etc/mongod.conf
Buscamos la directiva bindIp:
... # network interfaces net: port: 27017 bindIp: 127.0.0.1 ...
Y cambiamos su valor por el de la dirección IP del adaptador de red local, o por 0.0.0.0 si queremos dar acceso remoto en general:
... bindIp: 0.0.0.0 ...
Guardamos los cambios, cerramos el archivo y reiniciamos el servicio:
~$ sudo systemctl restart mongod
Configurar el firewall UFW para MongoDB en Debian 8
Si has activado el firewall UFW, necesitarás una regla específica para MongoDB:
~$ sudo ufw allow 27017/tcp
La aplicación de este ajuste es inmediata.
Cómo conectar remotamente a MongoDB en Debian 8
Desde otro sistema con un cliente como por ejemplo mongo, podemos realizar la conexión remota, indicando en la línea de comandos la direccion IP o dominio de la máquina Debian 8, la base de datos a la que queremos conectar y el usuario con el que conectamos.
En este ejemplo conectamos desde una máquina con otra versión de Debian y MongoDB, desde consola, indicando el nombre de red del servidor Debian 8 (debian8.local.lan), la base a la que queremos conectar (admin) y el usuario con el que queremos conectar (chacho):
~$ mongo debian8.local.lan/admin -u chacho
Como este usuario tiene contraseña se nos solicita, y tras introducirla podemos empezar a trabajar.
Conclusión
Ahora que sabes cómo instalar MongoDB en Debian 8 Jessie ya puedes usar este motor de bases de datos tan popular en desarrollo web sobre tu viejo servidor o VPS Debian, usando una versión del servicio bastante más moderna de lo que cabría pensar.
En caso de dudas, preguntas, alguna sugerencia de mejora, notificación de errores o cuestión similar, un comentario es la mejor opción.
Y si ya puedes trabajar con este motor de bases de datos en tu sistema gracias a nuestra pequeña guía de instalación y quieres agradecérmelo, pudes hacerlo dejando 1 $ de propina con PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un café:
¡Gracias!