MongoDB es una base de datos de documentos gratuita y de código abierto utilizada comúnmente en las aplicaciones web modernas.
En este tutorial, instalará MongoDB, administrará su servicio y, de forma opcional, habilitará el acceso remoto.
Nota: Al momento de la publicación de este artículo, este tutorial instala la versión 3.6 de MongoDB, que es la versión disponible en los repositorios predeterminados de Ubuntu. Sin embargo, generalmente recomendamos instalar la versión más reciente de MongoDB, es decir, la versión 4.4 al momento de la publicación de este artículo. Si desea instalar la versión más reciente de MongoDB, le recomendamos que siga esta guía sobre Cómo instalar MongoDB en Ubuntu 20.04.
Para seguir este tutorial, necesitará lo siguiente:
En los repositorios oficiales de paquetes de Ubuntu se incluye MongoDB, lo que significa que podemos instalar los paquetes necesarios utilizando apt
. Como se mencionó en la introducción, la versión disponible en los repositorios predeterminados no es la más reciente. Para instalar la versión más reciente de Mongo, siga este tutorial.
Primero, actualice la lista de paquetes para tener la versión más reciente de listados de repositorios:
- sudo apt update
A continuación, instale el propio paquete de MongoDB:
- sudo apt install mongodb
Este comando le solicitará confirmar que quiere instalar el paquete mongodb
y sus dependencias. Para hacerlo, presione Y
y, luego, ENTER
.
Este comando instala varios paquetes que contienen una versión estable de MongoDB, junto con herramientas de administración útiles para el servidor de MongoDB. El servidor de la base de datos se inicia de forma automática tras la instalación.
A continuación, comprobaremos que el servidor esté activo y funcione de forma correcta.
El proceso de instalación inició MongoDB de forma automática, pero verificaremos que el servicio se inicie y que la base de datos funcione.
Primero, compruebe el estado del servicio:
- sudo systemctl status mongodb
Verá este resultado:
Output● mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-10-08 14:23:22 UTC; 49s ago
Docs: man:mongod(1)
Main PID: 2790 (mongod)
Tasks: 23 (limit: 2344)
Memory: 42.2M
CGroup: /system.slice/mongodb.service
└─2790 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
Según este resultado, el servidor MongoDB está funcionando.
Podemos verificar esto en profundidad estableciendo conexión con el servidor de la base de datos y ejecutando el siguiente comando de diagnóstico. Con esto se mostrarán la versión actual de la base de datos, la dirección y el puerto del servidor, y el resultado del comando status:
- mongo --eval 'db.runCommand({ connectionStatus: 1 })'
OutputMongoDB shell version v3.6.8
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("e3c1f2a1-a426-4366-b5f8-c8b8e7813135") }
MongoDB server version: 3.6.8
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
Un valor de 1
para el campo ok
en la respuesta indica que el servidor funciona correctamente.
A continuación, veremos la forma de administrar la instancia del servidor.
El proceso de instalación descrito en el Paso 1 configura MongoDB como servicio de systemd
, lo que significa que puede administrarlo utilizando comandos systemctl
estándares, junto con todos los demás servicios de sistema en Ubuntu.
Para verificar el estado del servicio, escriba lo siguiente:
- sudo systemctl status mongodb
Puede detener el servidor en cualquier momento escribiendo lo siguiente:
- sudo systemctl stop mongodb
Para iniciar el servidor cuando esté detenido, escriba lo siguiente:
- sudo systemctl start mongodb
También puede reiniciar el servidor con el siguiente comando:
- sudo systemctl restart mongodb
Por defecto, MongoDB se configura para iniciarse de forma automática con el servidor. Si desea desactivar el inicio automático, escriba lo siguiente:
- sudo systemctl disable mongodb
Puede volver a habilitar el inicio automático en cualquier momento con el siguiente comando:
- sudo systemctl enable mongodb
A continuación, ajustaremos la configuración del firewall para nuestra instalación MongoDB.
Suponiendo que siguió las instrucciones del tutorial de configuración inicial para servidores para habilitar el firewall en su servidor, no será posible acceder al servidor de MongoDB desde Internet.
Si tiene intención de usar el servidor de MongoDB solo a nivel local con aplicaciones que se ejecuten en el mismo servidor, este es el ajuste recomendado y seguro. Sin embargo, si desea poder conectarse con su servidor MongoDB desde Internet, deberá permitir las conexiones entrantes añadiendo una regla UFW.
Para permitir el acceso a MongoDB en su puerto predeterminado 27017
desde cualquier parte, podría ejecutar sudo ufw allow 27017
. Sin embargo, permitir el acceso a Internet al servidor de MongoDB en una instalación predeterminada proporciona acceso ilimitado al servidor de la base de datos y a sus datos.
En la mayoría de los casos, solo se debe acceder a MongoDB desde determinadas ubicaciones de confianza, como otro servidor que aloje una aplicación. Para permitir solo el acceso al puerto predeterminado de MongoDB mediante otro servidor de confianza, puede especificar la dirección IP del servidor remoto en el comando ufw
. De esta manera, solo se permitirá que esa máquina se conecte de forma explícita:
- sudo ufw allow from trusted_server_ip/32 to any port 27017
Puede verificar el cambio en los ajustes del firewall con ufw:
- sudo ufw status
Debería ver la habilitación del tráfico hacia el puerto 27017
en el resultado. Tenga en cuenta que si decidió permitir que solo una dirección IP determinada se conecte con el servidor de MongoDB, en el resultado de este comando se enumerará la dirección IP de la ubicación autorizada en lugar de Anywhere
.
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
Puede encontrar ajustes de firewall más avanzados para restringir el acceso a servicios en Aspectos básicos de UFW: Reglas y comandos comunes de firewall.
Aunque el puerto esté abierto, MongoDB seguirá escuchando solo en la dirección local 127.0.0.1
. Para permitir conexiones remotas, agregue la dirección IP pública de su servidor al archivo mongodb.conf
.
Abra el archivo de configuración de MongoDB en su editor de texto preferido: Este comando de ejemplo utiliza nano
:
- sudo nano /etc/mongodb.conf
Agregue la dirección IP de su servidor de MongoDB al valor bindIP
: Asegúrese de colocar una coma entre la dirección IP existente y la que agregó.
...
logappend=true
bind_ip = 127.0.0.1,your_server_ip
#port = 27017
...
Guarde el archivo y salga del editor. Si utilizó nano
para editar el archivo, hágalo pulsando CTRL + X
, Y
y, luego, ENTER
.
Luego, reinicie el servicio de MongoDB:
- sudo systemctl restart mongodb
MongoDB ahora recibirá conexiones remotas, pero cualquiera podrá acceder a él. Siga el tutorial Cómo instalar y proteger MongoDB en Ubuntu 20.04 para agregar un usuario administrativo y ampliar el bloqueo.
Puede encontrar tutoriales más detallados sobre cómo configurar y utilizar MongoDB en estos artículos de la comunidad de DigitalOcean. La documentación oficial de MongoDB también es un gran recurso en el que se abordan las posibilidades que ofrece MongoDB.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Thanks!