MongoDB es una base de datos de documentos, que almacena datos en forma similar a JSON, que es un enfoque revolucionario en contraste con las bases de datos relacionales tradicionales. Esto no significa que las bases de datos SQL desaparecerán pronto; estarán aquí durante mucho tiempo cuando necesite almacenar datos estructurados.
Dicho esto, MongoDB obtiene cada vez más casos de uso; la capacidad de almacenar datos en un formato que puede cambiar sobre la marcha son cosas con las que se debe contar.
En este tutorial, instalaremos la versión comunitaria más reciente de esta base de datos NoSQL en RHEL 8/CentOS 8, utilizando el paquete tarball. Para que esto funcione sin problemas, configuraremos el entorno mínimo y probaremos nuestra configuración y el servicio en ejecución.
En este tutorial aprenderás:
- Cómo descargar y extraer tarball de MongoDB
- Cómo configurar el entorno para el servicio
- Cómo administrar el servicio mongod
- Cómo iniciar sesión en Mongo Shell, insertar y consultar datos de muestra
Ejemplo de consulta en mongodb.
Requisitos de software y convenciones utilizadas
Requisitos de software y convenciones de la línea de comandos de Linux Categoría | Requisitos, convenciones o versión de software utilizada |
Sistema | RHEL 8 / CentOS 8 |
Software | MongoDB 4 |
Otro | Acceso privilegiado a su sistema Linux como root o a través de sudo comando. |
Convenciones | # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios |
Cómo instalar mongodb en RHEL 8 / CentOS 8 instrucciones paso a paso
Necesitamos recopilar una URL antes de la instalación. Para esto, debemos visitar el sitio de la comunidad del Centro de descargas de MongoDB, seleccionar el sistema operativo y la versión (Linux 64bit heredado en este caso, necesitamos el tarball). Si bien se nos proporciona un botón de descarga, también obtenemos una URL directa a continuación, que podemos usar directamente desde la máquina de destino.
Esto nos evita descargar el paquete a través del navegador y luego transferirlo a la máquina de destino, siempre que tengamos acceso a Internet desde el destino. Así que toma nota de la URL, la usaremos en breve.
- Almacenaremos los archivos binarios en
/opt
. En la máquina de destino, ingresamos al directorio:# cd /opt
Y descargue el tarball proporcionando la URL adquirida anteriormente a wget
:
# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.5.tgz
--2019-01-03 16:49:59-- https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.5.tgz
Resolving fastdl.mongodb.org (fastdl.mongodb.org)... 52.222.150.27, 52.222.150.229, 52.222.150.45, ...
Connecting to fastdl.mongodb.org (fastdl.mongodb.org)|52.222.150.27|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 73214518 (70M) [application/x-gzip]
Saving to: 'mongodb-linux-x86_64-4.0.5.tgz'
mongodb-linux-x86_64-4.0.5.tgz 100%[================================================================================================================>] 69.82M 3.12MB/s in 23s
2019-01-03 16:50:22 (3.06 MB/s) - 'mongodb-linux-x86_64-4.0.5.tgz' saved [73214518/73214518]
- Extraemos el tarball:
# tar -zxvf mongodb-linux-x86_64-4.0.5.tgz
Y cree un enlace simbólico más fácil de recordar llamado mongodb
que apunta al directorio extraído (el número de versión puede diferir):
# ln -s mongodb-linux-x86_64-4.0.5 mongodb
- Creamos el usuario que ejecutará el servicio llamado
mongod
:# useradd mongod
- Creamos el directorio donde mongodb almacenará sus datos:
# mkdir -p /var/lib/mongo
- Configuramos el
mongod
usuario como propietario de los archivos binarios y del directorio de datos:# chown -R mongod:mongod /opt/mongodb*
# chown -R mongod: /var/lib/mongo
- Creamos un archivo de configuración básico para mongodb. Especificamos el directorio de datos creado y configuramos la base de datos para escuchar solo en localhost, en el puerto predeterminado
27017
. Creamos el archivo de texto /etc/mongod.conf
con el siguiente contenido:storage:
dbPath: "/var/lib/mongo"
journal:
enabled: true
net:
port: 27017
bindIp: "127.0.0.1"
Observe el dbPath
parámetro, que configuramos en el directorio que creamos para el almacenamiento de datos en un paso anterior.
- Para
systemd
para poder administrar el servicio creamos el archivo de texto /etc/systemd/system/mongod.service
con configuración mínima:[Unit]
Description=MongoDB
After=syslog.target network.target
[Service]
Type=simple
User=mongod
Group=mongod
ExecStart=/opt/mongodb/bin/mongod --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
Tenga en cuenta que usamos el mongod
usuario y grupo, usó nuestra ruta personalizada para el mongod
binario e incluía el archivo de configuración que creamos a mano.
- Configuramos
selinux
a permisivo por ahora, ya que bloquearía el acceso a los recursos del servicio. Configuración de selinux
políticas está fuera del alcance de este tutorial.# setenforce 0
- Le preguntaremos a
systemd
para recargar:systemctl daemon-reload
- Y compruebe si se reconoce el servicio:
# systemctl status mongod
mongod.service - MongoDB
Loaded: loaded (/etc/systemd/system/mongod.service; disabled; vendor preset: disabled)
Active: inactive (dead)
- Estamos listos para iniciar el servicio:
# systemctl start mongod
- Y comprueba su estado. Si todo va bien, deberíamos ver algo como lo siguiente:
# systemctl status mongod
mongod.service - MongoDB
Loaded: loaded (/etc/systemd/system/mongod.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2019-01-03 17:01:48 CET; 4s ago
Main PID: 2993 (mongod)
Tasks: 23 (limit: 12544)
Memory: 45.3M
CGroup: /system.slice/mongod.service
2993 /opt/mongodb/bin/mongod --config /etc/mongod.conf
- Podemos probar nuestro servicio con
mongo shell
, una interfaz de línea de comandos incluida con MongoDB. Para poder acceder a él, debemos incluir los binarios que extrajimos en el $PATH
. Como administradores perezosos, solo hacemos esto una vez, de forma permanente. Agregamos la siguiente línea a /root/.bash_profile
, antes la última línea "exportar PATH":## mongodb
PATH=$PATH:/opt/mongodb/bin
Y ejecute el script:
# . ~/.bash_profile
- Iniciamos el
mongo shell
:# mongo
MongoDB shell version v4.0.5
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("8999342b-e313-48e6-92c4-bf6b07cee0e4") }
MongoDB server version: 4.0.5
Welcome to the MongoDB shell.
For interactive help, type "help".
[...]
>
Puede haber algunas advertencias de inicio, como la configuración de páginas grandes, pero las ignoraremos en este tutorial.
- En el
mongo shell
, le preguntaremos por cualquier base de datos presente:> db
test
- Y cambie a la
test
enviada base de datos:> use test
switched to db test
- Insertamos algunos datos de prueba (clave “x” con el valor de “1”) en una colección creada sobre la marcha:
> db.exampleCollection.insertOne( { x: 1 } );
{
"acknowledged" : true,
"insertedId" : ObjectId("5c2e33040854f2d89326ae9c")
}
>
- Y finalmente consultamos cualquier dato en la nueva colección, verificando que nuestro par clave-valor se almacene correctamente:
> db.getCollection("exampleCollection").find().pretty();
{ "_id" : ObjectId("5c2e4c2fd129ceef6a6c6112"), "x" : 1 }
>