Cómo instalar MongoDB en CentOS 8

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.

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-4.2.repo

Con el siguiente contenido:

[mongodb-org-4.2]
name=Repositorio de MongoDB para CentOS 8
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.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:

como instalar mongodb en centos 8

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-org-shell:

~$ sudo yum install -y mongodb-org-shell

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 mongo:

~$ mongo
MongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b7521eff-889e-4339-b81c-f0e8ae77018a") }
MongoDB server version: 4.4.0
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
        https://community.mongodb.com
---
The server generated these startup warnings when booting:
        ...: ***** SERVER RESTARTED *****
        ...: 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'
---
---
        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()
---
>

Tenemos bastante información tras conectar al servicio, la última parte referida a la activación o no de un sistema de monitorización que, en este tutorial, vamos a desactivar:

> db.disableFreeMonitoring()

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.

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 en CentOS 8

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 mongo:

~$ mongo

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: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})

Podemos cerrar la conexión:

> exit

Y volvemos a conectar con el cliente mongo, pero ahora utilizando nuestro nuevo usuario:

~$ mongo -u chacho
MongoDB shell version v4.4.0
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 chacho

instalar y configurar mongodb en centos 8

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 contribuir con el mantenimiento de este sitio y la creación de más artículos sobre CentOS 8 y MongoDB, puedes colaborar invitándonos a un café:

 

O dejando 1 $ de propina en PayPal:

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 5,00 de 5)
Cargando...

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies