Cómo instalar MongoDB en CentOS 7

En este artículo explicaremos cómo instalar MongoDB en CentOS 7 paso a paso, un servicio de bases de datos NoSQL cada vez más popular en el desarrollo web, que podrás hacer funcionar en tu servidor o VPS CentOS en unos instantes.

Antes de instalar MongoDB en CentOS 7

Si quieres seguir esta breve guía de instalación de MongoDB en CentOS 7 sólo tienes que comprobar que cumples estos mínimos requerimientos:

  • Una instalación actualizada de CentOS 7.
  • Acceso a consola con un usuario con permisos de sudo, o el mismo root.
  • Conexión a Internet.

Cómo instalar MongoDB en CentOS 7

Si quieres instalar MongoDB en CentOS 7 comprobarás que los únicos paquetes disponibles pertenecen al repositorio EPEL y corresponden a la versión 2.6, bastante obsoletos teniendo en cuenta que las últimas versiones oficiales son las 4.2.x (en el momento de redactar este tutorial).

Por ello es mejor instalar el repositorio oficial de MongoDB en CentOS 7 para tenerlo como fuente de estos paquetes y futuras actualizaciones.

Empezaremos creando un nuevo archivo de repositorio:

~$ sudo nano /etc/yum.repos.d/mongodb.org-4.2.repo

El contenido será el siguiente:

[mongodb-org-4.2]
name=MongoDB Repository
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

Guardados los cambios, actualizaremos las listas de paquetes:

~$ sudo yum update

El paquete que necesitamos es mongodb-org, que podemos instalar con yum:

~$ sudo yum install -y mongodb-org

Tras la descarga e instalación del paquete mongodb-org y sus dependencias se crea un nuevo servicio en CentOS 7, mongod.service o mongod, que no queda en ejecución aunque sí está habilitado para iniciar automáticamente con el arranque del sistema.

Puedes arrancar por primera vez el servicio mongod con systemctl:

~$ sudo systemctl start mongod

Y si no quieres tener el servicio MongoDB siempre disponible y que no inicie automáticamente con CentOS 7, lo podrías deshabilitar también con systemctl:

~$ sudo systemctl disable mongod

Puedes comprobar en cualquier momento el estado del servicio MongoDB en CentOS 7 con el comando systemctl status mongod:

como instalar mongodb en centos 7

Comprobamos que el servicio está en ejecución, a la espera de conexiones. Podemos conectar localmente usando el cliente de consola mongo:

~$ mongo
MongoDB shell version v4.2.7
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("61dbd2c4-494f-4dfd-80ba-1ba2f9008c9a") }
MongoDB server version: 4.2.7
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  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]
... I  CONTROL  [initandlisten]
... I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
... I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
... I  CONTROL  [initandlisten]
... I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
... I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
... 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()
---

>

Bastante información de golpe, ¿no?

Cómo configurar MongoDB en CentOS 7

La última parte de todo el texto que acabamos de ver al conectar localmente a MongoDB con el cliente habla sobre un servicio que monitoriza nuestra actividad con fines estadísticos y de mejora del producto.

Si quieres activar este servicio, usa el siguiente comando:

> db.enableFreeMonitoring()

Pero si prefieres no activar ese servicio y que no aparezcan más estos avisos e información, lanza este comando:

> db.disableFreeMonitoring()

Cómo desactivar THP o Transparent Huge Pages en CentOS 7

Por otro lado nos econtramos con un par de alertas sobre THP o «Transparent Huge Pages«, en el que los valores de enabled y defrag son ambos always cuando lo recomendable por rendimiento es que fueran never:

~$ cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

Y:

~$ cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never

Vamos a crear un servicio que desactive estos valores de THP:

~$ sudo nano /etc/systemd/system/disable-thp.service

El contenido será algo como esto:

[Unit]
Description=Desactivación de Transparent Huge Pages (THP)

[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled"

[Install]
WantedBy=multi-user.target

Ahora haremos que nuestro servicio esté disponible de inmediato:

~$ sudo systemctl daemon-reload

Como cualquier otro servicio podemos iniciarlo manualmente:

~$ sudo systemctl start disable-thp

Para ver si ha funcionado, podemos volver comprobar el valor de THP:

~$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

Efectivamente, se han desactivado estos valores.

Para que MongoDB actualice esta información es necesario reiniciar el servicio mongod:

~$ sudo systemctl restart mongod

Podremos comprobar que el servicio ya no nos lanza estas alertas al iniciar la conexión:

~$ mongo
MongoDB shell version v4.2.7
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("01cd82cf-99cf-45ac-a9c0-db1efd9b49d1") }
MongoDB server version: 4.2.7
Server has startup warnings:
... 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]
>

Si la máquina CentOS 7 va a hacer un uso intensivo y permanente de MongoDB, entonces será buena idea habilitar el servicio que desactiva THP:

~$ sudo systemctl enable disable-thp

Acceso con contraseña a MongoDB en CentOS 7

Puede que te interese disponer de usuarios que accedan con contraseña al servicio MongoDB. Si es así debemos activar la autenticación en mongod.conf:

~$ sudo nano /etc/mongod.conf

Buscamos la directiva security:

...
#security:
...

Está desactivada, así que la activaremos eliminando el carácter # al inicio de línea y a continuación añadiremos una subdirectiva authorization:

...
security:
  authorization: enabled
...

No utilices tabulaciones en el archivo mongod.conf, ya que provocarán errores. Utiliza espacios en blanco.

Guardamos los cambios, cerramos el archivo y reiniciamos el servicio MongoDB:

~$ sudo systemctl restart mongod

Conectamos de nuevo al servicio con el cliente mongo:

~$ mongo

Conectamos a la base de datos admin:

> use admin

Y creamos un usuario con contraseña y rol de administración:

> db.createUser({user: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})

Ya podemos salir del cliente:

> exit

Ahora, si accedemos con el usuario que acabamos de crear, se nos solicita la contraseña:

~$ mongo -u chacho
MongoDB shell version v4.2.7
Enter password:
...
>

Acceso remoto a MongoDB en CentOS 7

Para acceder remotamente al servicio MongoDB en CentOS 7 debemos editar la configuración del servicio:

~$ sudo nano /etc/mongod.conf

Buscaremos la directiva bindIp (importan las mayúsculas):

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

Tal y como describe el comentario, sustituyendo el valor 127.0.0.1 por 0.0.0.0 dejará de ser un servicio local para convertirse en un servicio al que pueda conectarse remotamente:

...
  bindIp: 0.0.0.0
...

Guardados los cambios, habrá que reiniciar el servicio mongod:

~$ sudo systemctl restart mongod

Cómo configurar el firewall de CentOS 7 para MongoDB

Si tienes activado el firewall de CentOS 7, como ocurre por defecto, necesitarás añadir una regla para el puerto 27017 TCP en el que espera conexiones MongoDB:

~$ sudo firewall-cmd --permanent --add-service=mongodb

Aplicamos los cambios recargando la configuración del firewall:

~$ sudo firewall-cmd --reload

Ahora podremos conectar desde otro sistema que tenga instalado el cliente mongo añadiendo como parámetro la dirección de la máquina CentOS 7 en la que hemos instalado el servicio MongoDB, e indicando también el usuario con el que vamos a conectar:

~$ mongo --host centos7.local.lan -u chacho

como configurar mongodb en centos 7

Conclusión

Ahora que sabes cómo instalar y configurar MongoDB en CentOS 7 ya puedes empezar a trabajar con este servicio de bases de datos NoSQL en tu servidor o VPS.

Si te ha surgido alguna duda, pregunta, sugerencia, etc. puedes dejar un comentario.

¡Apoya este sitio!

¿Ya tienes el servicio funcionando gracias a esta guía de instalación y configuración de MongoDB en CentOS 7? Si es así y te apetece agradecérnoslo, cualquier mínima contribución ayuda al mantenimiento de este sitio y creación de nuevos tutoriales de CentOS 7 y MongoDB, y puedes hacerlo…

Invitándome a un café:

 

O dejando una propina en PayPal:

¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (3 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