Skip to content

Установка и настройка MongoDB

MongoDB - документоориентированная база данных, используется как основное хранилище всех сущностей.

В данном руководстве описана базовая минимальная настройка базы данных, для более подробной настройки необходимо обратиться к официальной документации.

К сведению

В примере приведена настройка MongoDB 6.0

Внимание

При стандартных настройках сервер с MongoDB не должен быть доступен извне, иначе необходимо настроить способы аутентификации и авторизации для обеспечения защиты.

Установка

Linux

Установка MongoDB для RHEL системы

Настройка системы управления (yum):

Создать файл /etc/yum.repos.d/mongodb-org-6.0.repo для возможности установки MongoDB, используя yum:

ini
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

Установка пакетов MongoDB:

shell
sudo yum install -y mongodb-org

Установка MongoDB для Debian системы

  1. Импортировать публичный ключ для пакетного менеджера системы:
shell
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
  1. Создать файл /etc/apt/sources.list.d/mongodb-org-6.0.list:
shell
echo "deb http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
  1. Обновить локальную пакетную базу данных:
shell
sudo apt-get update

Установка пакетов MongoDB:

shell
sudo apt-get install -y mongodb-org

Настройка рабочих директорий:

По дефолту MongoDB использует стандартного пользователя mongod и следующие директории:

  • /var/lib/mongo (директория данных)
  • /var/log/mongodb (директория логов)

Данные директории необходимо создать:

shell
sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb

В случае использования нестандартной директории, необходимо внести изменения в файл /etc/mongod.conf, например:

yaml
# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /mnt/db/mongo/log/mongod.log

# Where and how to store data.
storage:
  dbPath: /mnt/db/mongo/db
  journal:
    enabled: true

При использовании стандартного пользователя mongod необходимо дать ему права на созданные директории.

shell
sudo chown -R mongod:mongod <directory>

Отключение SELinux

Внимание

Если SELinux находится в режиме enforcing для работы MongoDB, его необходимо отключить или настроить согласно документации MongoDB

Для отключения SELinux необходимо выполнить команду:

shell
sudo sed -i "s/SELINUX=enforcing/SELINUX=permissive/" /etc/selinux/config

После выполнения команды нужно перезагрузить компьютер.

Установить автозапуск и запустить сервис

Для этого необходимо выполнить следующие команды:

shell
sudo systemctl daemon-reload
sudo systemctl enable mongod
sudo systemctl start mongod

Внимание

При стандартных настройках для работы MongoDB необходимо открыть порт 27017

Настройка MongoDB

Для использования mongo shell необходимо выполнить команду:

shell
mongo

Создание базы данных и коллекции:

shell
use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )

К сведению

Базу данных создавать необязательно. Приложение создаст самостоятельно со всеми необходимыми коллекциями, используя значения из файла application.properties.

Для использования MongoDB в ЦРМе необходимо в application.properties установить актуальные параметры, например:

ini
###MongoDB Setting
#technometer.sds.jwtExpirationMs=60000
#technometer.sds.jwtRefreshExpirationMs=120000
#Адрес сервера монги
technometer.sds.mongo_url=mongodb://URL_MONGO_SERVER:PORT_MONGO //[!code --]
technometer.sds.mongo_url=mongodb://192.168.1.10:27017 //[!code ++]
#Имя используемой базы
technometer.sds.mongo_db_name=DB_NAME_MONGO //[!code --]
technometer.sds.mongo_db_name=crm //[!code ++]
#Имя аршиновской коллекции в монге
technometer.sds.mongo.arshin.collection=COLLECTION_NAME //[!code --]
technometer.sds.mongo.arshin.collection=vri //[!code ++]
#Имя аршиновской базы
technometer.sds.mongo.arshin.db_name=DB_NAME_ARSHIN //[!code --]
technometer.sds.mongo.arshin.db_name=crm_arshin //[!code ++]