MongoDB — бесплатная база данных документов NoSQL с открытым исходным кодом, часто используемая в современных веб-приложениях.
В этом обучающем модуле вы научитесь устанавливать MongoDB, управлять ее службами и включать дистанционный доступ, если это потребуется.
Установка MongoDB
Официальные хранилища пакетов Ubuntu включают актуальную версию MongoDB, и это означает, что мы можем установить необходимые пакеты с помощью apt
.
Вначале необходимо обновить список пакетов, чтобы получить последнюю версию списка хранилища:
sudo apt update
Затем мы установим сам пакет MongoDB:
sudo apt install -y mongodb
Эта команда устанавливает несколько пакетов, содержащих последнюю стабильную версию MongoDB, а также полезные инструменты управления для сервера MongoDB. Сервер базы данных автоматически запускается после установки.
Затем нужно убедиться, что сервер запущен и работает корректно.
Проверка службы и базы данных
Запуск 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 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
Согласно systemd
, сервер MongoDB запущен и работает.
Мы можем дополнительно подтвердить это, выполнив фактическое подключение к серверу базы данных и запустив диагностическую команду
Запустите следующую команду:
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
Команда выведет текущую версию базы данных, адрес и порт сервера, а также результаты выполнения команды status:
Output
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
}
Значение 1
поля ok
в ответе означает, что сервер работает нормально.
Теперь мы рассмотрим, как управлять экземпляром сервера.
Управление службой MongoDB
MongoDB устанавливается как служба systemd, т. е. вы можете управлять ей с помощью стандартных команд systemd
наряду со всеми другими системными службами в 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.
Настройка брандмауэра (необязательно)
Если вы намереваетесь использовать сервер MongoDB только локально с запуском приложений на том же сервере, эту безопасную настройку рекомендуется сохранить. Однако если вы хотите иметь возможность подключения к серверу MongoDB из интернета, необходимо разрешить входящие подключения в ufw
.
Чтобы разрешить доступ к MongoDB через порт по умолчанию 27017
из любой точки, можно использовать команду sudo ufw allow 27017
. Однако включение доступа к серверу MongoDB через интернет с параметрами по умолчанию даст кому угодно доступ к серверу базы данных и его содержимому.
В большинстве случаев доступ к MongoDB следует разрешать только из определенных доверенных мест, таких как другой сервер хостинга приложения. Для этого нужно разрешить доступ к порту MongoDB по умолчанию, но указать IP-адрес другого сервера, которому будет дано явное разрешение на подключение:
sudo ufw allow from your_other_server_ip/32 to any port 27017
Вы можете проверить изменение параметров брандмауэра с помощью ufw
:
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 только для одного IP-адреса, этот адрес должен быть указан в выводимом списке вместо «Anywhere».
Хотя порт открыт, MongoDB прослушивает только локальный адрес 127.0.0.1
. Чтобы разрешить удаленные подключения, добавьте публичный маршрутизируемый IP-адрес вашего сервера в файл mongod.conf
.
Откройте файл конфигурации MongoDB в редакторе:
sudo nano /etc/mongodb.conf
Добавьте IP-адрес вашего сервера в значение bindIP
:
...
logappend=true
bind_ip = 127.0.0.1,your_server_ip
#port = 27017
...
Обязательно поставьте запятую между уже записанным IP-адресом и добавленным.
Сохраните файл, закройте редактор и перезапустите MongoDB:
sudo systemctl restart mongodb
Теперь MongoDB прослушивает удаленные соединения, но доступ к нему открыт для всех.