Table of Contents
Введение
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
Вы увидите следующий результат:
[secondary_label 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 })'
[secondary_label Output]
MongoDB shell version v<^>3.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 в списке, выводимом при выполнении этой команды:
[secondary_label 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-адресом и тем адресом, который вы добавили:
[label /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 можно найти в следующих статьях сообщества the cloud provider. Официальная документация по MongoDB также содержит много информации о возможностях, предоставляемых MongoDB.