MongoDB – это бесплатная СУБД с открытым исходным кодом. Это документоориентированная СУБД, реализованная при помощи подхода NoSQL. На июль 2018 года MongoDB входит в пятерку самых популярных СУБД (при этом остальные четыре СУБД – реляционные).
Преимущества использования MongoDB – это высокая скорость разработки, масштабируемость, использование гибкого языка для формирования запросов, эффективное хранение двоичных данных больших объемов.
Требования
Для того чтобы выполнить инструкции из этой статьи, у вас должен быть сервер с установленной на нем ОС Ubuntu 18.04, пользователем, который может выполнять команды sudo, и файрволом.
Шаг 1: Установка MongoDB
Актуальную версию MongoDB можно установить из официальных репозиториев Ubuntu. Для этого можно использовать утилиту apt.
Сначала нужно обновить список пакетов:
$ sudo apt update
А затем установить MongoDB:
$ sudo apt install -y mongodb
Эта команда устанавливает несколько пакетов, а именно саму СУБД MongoDB и полезные инструменты для работы с сервером. Сервер базы данных автоматически начнет работать сразу после установки.
Теперь надо проверить, что сервер запущен и работает корректно.
Шаг 2: Проверка работы базы данных
Для начала нужно проверить статус службы. Сделать это можно при помощи следующей команды:
$ sudo systemctl status mongodb
Вывод на экране будет примерно вот таким:
mongodb.service - An object/document-oriented database Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2018-05-26 07:48:04 UTC; 2min 17s ago Docs: man:mongod(1) Main PID: 2312 (mongod) Tasks: 23 (limit: 1153) CGroup: /system.slice/mongodb.service └─2312 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
То есть утилита systemctl (она используется для управления службами в Linux) показывает, что сервер MongoDB запущен и работает.
Если этого недостаточно, то можно подключиться к серверу базы данных и выполнить диагностику.
Введите команду:
$ mongo --eval 'db.runCommand({ connectionStatus: 1 })'
В выводе вы увидите версию текущей базы данных, адрес сервера и порт.
MongoDB shell version v3.6.3 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.6.3 { "authInfo" : { "authenticatedUsers" : [ ], "authenticatedUserRoles" : [ ] }, "ok" : 1 }
Единица в поле ОК говорит о том, что сервер работает корректно.
Теперь необходимо разобраться в том, как управлять сервером.
Шаг 3: Управление MongoDB
MongoDB устанавливается в качестве службы systemd, а значит, управлять СУБД можно при помощи стандартных команд system – точно так же, как и другими службами Ubuntu.
Команда для того, чтобы проверить статус службы:
$ sudo systemctl status mongodb
Команда для остановки сервера:
$ sudo systemctl stop mongodb
Команда для запуска сервера после остановки:
$ sudo systemctl start mongodb
Команда для того, чтобы перезапустить службу:
$ sudo systemctl restart mongodb
По умолчанию MongoDB запускается вместе с запуском сервера, но эту предустановку можно изменить следующей командой:
$ sudo systemctl disable mongodb
Если вам снова нужно добавить службу в автозагрузку, то введите:
$ sudo systemctl enable mongodb
Теперь можно перейти к настройке фаервола.
Шаг 4: Настройка файрвола
При стандартных настройках файрвола сервер MongoDB будет недоступен из сети. Если вы собираетесь использовать сервер MongoDB локально с приложениями, работающими на этом же сервере, то это подходящая настройка, которую лучше стоит оставить.
Однако если вы хотите сделать возможным доступ через интернет, то вам нужно разрешить входящие соединения в ufw.
Для того чтобы дать доступ к MongoDB по стандартному порту 27017, можно использовать команду:
$ sudo ufw allow 27017
Но в этом случае доступ к базе данных получат абсолютно все пользователи, что небезопасно.
Поэтому лучше разрешить доступ только из определенных мест, например с другого сервера. Для этого вам нужно дать доступ к стандартному порту MongoDB, но с указанием IP-адреса другого сервера, с которого можно будет подсоединяться:
$ sudo ufw allow from ip-адрес-сервера/32 to any port 27017
Проверить изменения в настройках файрвола можно командой:
$ sudo ufw status
В выводе вы увидите, что трафик по порту 27017 разрешен:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 27017 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 27017 (v6) ALLOW Anywhere (v6)
Несмотря на то, что порт открыт, сейчас MongoDB слушает только локальный адрес 127.0.0.1. Для того чтобы разрешить удаленные подключения, вам нужно добавить в файл mongod.conf публичный IP-адрес вашего сервера.
Откройте конфигурационный файл MongoDB:
$ sudo nano /etc/mongodb.conf
Добавьте IP-адрес сервера в строку bindIP:
... logappend=true bind_ip = 127.0.0.1, ip-адрес вашего сервера #port = 27017 ...
Обязательно поставьте запятую между уже написанным IP-адресом и тем, который вы добавляете.
Сохраните и закройте файл, а затем перезапустите MongoDB:
$ sudo systemctl restart mongodb
Теперь удаленные подключения к MongoDB разрешены.