Cómo instalar MongoDB en Ubuntu 16.04

,
Como instalar MongoDB en Ubuntu 16.04

Antes de instalar MongoDB conozcamos un poco a cerca de este sistema de base de datos NoSQL. Está desarrollado bajo el concepto de código abierto y se orientada a documentos. Según la documantación oficial del proyecto en español:

MongoDB (que proviene de «humongous») es la base de datos NoSQL líder y permite a las empresas ser más ágiles y escalables. Organizaciones de todos los tamaños están usando MongoDB para crear nuevos tipos de aplicaciones, mejorar la experiencia del cliente, acelerar el tiempo de comercialización y reducir costes.

Nota: En el momento de escribir este tutorial, los paquetes de MongoDB no han sido actualizados para utilizar el sistema de inicio systemd que está habilitado, por defecto, en Ubunto 16.04.

Requisitos previos

Necesitas primero que todo un servidor con Ubuntu 16.04 y un usuario con privilegios de administración que no sea root. Puedes encontrar cómo crear este usuario en la guía Configuración inicial de un servidor ubuntu.

Añadir el repositorio de MongoDB

MongoDB viene incluido en el repositorio oficial de Ubuntu. Sin embargo, el repositorio oficial del proyecto provee una versión más actualizada. Por esta razón es recomendable que instales el software desde el repositorio oficial del proyecto. Para esto debes agregar el repositorio a tu servidor.

Lo primero es importar la llave GPG del repositorio oficial de MongoDB :

Después de importar la llave debes ver algo como esto:

Ahora debes agregar los detalles del repositorio, para que apt sepa de dónde descargar los paquetes:

Luego actualiza la base de datos de paquetes de esta forma:

Instalar MongoDB

Ya lo tienes todo preparado, es hora de instalar MongoDB (la última versión) así:

Si quieres correr el software como servicio, necesitas crear un unit file para describir el servicio. Este archivo le dirá a systemd cómo administrar el recurso (el servicio de MongoDB, en este caso). El unit file más común es un servicio y determina cómo iniciar, detener o reiniciar el software.

Para crear un unit file que gestione el servicio MongoDB, debes crear un archivo de configuración llamado mongodb.service en el directorio /etc/systemd/system. Puedes crearlo utilizando nano o tu editor de texto preferido:

Copia el siguiente texto y a continuación guarda y cierra el archivo (ctrl + x, luego y, finalmente ENTER).

Estructura del archivo:

  • La sección Unit contiene la descripción del servicio y las dependencias que deben satisfacerse antes de iniciar el mismo, MongoDB depende de una conexión de red, por lo que debes definir network.target.
  • La sección Service define cómo el servicio será iniciado. La directiva User especifica que el servidor correrá bajo el usuario mongodb ExecStart indica el comando de inicio para el servidor MongoDB.
  • La ultima sección, Install, le indica a systemd cuándo el servicio debería ser iniciado automáticamente. La directiva multi-user.target es una secuencia estándar de inicio de sistema, lo que significa que el servidor debería iniciarse automáticamente.

¡Listo! Ahora inicia el servicio que acabas de crear utilizando systemctl:

Este comando no devuelve ningún resultado. Así que para saber si MongoDB se inició correctamente debes escribir lo siguiente:

Deberás ver algo similar a esto:

Lo último que debes hacer es habilitar el inicio automático de MongoDB cuando inicie el sistema:

Ya tienes configurado y corriendo el servidor de MongoDB y puedes manejar el servicio utilizando systemctl. Sin embargo, quedan algunas cuestiones de seguridad que abordar en el siguiente punto.

Ajustar el Firewall

Si has seguido las instrucciones de la guía Configuración inicial de un servidor con ubuntu, para habilitar un firewall en tu servidor, entonces MongoDB es inaccesible desde internet.

Si tienes planes de utilizar MongoDB de forma local con aplicaciones corriendo en el mismo servidor, es recomendado y seguro. Sin embargo, si deseas poder conectarte a tu servidor de MongoDB desde internet debes permitir la conexión a internet a través de ufw.

Para acceder a MongoDB en su puerto, por defecto 27017, desde cualquier lugar puedes utilizar:

Sin embargo, habilitar el acceso a internet en la instalación por defecto daría acceso ilimitado a todas las bases de datos. Lo mejor sería darle acceso desde determinadas redes o desde un servidor específico. Veamos:

Puedes verificar el cambio escribiendo el siguiente comando:

Deberías ver el tráfico del puerto 27017 permitido en la salida del comando. Si decides permitir que un IP específico se conecte al servidor de MongoDB, deberías ver la dirección IP en vez de Anywhere en la salida.

Si deseas conocer más acerca de las reglas de configuración de ufw consulta la guía: UFW: Reglas y comandos comunes.

Punto Final

Al llegar a este punto, ya lograste instalar MongoDB en tu servidor. Solo me resta alertarte sobre algo que te puede pasar en caso de que desees migrar un proyecto de PHP 5.x.x o superior, pero inferior a la 7.0.0. Y es que en PHP 7.x.x+ el driver de MongoDB cambió, no solo el nombre de la clase, sino también todo lo que implementa la misma. Por ello, debes tener mucho cuidado con los requisitos del proyecto antes de migrar. Puedes documentarte más acerca de estos cambios en el sitio oficial de PHP.

2 comentarios
  1. jrangel
    jrangel Dice:

    que tal, espero me puedas ayudar al hacer sudo systemctl start mongodb me arroja lo siguiente: Warning: mongodb.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.

    ya instale mongo de nuevo y aun sigue mostrando este error.

    saludos

    Responder
    • Carlos Bustillo
      Carlos Bustillo Dice:

      Hola, estás empleando Ubuntu 16.04? Has intentado ejecutar: systemctl daemon-reload o reiniciar la VPS?

      Qué te muestra el comando: systemctl status mongodb?

      Responder

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *