En esta entrada veremos cómo instalar MongoDB en Debian 10 Buster paso a paso, un sistema de bases de datos NoSQL muy popular en desarrollos web para tu servidor o VPS Debian 10.
Tabla de contenidos
Antes de instalar MongoDB en Debian 10 Buster
Si quieres completar esta guía de instalación de MongoDB en Debian 10 Buster, necesitas cumplir al menos los siguientes requerimientos:
- Un sistema Debian 10 Buster actualizado.
- Acceso a línea de comandos con root o un usuario con privilegios de sudo.
- Conexión a Internet.
Necesitaremos algunas herramientas que podemos obtener desde los repositorios de Debian 10, por lo que actualizamos las listas de paquetes:
~$ sudo apt update
E instalamos dichas herramientas:
~$ sudo apt install -y gnupg
Cómo descargar MongoDB en Debian 10 Buster
A la hora de descargar MongoDB en Debian 10 Buster descubrimos que ya no existen paquetes en las listas de la propia distribución. Por tanto necesitamos añadir un nuevo repositorio, el oficial de mongodb.org, a las fuentes de apt.
Como los paquetes del repositorio que vamos a añadir están firmados, tenemos que importar la clave pública del certificado con que se firman:
~$ wget https://www.mongodb.org/static/pgp/server-5.0.asc -qO- | sudo apt-key add -
El comando anterior descarga la clave pública y la incorpora al llavero de apt.
Ahora debemos añadir un nuevo repositorio a la configuración de apt:
~$ sudo nano /etc/apt/sources.list.d/mongodb-org.list
La única línea que añadiremos a este archivo es la siguiente:
deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main
Guardamos los cambios y cerramos el archivo.
Cómo instalar MongoDB en Debian 10 Buster
Para instalar MongoDB en Debian 10 Buster actualizaremos las listas de paquetes, que ahora incluyen el repositorio de MongoDB:
~$ sudo apt update
El paquete que necesitamos instalar es mongodb-org, así que usaremos el comando apt para hacerlo:
~$ sudo apt install -y mongodb-org
Una vez completada la descarga e instalación del paquete mongodb-org y sus dependencias se crea el servicio mongod.service o mongod en Debian 10 Buster.
Como el nuevo servicio de MongoDB no queda en ejecución ni habilitado, lo arrancaremos de forma manual la primera vez, y lo habilitaremos para que inicie automáticamente en cada arranque de Debian 10:
~$ sudo systemctl enable --now mongod
La forma de comprobar que MongoDB está en ejecución en cualquier momento es a través del comando systemctl status mongod
:
Ya puedes comprobar que el servicio está listo para aceptar conexiones, lo que podremos corroborar usando el cliente mongosh:
~$ mongosh Current Mongosh Log ID: 625485e56c7db201bb882e18 Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.3.1 Using MongoDB: 5.0.7 Using Mongosh: 1.3.1 For mongosh info see: https://docs.mongodb.com/mongodb-shell/ To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy). You can opt-out by running the disableTelemetry() command. ------ The server generated these startup warnings when booting: ###: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem ###: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted ###: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never' ------ test>
Al conectar al servidor MongoDB se nos informa de la existencia de un servicio anónimo de telemetría que recopila datos para la mejora del producto. Si no queremos participar en esta recopilación de datos podemos desactivar la telemetría con el comando disableTelemetry():
> disableTelemetry()
Puedes cerrar la conexión con el comando exit:
> exit
Cómo configurar MongoDB en Debian 10 Buster
Si necesitas configurar MongoDB en Debian 10 Buster debes saber que el archivo de configuración es mongod.conf, situado en la habitual ruta /etc/.
Para aplicar cualquier cambio de configuración es necesario reiniciar el servicio:
~$ sudo systemctl restart mongod
Configurar el kernel de Debian 10
Uno de los mensajes que se muestran cada vez que conectamos al servicio con el cliente mongosh es el que hace referencia a cierta configuración de memoria del kernel de Debian 10:
... /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never' ...
Efectivamente, podemos comprobar dicho valor desde consola:
~$ cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
Puesto que MongoDB prefiere otro valor para este parámetro editaremos el archivo de configuración del servicio:
~$ sudo nano /usr/lib/systemd/system/mongod.service
Añadiremos la siguiente directiva ExecStartPre antes de la directiva ExecStart que lanza el servicio:
... ExecStartPre=+/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled" ExecStart=/usr/bin/mongod --config /etc/mongod.conf ...
Tras guardar los cambios, recargamos la configuración del gestor de servicios SystemD:
~$ sudo systemctl daemon-reload
Y reiniciamos el servicio:
~$ sudo systemctl restart mongod
En la siguiente conexión ya no se mostrará el mensaje anterior, además de que este ajuste se aplicará en cada reinicio de Debian 10.
Acceso con contraseña
Por defecto no se necesita autenticación de usuario para conectar con el servicio, como ya hemos visto. Empezaremos creando un usuario administrador con contraseña, conectando con mongosh:
~$ mongosh
Seleccionamos la base de datos admin:
> use admin
Creamos el usuario:
> db.createUser({user: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})
Y cerramos la conexión:
> exit
Ahora podremos usar el nuevo usuario para conectar con MongoDB, utilizando el parámetro -u:
~$ mongosh -u chacho Enter password: ******** ... ------ >
Finalmente, para activar el control de acceso y restringir las operaciones de lectura y escritura, editaremos el archivo mongod.conf:
~$ sudo nano /etc/mongod.conf
Buscaremos la directiva security:
... #security: ...
Está desactivada, así que eliminaremos el carácter # inicial y añadiremos la opción authorization:
... security: authorization: enabled ...
Sólo se pueden usar espacios en blanco para sangrar el texto en el archivo de configuración, no está permitido usar tabulaciones.
Guardamos los cambios y reiniciamos el servicio:
~$ sudo systemctl restart mongod
Acceso remoto
Por defecto, el servicio corre en el puerto 27017 sólo atendiendo conexiones locales. Si quieres permitir acceso desde tu red local, por ejemplo, debes editar el archivo de configuración:
~$ sudo nano /etc/mongod.conf
Buscamos la directiva bindIP en la sección net:
... net: port: 27017 bindIp: 127.0.0.1 ...
Debes indicar la dirección del adapatador de red de la máquina Debian 10 desde el que provendrán las conexiones, o el valor 0.0.0.0:
... bindIp: 0.0.0.0 ...
Los cambios se aplicarán tras reiniciar el servicio.
Si tienes activado el firewall UFW en Debian 10, debes añadir la regla correspondiente:
~$ sudo ufw allow 27017/tcp
Ahora es posible acceder desde otra máquina con un cliente como mongosh, especificando la dirección del servidor con el parámetro –host:
~$ mongosh --host debian10.local.lan -u chacho
Conclusión
Así de fácil es instalar MongoDB en Debian 10 Buster, basta con añadir el nuevo repositorio y con el tiempo se irán produciendo las actualizaciones correspondientes.
Para dudas, preguntas, sugerencias, etc. puedes dejar un comentario.
Ah, y si ya tienes el servicio en marcha gracias a esta breve guía de instalación de MongoDB en Debian 10 Buster y quieres agradecérmelo, puedes hacerlo dejando una propina de 1 $ con PayPal:
¡Gracias!
Actualizado a la versión 5.0.7.
Actualizado a la versión 4.4.11.
¡Salvaste! No encontraba el ExecStartPre.
Trabajando el 31.12.2021 21:00, ajjjaja, pero no queda de otra en este rubro.
¡Gracias por tu aporte!
Me alegro de que te sirviera, Juan. ¡Y que no falte el trabajo!
Excelente. Me sirvió mucho. Muchas gracias.
¡De nada, Brian!