Установка MongoDB из репозиториев APT по умолчанию в Ubuntu 20.04

Введение

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

В этом учебном модуле мы установим MongoDB, будем управлять ее сервисами и включим опцию удаленного доступа.

Примечание. На момент составления данный учебный модуль устанавливает версию MongoDB 3.6, доступную для репозиториев Ubuntu по умолчанию. Однако обычно вместо этого мы рекомендуем установить последнюю версию MongoDB. На момент написания это версия 4.4. Если вы хотите установить последнюю версию MongoDB, мы рекомендуем следовать указаниям этого руководства Установка MongoDB в Ubuntu 20.04 из источника.

Предварительные требования

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

  • Один сервер Ubuntu 20.04, настроенный в соответствии с указаниями учебного модуля по начальной настройке сервера, имеющий пользователя без привилегий root с административными привилегиями и брандмауэр, настроенный с помощью UFW.

Шаг 1 — Установка MongoDB

MongoDB входит в официальные репозитории пакетов Ubuntu, т. е. мы можем устанавливать необходимые пакеты с помощью apt. Как уже было отмечено во введении, по умолчанию в репозиториях доступна не самая последняя версия. Чтобы установить последнюю версию Mongo, воспользуйтесь этим учебным модулем.

Вначале следует обновить пакеты, чтобы получить последнюю версию списков репозитория:

  • sudo apt update

Затем необходимо установить сам пакет MongoDB:

  • sudo apt install mongodb

Эта команда попросит подтвердить, что вы хотите установить пакет mongodb и его зависимости. Чтобы это сделать, нажмите Y, а затем ENTER.

Эта команда устанавливает несколько пакетов, содержащих стабильную версию MongoDB, а также полезные инструменты для управления сервером MongoDB. Сервер базы данных автоматически запускается после установки.

Затем нужно убедиться, что сервер запущен и работает корректно.

Шаг 2 — Проверка службы и базы данных

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

Вначале проверим состояние службы:

  • sudo systemctl status mongodb

Вы увидите следующий результат:

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

Согласно данному выводу, сервер MongoDB запущен и работает.

Мы можем дополнительно подтвердить это, фактически подключившись к серверу базы данных и запустив следующую диагностическую команду. Команда выведет текущую версию базы данных, адрес и порт сервера, а также результаты выполнения команды status:

  • mongo --eval 'db.runCommand({ connectionStatus: 1 })'
Output
MongoDB 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 }

Значение 1 поля ok в ответе означает, что сервер работает нормально.

Теперь мы рассмотрим, как управлять экземпляром сервера.

Шаг 3 — Управление службой MongoDB

Процесс установки, описанный в шаге 1, настраивает MongoDB как службу systemd, и это означает, что вы можете управлять этим процессом с помощью стандартных команд systemctl наряду со всеми другими системными сервисами в 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

Теперь изменим настройки параметров брандмауэра для нашей системы MongoDB.

Шаг 4 — Настройка брандмауэра (необязательно)

Если вы следовали указаниям учебного модуля по начальной настройке сервера и включили на сервере брандмауэр, сервер MongoDB будет недоступен из интернета.

Если вы намереваетесь использовать сервер MongoDB только локально с запуском приложений на том же сервере, эту безопасную настройку рекомендуется сохранить. Однако если вы хотите иметь возможность подключения к серверу MongoDB из Интернета, необходимо разрешить входящие подключения, добавив соответствующее правило UFW.

Чтобы разрешить доступ к MongoDB через порт по умолчанию 27017 из любой точки, используйте команду sudo ufw allow 27017. Однако включение доступа к серверу MongoDB через интернет с параметрами по умолчанию даст кому угодно доступ к серверу базы данных и его содержимому.

В большинстве случаев доступ к MongoDB следует разрешать только из определенных доверенных мест, таких как другой сервер хостинга приложения. Чтобы разрешить только доступ к порту MongoDB по умолчанию со стороны другого доверенного сервера, вы можете указать IP-адрес удаленного сервера в команде ufw. Таким образом, подключение будет явно разрешено только для этой машины:

  • sudo ufw allow from trusted_server_ip/32 to any port 27017

Вы можете проверить изменение параметров брандмауэра с помощью ufw:

  • sudo ufw status

В результатах вывода должно быть видно, что трафик на порт 27017 разрешен. Если вы решили разрешить подключение к серверу MongoDB только для одного IP-адреса, этот адрес должен быть указан вместо Anywhere в списке, выводимом при выполнении этой команды:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 27017 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 27017 (v6) ALLOW Anywhere (v6)

Дополнительные настройки брандмауэра для ограничения доступа к службам можно найти в разделе Основы UFW: распространенные правила и команды брандмауэра.

Хотя порт и открыт, MongoDB все равно будет прослушивать только локальный адрес 127.0.0.1. Чтобы разрешить удаленные подключения, добавьте публичный маршрутизируемый IP-адрес вашего сервера в файл mongodb.conf.

Откройте файл конфигурации MongoDB в предпочитаемом текстовом редакторе. Команда в этом примере использует nano:

  • sudo nano /etc/mongodb.conf

Добавьте IP-адрес вашего сервера MongoDB в значение blindIP. Обязательно поставьте запятую между уже записанным IP-адресом и тем адресом, который вы добавили:

/etc/mongodb.conf
...
logappend=true

bind_ip = 127.0.0.1,your_server_ip
#port = 27017

...

Сохраните файл и выйдите из редактора. Если вы использовали nano для редактирования файла, нажмите CTRL + X, Y, а затем ENTER.

Затем перезапустите службу MongoDB:

  • sudo systemctl restart mongodb

Теперь MongoDB прослушивает удаленные соединения, но доступ к нему открыт для всех. Следуйте указаниям руководства Установка и защита MongoDB в Ubuntu 20.04, чтобы добавить административного пользователя и дополнительные ограничения.

Заключение

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

Recent Articles

Related Stories

Stay on op - Ge the daily news in your inbox