Установка MongoDB в Ubuntu 20.04

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

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

Этот мануал поможет вам установить MongoDB, а также научит управлять сервисом.

Требования

Для работы вам понадобится сервер Ubuntu 20.04, настроенный по этому мануалу (включая брандмауэр UFW и пользователя sudo).

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

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

Чтобы получить самую последнюю стабильную версию, вы должны добавить специальный репозиторий пакетов MongoDB в список источников APT. Затем вы сможете установить mongodb-org, мета-пакет, который всегда содержит последнюю версию MongoDB.

Для начала импортируйте открытый ключ GPG для последней стабильной версии MongoDB. Вы можете найти соответствующий файл на сервере ключей MongoDB; на нем нужно найти файл, который содержит номер последней стабильной версии и заканчивается на .asc. Например, если вы хотите установить версию 4.4, вы должны искать файл с именем server-4.4.asc.

Кликните на файл правой кнопкой мыши и выберите Copy link address. Затем вставьте эту ссылку в следующую команду curl, заменив указанный в примере URL:

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

cURL – это инструмент командной строки для передачи данных, доступный во многих операционных системах. Он считывает все данные, хранящиеся по указанному URL, и передает их на вывод системы. В нашем примере cURL выводит содержимое файла GPG и затем передает его команде sudo apt-key add -, тем самым добавляя ключ GPG в список доверенных ключей.

Также обратите внимание, что наша команда curl использует параметры -fsSL, которые подавляют сообщения об ошибках. Это означает, что если по какой-то причине cURL не может связаться с сервером GPG (или сервер GPG не работает), cURL не сможет случайно добавить полученный код ошибки в ваш список доверенных ключей.

Эта команда вернет OK, если ключ был добавлен успешно:

OK

Если вы хотите убедиться, что в список был добавлен правильный ключ, вы можете сделать это с помощью следующей команды:

apt-key list

В выводе должен быть ключ MongoDB:

/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2019-05-28 [SC] [expires: 2024-05-26] 2069 1EEC 3521 6C63 CAF6  6CE1 6564 08E3 90CF B1F5
uid           [ unknown] MongoDB 4.4 Release Signing Key <packaging@mongodb.com>
. . .

На данный момент менеджер apt еще не знает, где найти пакет mongodb-org, необходимый для установки последней версии MongoDB.

На вашем сервере есть два места, где APT ищет онлайн-источники пакетов для загрузки и установки: это файл sources.list и каталог sources.list.d. В файле sources.list перечислены активные источники данных APT (по одному источнику в каждой строке), а наиболее приоритетные источники указаны первыми. Каталог sources.list.d позволяет добавлять такие записи sources.list как отдельные файлы.

Выполните следующую команду, чтобы создать в каталоге sources.list.d файл mongodb-org-4.4.list. В этом файле будет храниться всего одна строка (deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse).

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

Эта строка сообщит APT все, что ему нужно знать, чтобы найти и установить MongoDB.

  • deb: это означает, что исходная запись ссылается на обычную архитектуру Debian. В других случаях в этой части строки может быть deb-src, что означает, что исходная запись представляет собой исходный код дистрибутива Debian.
  • [ arch = amd64, arm64 ] указывает, на какие архитектуры следует загружать данные APT. В данном случае это архитектуры amd64 и arm64.
  • https://repo.mongodb.org/apt/ubuntu: это URI, представляющий место, где можно найти данные APT. В этом случае URI указывает на адрес HTTPS, где расположен официальный репозиторий MongoDB.
  • focal/mongodb-org/4.4: репозитории Ubuntu могут содержать несколько разных релизов. Эта часть команды указывает, что вам нужна только версия 4.4 пакета mongodb-org, доступная для основного релиза Ubuntu (Focal Fossa – кодовое имя Ubuntu 20.04).
  • multiverse: эта часть указывает APT на один из четырех основных репозиториев Ubuntu (в данном случае – на репозиторий multiverse).

После этого обновите индекс пакетов сервера:

sudo apt update

Затем установите пакет MongoDB.

sudo apt install mongodb-org

Чтобы подтвердить установку, нажмите Y и ENTER.

База данных MongoDB установлена на сервер. Теперь вам нужно проверить, работает ли она.

2: Запуск сервиса MongoDB и тестирование базы данных

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

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

sudo systemctl start mongod.service

Затем проверьте состояние сервиса. Обратите внимание, что эта команда не включает расширение .service в определение файла сервиса. Система systemctl автоматически добавит этот суффикс к любому аргументу, который вы передадите, если его еще нет, поэтому его необязательно включать:

sudo systemctl status mongod

Команда должна вернуть такой вывод, если все работает правильно:

mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-09 12:57:06 UTC; 2s ago
Docs: https://docs.mongodb.org/manual
Main PID: 37128 (mongod)
Memory: 64.8M
CGroup: /system.slice/mongod.service
└─37128 /usr/bin/mongod --config /etc/mongod.conf

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

Теперь добавьте сервис в автозагрузку:

sudo systemctl enable mongod

Вы можете дополнительно проверить работоспособность базы данных, подключившись к серверу БД и выполнив команду диагностики. Следующая команда подключится к базе данных и выведет ее текущую версию, адрес сервера и порт. Она также вернет результат внутренней команды MongoDB connectionStatus:

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

connectionStatus проверит и вернет статус подключения к базе данных. Значение 1 в поле ok означает, что сервер работает должным образом:

MongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") }
MongoDB server version: 4.4.0
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ] },
"ok" : 1
}

Обратите внимание, что база данных работает по порту 27017 на 127.0.0.1 (это локальный loopback адрес, который представляет localhost). Это номер порта по умолчанию MongoDB.

Далее мы расскажем, как управлять экземпляром MongoDB с помощью systemd.

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

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

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

sudo systemctl status mongod

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

sudo systemctl stop mongod

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

sudo systemctl start mongod

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

sudo systemctl restart mongod

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

sudo systemctl disable mongod

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

sudo systemctl enable mongod

Читайте также: Основы Systemd: управление сервисами и журналирование

Заключение

В этом руководстве мы добавили официальный репозиторий MongoDB в свою систему и установили последнюю версию MongoDB. Затем мы протестировали работу Mongo и ознакомились с основными командами systemctl для этого сервиса.

В ближайшем будущем мы настоятельно рекомендуем вам обеспечить безопасность установки MongoDB. Для этого следуйте нашему руководству по защите MongoDB в Ubuntu 20.04.

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

Tags: , , ,

Добавить комментарий