En este artículo vamos a ver cómo instalar MongoDB en openSUSE Leap 15 paso a paso, de modo que puedas utilizar este motor de bases de datos noSQL en tu servidor.
Contenido
Antes de instalar MongoDB en openSUSE Leap 15
Si tu intención es seguir esta guía de instalación de MongoDB en openSUSE Leap 15 deberías partir de las siguientes condiciones básicas:
- Una máquina openSUSE Leap 15 actualizada.
- Acceso a terminal de consola con un usuario con permisos de sudo o, en su defecto, el usuario root.
- Conexión a Internet.
Cómo añadir el repositorio de MongoDB para openSUSE Leap 15
Para poder disfrutar de las últimas versiones estables de MongoDB en openSUSE Leap 15, vamos a instalar el repositorio oficial, perteneciente al sitio del proyecto. Para ello crearemos un nuevo archivo de configuración de repositorio:
~> sudo nano /etc/zypp/repos.d/mongodb-5.0.repo
El contenido será la información de acceso al repositorio:
[mongodb.org-5.0] name=Repositorio de MongoDB para openSUSE Leap 15 baseurl=https://repo.mongodb.org/zypper/suse/15/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
Guardamos los cambios, cerramos el archivo y actualizamos las listas de paquetes:
~> sudo zypper refresh
Al actualizar por primera vez la información del nuevo repositorio se nos preguntará por el grado de confianza de la clave pública:
... ¿Desea rechazar la clave o confiar en ella siempre? [r/a/?] (r): a
Deberíamos contestar «siempre«, con la letra «a«.
Cómo instalar MongoDB en openSUSE Leap 15
Vamos a instalar MongoDB en openSUSE Leap 15 mediante el comando zypper, para lo que instalaremos el paquete mongodb-org:
~> sudo zypper install -y mongodb-org
Tras la descarga e instalación de los paquetes y dependencias de MongoDB se crea un nuevo servicio en openSUSE Leap 15, el servicio mongod.service o simplemente mongod, que queda habilitado para el arranque automático junto al sistema. Sin embargo, el servicio mongod no queda en ejecución de inmediato, por lo que debemos iniciarlo la primera vez de forma manual si queremos empezar a trabajar enseguida:
~> sudo systemctl start mongod
Para comprobar el estado del servicio MongoDB en openSUSE Leap 15 en cualquier momento, podemos usar el comando systemctl status mongod
:
Conectar a MongoDB en openSUSE Leap 15
Para conectar a MongoDB en openSUSE Leap 15 podremos usar el cliente de consola mongosh, instalado como dependencia en el paso anterior:
~> mongosh Current Mongosh Log ID: 63e91249152d515d9d31beb6 Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.7.0 Using MongoDB: 5.0.14 Using Mongosh: 1.7.0 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' ------ ------ 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() ------ test>
La primera vez que conectamos al servicio volcará bastante información en pantalla relativa a varios avisos:
- Acceso sin restricciones (contraseña) al servicio.
- Modo THP activado.
- Servicio de monitorización y envío de estadísticas.
Empezando por el último punto, podemos desactivar el servicio de monitorización y estadísticas con el disableTelemetry() respectivamente. En este tutorial desactivaremos este servicio:
> db.disableFreeMonitoring()
Para los dos otros puntos cerraremos la conexión para liberar la consola:
> exit
Desactivar HTP (transparent hugepage)
Este mensaje es debido a que cierto valor de configuración del kernel está configurado como always, cosa que podemos comprobar desde consola:
~> cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
Podemos desactivar este valor manualmente desde consola:
~> sudo /bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled"
Si hacemos de nuevo la comprobación veremos que ahora el valor ha cambiado:
~> cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
Ahora el valor es never, que es el que sugiere MongoDB. Sin embargo, este ajuste se perderá al apagar la máquina. Para solucionar esto, podemos modificar la configuración del servicio MongoDB para que configure este parámetro antes de iniciar.
Editamos el archivo de configuración del servicio:
~> sudo nano /usr/lib/systemd/system/mongod.service
Añadiremos una directiva ExecStartPre en la sección Service:
... [Service] ... ExecStartPre=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled" ...
Guardamos los cambios, cerramos el archivo y recargamos la configuración de los servicios:
~> sudo systemctl daemon-reload
Reiniciando el servicio se ajustará el parámetro del kernel:
~> sudo systemctl restart mongod
Podemos reiniciar openSUSE Leap 15 y tras iniciar sesión comprobaremos que la configuración de THP ahora es la que queremos para MongoDB:
~> cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
Obviamente, esta configuración persistirá tras reiniciar openSUSE Leap 15.
Cómo acceder con contraseña a MongoDB
Para poder activar el uso de contraseñas en MongoDB tendremos que realizar un ajuste en el archivo de configuración del servicio, mongod.conf:
~> sudo nano /etc/mongod.conf
Buscaremos la sección security:
... #security: ...
Podemos observar un carácter # al principio de la línea, lo que significa que la sección está desactivada. Eliminaremos ese carácter y añadiremos la directiva authorization:
... security: authorization: enabled ...
No utilices tabuladores para añadir sangrado en la línea authorization (o en cualquier otro lugar de los archivos de configuración de MongoDB), usa en su lugar espacios.
Guardamos los cambios, cerramos el archivo y reiniciamos el servicio para aplicar los cambios:
~> sudo systemctl restart mongod
Iniciaremos sesión con el cliente mongosh:
~> mongosh
Observarás, si has seguido los pasos anteriores, que se han reducido sustancialmente los avisos al conectar.
Seleccionaremos la base de datos principal:
> use admin
Y añadiremos un nuevo registro para un nuevo usuario:
> db.createUser({user: "instalador", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})
Este usuario es administrador al haber definidio un rol tipo root.
Podemos cerrar la conexión y volver a establecerla, pero esta vez especificando el nuevo usuario que acabamos de crear:
~> mongosh -u instalador Enter password: XXXXXXXX ... >
Podemos comprobar que se nos solicita la contraseña del usuario para conectar al servicio.
Acceso remoto a MongoDB en openSUSE Leap 15
Por defecto, el acceso a MongoDB en openSUSE Leap 15 está configurado únicamente en modo local. Para permitir conexiones remotas es necesario configurar el servicio a través del archivo mongod.conf:
~> sudo nano /etc/mongod.conf
En esta ocasión buscaremos la directiva bindIp: (ojo, el nombre de la directiva termina en Ip, no en IP):
... # 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. ...
Vemos que tiene el valor 127.0.0.1 que es la dirección del adaptador de red local. Podemos sustituir este valor por «0.0.0.0», «::» ó «::,0.0.0.0» según si queremos permitir acceso remoto a través del protocolo IPv4, IPv6 ó ambos:
... bindIp: ::,0.0.0.0 ...
Guardamos los cambios, cerramos el archivo y reiniciamos el servicio:
~> sudo systemctl restart mongod
Configurar el firewall de openSUSE Leap 15 para MongoDB
Por defecto el firewall de openSUSE Leap 15 suele estar activado, así que si queremos permitir las conexiones remotas al servicio MongoDB tendremos que añadir la regla correspondiente:
~> sudo firewall-cmd --permanent --add-service=mongodb
Y recargamos la configuración del firewall para aplicar los cambios:
~> sudo firewall-cmd --reload
Conexión
Desde otra máquina de la red que tenga instalado el cliente mongosh realizaremos una conexión remota al servicio MongoDB del servidor openSUSE Leap 15. Con el parámetro –host indicaremos la dirección IP o dominio del servidor y con -u el usuario con el que queremos conectar. Por ejemplo, podríamos conectar al servicio que acabamos de instalar y configurar con el comando mongosh --host opensuse15.local.lan -u instalador
:
Conclusión
Ahora que sabes cómo instalar MongoDB en openSUSE Leap 15 ya puedes hacer funcionar este servicio de bases de datos como soporte de otras aplicaciones que lo usan. Instalar el servicio y realizar una configuración básica de MongoDB sólo lleva unos instantes.
En caso de dudas, preguntas, alguna sugerencia de mejora o notificar algún error, puedes dejar un comentario.
¡Apoya comoinstalar.me!
¿Ya tienes funcionando el servicio gracias a esta guía de instalación de MongoDB en openSUSE Leap 15? Si es así y se te ha pasado por la cabeza agradecérnoslo, la más mínima aportación ayuda muchísimo al mantenimiento de este sitio y puedes hacerlo dejando 1 $ de propina con PayPal:
O, si te sientes especialmente agradecido, invitándonos a un café:
¡Gracias!
Excelente.
Me alegro de que te haya gustado, Germán.