Установка MongoDB в Debian 9

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

Данный мануал поможет вам установить MongoDB, а также научит управлять сервисом и по желанию настроить удаленный доступ.

Требования

Для работы вам понадобится сервер Debian 9, настроенный по этому мануалу.

1: Установка MongoDB

В официальном репозитории Debian 9 находится слегка устаревшая версия MongoDB. Потому лучше установить пакет из официального репозитория MongoDB.

С помощью команды apt-key add добавьте ключ MongoDB. Но сначала нужно установить curl:

sudo apt install curl

Теперь загрузите ключ и передайте его команде apt-key add:

curl https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-key add -

Затем нужно создать source list для MongoDB, чтобы менеджер apt знал, откуда загружать пакет. Откройте файл в редакторе:

sudo nano /etc/apt/sources.list.d/mongodb-org-4.0.list

На экране появится пустой файл. Вставьте в него:

deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main

Сохраните и закройте файл.

Обновите индекс пакетов:

sudo apt update

Теперь установите пакет mongodb-org:

sudo apt-get install mongodb-org

Затем включите и запустите сервис mongod, чтобы БД начала работу:

sudo systemctl enable mongod
sudo systemctl start mongod

Вы установили и запустили последнюю стабильную версию MongoDB и полезные инструменты для работы сервера MongoDB.

2: Проверка сервиса и БД

Только что вы запустили сервис MongoDB. Теперь нужно убедиться, что БД запустилась и работает.

Проверьте состояние сервиса:

sudo systemctl status mongod

Команда должна вернуть такой вывод:

mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-09-05 16:59:56 UTC; 3s ago
Docs: https://docs.mongodb.org/manual
Main PID: 4321 (mongod)
Tasks: 26
CGroup: /system.slice/mongod.service
└─4321 /usr/bin/mongod --config /etc/mongod.conf

Согласно выводу systemd, сервер MongoDB работает.

Теперь попробуйте подключиться к серверу БД и выполнить команду диагностики.

mongo --eval 'db.runCommand({ connectionStatus: 1 })'

Команда должна вывести текущую версию, адрес и порт сервера, а также вывод команды состояния:

MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}

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

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

3: Управление сервисом MongoDB

БД MongoDB устанавливает сервис systemd, а это значит, что вы можете управлять базой с помощью стандартных команд systemd вместе с другими системными сервисами Ubuntu.

Чтобы проверить состояние сервиса, введите:

sudo systemctl status mongod

Эта команда останавливает сервер:

sudo systemctl stop mongodb

Чтобы запустить сервер, введите:

sudo systemctl start mongodb

Перезапустить сервер можно с помощью этой команды:

sudo systemctl restart mongodb

Сейчас сервис MongoDB запускается автоматически. Если вы хотите удалить его из автозагрузки, введите:

sudo systemctl disable mongodb

Снова добавить сервис в автозагрузку можно с помощью такой команды:
sudo systemctl enable mongodb

4: Настройка брандмауэра (опционально)

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

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

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

Как правило, доступ к MongoDB должен совершаться только из определенных доверенных локаций, например, с другого сервера или приложения. Для этого нужно открыть доступ к стандартному порту БД, указав IP-адреса доверенных машин.

sudo ufw allow from your_other_server_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 только одному конкретному IP-адресу, вместо Anywhere в выводе будет указан этот адрес.

Читайте также: Основы UFW: общие правила и команды фаервола

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

Откройте конфигурационный файл MongoDB:

sudo nano /etc/mongodb.conf

Добавьте  IP-адрес сервера в строку bindIP

. . .
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,your_server_ip
. . .

Между текущим значением и вашим IP-адресом нужно поставить запятую.

Сохраните и закройте файл. Перезапустите MongoDB:

sudo systemctl restart mongodb

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

Чтобы добавить администратора и повысить безопасность установки, читайте мануал Установка и защита MongoDB в Ubuntu 16.04.

Читайте также: Документация MongoDB

Tags: , , ,