En esta entrada veremos cómo instalar MongoDB en CentOS 8 paso a paso, de modo que conseguirás hacer funcionar este servicio de bases de datos en formato JSON sobre tu servidor o VPS CentOS.
Contenido
Antes de instalar MongoDB en CentOS 8
Si quieres poder completar esta guía de instalación de MongoDB en CentOS 8 bastará con satisfacer los siguientes requisitos:
- Un sistema CentOS 8 actualizado.
- Acceso a consola con un usuario con permisos de sudo, o con root.
- Conexión a Internet.
Cómo configurar el repositorio de MongoDB para CentOS 8
Ya que no existen paquetes en los repositorios de la distribución, vamos a configurar el repositorio oficial de MongoDB para CentOS 8. Creamos el archivo de configuración de este nuevo repositorio:
~$ sudo nano /etc/yum.repos.d/mongodb.org-5.0.repo
Con el siguiente contenido:
[mongodb-org-5.0] name=Repositorio de MongoDB para CentOS 8 baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
Podemos ver que el repositorio está activado por defecto y se incluye la dirección de la clave pública con la que se firman los paquetes de MongoDB.
Guardamos el archivo y actualizamos la información de los repositorios del sistema para tener en cuenta los paquetes que ofrece el nuevo repositorio:
~$ sudo yum update
Cómo instalar MongoDB en CentOS 8
Para instalar MongoDB en CentOS 8 una vez configurado el repositorio oficial, bastará con instalar el paquete mongodb-org con yum:
~$ sudo yum install -y mongodb-org
Tras la descarga e instalación de MongoDB y sus dependencias se crea un nuevo servicio en CentOS 8, el servicio mongod.service o simplemente mongod, que no queda en ejecución, pero sí está habilitado para iniciar automáticamente junto al sistema.
Para arrancar por primera vez en el servicio MongoDB en CentOS 8, usaremos el comando systemctl:
~$ sudo systemctl start mongod
Podemos comprobar en cualquier momento el estado del servicio con el comando systemctl status mongod
:
Si lo necesitas, puedes detener el servicio MongoDB con el comando:
~$ sudo systemctl stop mongod
Y si no quieres que inicie automáticamente en cada arranque de CentOS 8, puedes deshabilitarlo:
~$ sudo systemctl disable mongod
Cómo instalar el cliente de MongoDB en CentOS 8
Si sólo necesitas instalar el cliente de MongoDB en CentOS 8 para trabajar remotamente sobre otro sistema, por ejemplo, el paquete que necesitas es mongodb-mongosh:
~$ sudo yum install -y mongodb-mongosh
Este paquete es dependencia del servidor, así que si instalas el paquete principal de MongoDB no será necesario instalarlo manualmente.
Cómo conectar al servicio MongoDB en CentOS 8
Una vez instalado y en ejecución el servicio, podemos conectar a MongoDB en CentOS 8 mediante el cliente de consola mongosh:
~$ mongosh Current Mongosh Log ID: 62584849f000da2d6e4ef09a 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: ###: 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>
Tenemos bastante información tras conectar al servicio, parte de ella referida a un sistema de telemetría que, en este tutorial, vamos a desactivar:
> disableTelemetry()
Esto despejará la consola bastante en las sucesivas conexiones.
En cuanto al resto de avisos se refieren a que el acceso al servicio no tiene restricciones y la configuración por defecto de un ajuste del kernel.
Para cerrar la conexión usaremos el comando exit:
> exit
Cómo configurar MongoDB en CentOS 8
Vamos a ver cómo configurar MongoDB en CentOS 8, trabajando sobre sus archivos de configuración, para realizar los ajustes más útiles en la mayoría de ocasiones.
Desactivar THP
Uno de los mensajes de aviso al iniciar sesión con MongoDB hace referencia al valor del kernel transparent_hugepage, que podemos consultar desde consola:
~$ cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
MongoDB prefiere que ese valor sea never en lugar de always, así que en teoría podríamos cambiarlo como usuario root y reiniciar el servicio, pero es mejor idea modificar la configuración del servicio MongoDB para que realice esta tarea previamente al inicio del servicio. Para ello editaremos la configuración de arranque del servicio:
~$ sudo nano /usr/lib/systemd/system/mongod.service
En la sección Service añadiremos una directiva ExecStartPre previa a las demás que fijará el valor never para THP:
... [Service] ... ExecStartPre=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled" ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb ...
Guardamos los cambios y actualizamos la información de los servicios de Systemd:
~$ sudo systemctl daemon-reload
Desde este momento cada vez que inicie o reinicie el servicio MongoDB en CentOS 8 el valor de THP será el esperado, por lo que no recibiremos más avisos en ese sentido:
~$ sudo systemctl restart mongod
Utilización de usuarios y contraseñas en MongoDB
Editamos el archivo de configuración de MongoDB, que en CentOS 8 se encuentra en la ruta /etc/mongod.conf:
~$ sudo nano /etc/mongod.conf
Buscamos la directiva security:
... #security: ...
Está desactivada, por lo que eliminaremos el carácter # inicial y añadiremos una línea, sangrada con espacios en blanco (NO uses tabulaciones):
... security: authorization: enabled ...
Guardamos el archivo y reiniciamos el servicio MongoDB:
~$ sudo systemctl restart mongod
Conectamos al servicio con el cliente mongosh:
~$ mongosh
Seleccionamos la base de datos admin, ya que es la que guarda la información de usuarios del servicio:
> use admin
Y creamos un nuevo usuario con contraseña:
> db.createUser({user: "instalador", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})
Podemos cerrar la conexión:
> exit
Y volvemos a conectar con el cliente mongosh, pero ahora utilizando nuestro nuevo usuario:
~$ mongosh -u instalador Enter password: ******** ... >
Como acabamos de comprobar, se nos pedirá contraseña para iniciar sesión. Además, ya no será posible realizar tareas privilegiadas accediendo a MongoDB sin contraseña.
Acceso remoto a MongoDB en CentOS 8
Por defecto el servicio sólo acepta conexiones locales, así que si quieres activar el acceso remoto a MongoDB en CentOS 8 habrá que editar mongod.conf:
~$ sudo nano /etc/mongod.conf
En esta ocasión modificaremos el valor de la directiva bindIp:
... # network interfaces net: port: 27017 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. ...
Desactivaremos bindIp y en su lugar añadiremos la directiva bindIpAll, quedando así:
... # bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. bindIpAll: true ...
Recuerda usar solamente espacios en blanco, nada de tabulaciones.
Guardamos el archivo y reiniciamos el servicio:
~$ sudo systemctl restart mongod
Cómo configurar el firewall de CentOS 8 para MongoDB
Para permitir conexiones entrantes al servcio MongoDB será necesario configurar el firewall de CentOS 8, añadiendo la siguiente regla:
~$ sudo firewall-cmd --permanent --add-service=mongodb
Aplicaremos los cambios:
~$ sudo firewall-cmd --reload
Cómo acceder remotamente a MongoDB en CentOS 8
Para acceder remotamente a MongoDB en CentOS 8 desde otra máquina usaremos un cliente como mongo, indicando con el parámetro –host la dirección del servidor CentOS 8 y con el parámetro -u el usuario con el que queremos conectar.
Por ejemplo, vamos a conectar con el cliente mongo desde otro sistema al servidor CentOS 8 sobre el que hemos realizado este tutorial, accesible en el nombre DNS centos8.local.lan:
~$ mongo --host centos8.local.lan -u instalador
Conclusión
Ahora que sabes cómo instalar MongoDB en CentOS 8 ya puedes trabajar con este motor de bases de datos NoSQL para tus desarrollos propios o como requerimiento de aplicaciones de terceros.
Si tienes algunda duda o pregunta, quieres sugerir mejoras de este artículo, crees que necesita ser actualizado o deseas notificar algún error, deja un comentario y lo reviso tan pronto como sea posible.
¡Apoya comoinstalar.me!
¿Ya estás trabajando con bases de datos NoSQL y JSON gracias a nuestra guía de instalación de MongoDB en CentOS 8? Si es así y te apetece agradecérmelo, puedes hacerlo dejando 1 $ de propina en PayPal:
O si te sientes especialmente generoso, podrías invitarnos a un café:
¡Gracias!