En este artículo vamos a ver cómo instalar MongoDB en Debian 9 Stretch paso a paso, de modo que puedas usar este motor de bases de datos tipo NoSQL en tus desarrollos o como base para otras aplicaciones sobre tu servidor o VPS Debian.
Tabla de contenidos
Antes de instalar MongoDB en Debian 9 Stretch
Para completar esta guía de instalación de MongoDB en Debian 9 Stretch debes cumplir unos mínimos requisitos:
- Una máquina Debian 9 Stretch actualizada.
- Acceso a consola como root o un usuario con permisos de sudo.
- Conexión a Internet.
En este tutorial trabajaremos con algunas herramientas del sistema que podemos descargar desde los repositorios de Debian 9 Stretch, por lo que actualizaremos las listas de paquetes:
~$ sudo apt update
E instalamos dichas herramientas:
~$ sudo apt install -y ca-certificates gnupg wget
Cómo instalar MongoDB en Debian 9 Stretch
Para instalar MongoDB en Debian 9 Stretch añadiremos el repositorio oficial de mongodb.org, ya que mientras la última versión estable es la rama 5.0, los paquetes disponibles en el repositorio de la distribución sólo llegan hasta la versión 3.2.11. Por tanto merece la pena incorporar el repositorio de MongoDB.
El primer paso será incorporar la clave pública del certificado con el que están firmados los paquetes del repositorio oficial:
~$ wget https://www.mongodb.org/static/pgp/server-5.0.asc -qO- | sudo apt-key add
Ahora creamos una fuente de MongoDB para apt:
~$ sudo nano /etc/apt/sources.list.d/mongodb.org-5.0.list
La única línea que tendrá este archivo es la siguiente:
deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/5.0 main
Guardamos los cambios y cerramos el archivo. Es hora de actualizar las listas de paquetes y comprobar que todo está correcto:
~$ sudo apt update
El paquete que necesitamos es mongodb-org, así que vamos a instalarlo con el comando apt:
~$ sudo apt install -y mongodb-org
Tras descargar e instalar el paquete mongodb-org y todas sus dependencias, se crea un nuevo servicio en nuestro sistema Debian 9, llamado mongod.service, o mongod si prefieres usar la versión corta.
Este nuevo servicio no queda en ejecución tras la instalación ni tampoco queda activado, por lo que son tareas que debemos hacer manualmente. En primer lugar habilitaremos el servicio mongod para que arranque junto a Debian 9:
~$ sudo systemctl enable mongod
Y ahora arrancamos manualmente el servicio para no tener que esperar al próximo inicio del sistema:
~$ sudo systemctl start mongod
Comprobaremos el estado del servicio mongod usando el comando systemctl status mongod
:
Queda claro que el servidor MongoDB ya está listo para aceptar conexiones. De hecho, podemos probarlo con el cliente mongosh, pasando un script mínimo en la misma línea de comandos:
~$ mongosh --eval 'db.runCommand({connectionStatus: 1})'
Que provocará la siguiente salida:
~$ mongosh --eval 'db.runCommand({connectionStatus: 1})' Current Mongosh Log ID: 62548aa12030f602a59d2336 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 ... { authInfo: { authenticatedUsers: [], authenticatedUserRoles: [] }, ok: 1 }
También podremos utilizar el shell mongosh de forma interactiva:
~$ mongosh Current Mongosh Log ID: 62548b1dd7c0f5f4917d6b0c 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/ ------ 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 ------ test>
MongoDB activa por defecto un servicio de telemetría que recopila datos anónimos para la mejora del producto. Si no queremos enviar datos sobre el funcionamiento de nuestra instacia de MongoDB en Debian 9 podemos desactivar esta función con el comando disableTelemetry():
> disableTelemetry()
Salimos del cliente con el comando exit:
> exit
Cómo configurar MongoDB en Debian 9 Stretch
Para configurar MongoDB en Debian 9 Stretch trabajaremos sobre su archivo principal de configuración, que es /etc/mongod.conf.
En este archivo de configuración no sólo podremos realizar ajustes, sino que podremos averiguar los valores actuales de configuración.
Por ejemplo, el registro de eventos de MongoDB se encuentra en /var/log/mongodb/mongod.log.
MongoDB sólo escucha conexiones locales, a través de la interfaz local con dirección IP 127.0.0.1. Puedes modificar esto cambiando el valor de la directiva bindIp en mongod.conf.
El puerto de escucha es el 27017 (directiva port).
Cualquier cambio que realices sobre el archivo de configuración de MongoDB no hará efecto hasta que reinicies el servicio (no se puede simplemente recargar la configuración del servicio):
~$ sudo systemctl restart mongod
Cómo crear un usuario administrador y activar el control de acceso
Vamos a crear un usuario con rol de administrador con el que manejaremos el resto de usuarios y bases de datos. Conectamos al servicio, si no lo hemos hecho ya:
~$ mongosh
Activamos la base de datos principal, admin:
> use admin
Y creamos el nuevo usuario, especificando su contraseña y el rol de administrador:
> db.createUser({user: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})
Cerramos la conexión:
> exit
Ahora activaremos la autenticación mediante contraseña editando el archivo de configuración de MongoDB:
~$ sudo nano /etc/mongod.conf
Buscamos la directiva security y la habilitamos añadiendo el acceso mediante clave:
... security: authorization: enabled ...
Lo que hay antes de la directiva authorization son espacios en blanco. En este archivo de configuración la indentación es obligatoria y no se pueden usar tabuladores.
Guardamos los cambios y reiniciamos el servicio.
Ahora para acceder al servicio es necesario especificar el usuario y el uso de contraseña (al estilo de MySQL):
~$ mongosh -u chacho Enter password: ******** ... ------ >
Conclusión
Ahora que sabes cómo instalar y configurar MongoDB Server en Debian 9 Stretch, puedes montar el backend necesario en el que se apoyan muchas de las pilas de desarrollo más populares.
Si tienes alguna duda, pregunta, sugerencia o notificación, puedes dejar un comentario.
Ah, y si te ha sido de utilidad esta breve guía de instalación de MongoDB en Debian 9, y quieres agradecérmelo, puedes hacerlo dejando 1 $ de propina en PayPal:
¡Gracias!
Actualizado a la versión 5.0.7.