Скидка 50% на все тарифы, ограниченное время. От $2.48/mo
12 мин
Базы данных и аналитика

Как установить MongoDB на три последние версии Ubuntu (пошаговое руководство)

Джим Шварц By Джим Шварц 12 мин чтения
Оригинальный символ MongoDB на фоне футуристического сервера для установки MongoDB на Ubuntu+ слоган о том, что читателя ждёт в статье + заголовок статьи + логотип Cloudzy

Итак, вы решили использовать MongoDB — отличный выбор alternative to MariaDB для создания приложения на MERN-стеке, аналитической платформы или любой документно-ориентированной системы, но столкнулись с трудностями при работе с командной строкой Linux и бесконечными ошибками в терминале. 

Не беспокойтесь: это руководство охватывает всё, что нужно знать от А до Я для установки MongoDB на Ubuntu.

MongoDB использует X.Y.Z версионирование. 8.0 является мажорной серией релизов, а 8.2 является минорным релизом в рамках цикла 8.0. Минорные релизы добавляют функции внутри одного мажорного цикла и, начиная с версии 8.0, также доступны для установки на собственных серверах в отдельных сценариях (например, Search и Vector Search). MongoDB 8.0 на Ubuntu поддерживает 24.04 (Noble), 22.04 (Jammy) и 20.04 (Focal) на 64-битных системах, с поддержкой ARM64 на отдельных платформах.

Необходимые компоненты: GnuPG и Curl

Перед установкой официального пакета mongodb-org Ubuntu требует два предварительно установленных компонента: GnuPG и Curl. Эти инструменты дают Ubuntu разрешение на загрузку MongoDB, поскольку собственный пакет mongodb из репозитория Ubuntu не поддерживается MongoDB Inc. и конфликтует с официальным пакетом mongodb-org . Если вы уже установили его, mongodb обязательно удалите его.

Следующий шаг - выполните команду sudo apt-get install gnupg curl. Curl - инструмент для загрузки файлов из интернета, он нужен для получения ключа безопасности MongoDB. GnuPG используется в Ubuntu для проверки подлинности программного обеспечения. Если GnuPG не установлен, Ubuntu не сможет проверить пакеты MongoDB.

Убедитесь, что GnuPG и Curl успешно установлены в терминале. При успешной установке вывод должен выглядеть так:Вывод терминала Ubuntu после установки GnuPG и Curl

Импорт GPG-ключа MongoDB

Менеджер пакетов Ubuntu — APT — использует GPG-ключи для проверки пакетов перед установкой. Без этого GPG-ключа Ubuntu не позволит добавить репозитории MongoDB. Выполните следующую команду в терминале, чтобы добавить ключ:

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
   --dearmor

Если всё прошло успешно, вывод терминала будет выглядеть так:Терминал Ubuntu после успешного добавления GPG-ключа MongoDB.

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

  1. curl -fsSL URL скачивает официальный ключ MongoDB
  2. –dearmor преобразует ключ из текстового формата в двоичный, чтобы Ubuntu мог его обработать
  3. -o /usr/share/keyrings/mongodb-server-8.0.gpg сохраняет бинарный файл в папку, где Ubuntu хранит доверенные ключи

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

NO_PUBKEY
The following signatures couldn't be verified
public key not available

Возникает, если вы не выполнили точные команды GPG-ключа выше и вместо этого использовали sudo apt-key потому что современный Ubuntu этого не рекомендует.

Добавить репозиторий MongoDB

Добавление репозитория MongoDB создаёт файл, который сообщает Ubuntu, где именно в сети находятся пакеты MongoDB. Создайте файл списка по пути /etc/apt/sources.list.d/mongodb-org-8.0.list добавив строку репозитория с помощью echo … | sudo tee …

Вот тут начинается самое интересное: разные версии Ubuntu требуют разных вариантов этой команды. Рассмотрим, как импортировать файл списка в каждой из трёх упомянутых версий Ubuntu.

Ubuntu 24.04 (Noble)

Чтобы создать файл списка на Ubuntu 24.04, просто добавьте echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list в вашем терминале.

Выглядит запутанно, но не переживайте. Разберём команду по частям — всё станет понятно.

  1. echo выводит текст
  2. /etc/apt/sources.list.d — это папка, в которой Ubuntu хранит определения источников программного обеспечения. Каждый файл с расширением .list в этой папке указывает Ubuntu на конкретный адрес для загрузки пакетов
  3. По умолчанию обычный пользователь не может записывать ничего в системные папки. футболка даёт пользователю право записи в системные файлы. При этом используется sudo
  4. благородный — кодовое название Ubuntu 24.04. У каждой версии Ubuntu есть кодовое имя:
Версия Кодовое название
20.04 Фокальный
22.04 Jammy
24.04 Благородный

Если версия Ubuntu не совпадает с нужной командной строкой, Ubuntu не распознает репозиторий MongoDB.

Ubuntu 22.04 (Jammy)

Добавление файла списка для Ubuntu Jammy выглядит так же, но в команде нужно заменить благородный с jammy, вот так:

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Убедитесь, что версия совпадает с вашей Ubuntu, иначе снова получите ошибку.

Ubuntu 20.04 (Focal)

Выполните те же шаги, но вместо благородный or jammy, укажите focal:

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Теперь, когда репозиторий настроен, можно переходить к установке mongodb-org.

Обновите базу данных пакетов

Теперь, когда репозиторий распознан системой Ubuntu, нужно обновить базу данных пакетов внутри неё, чтобы она включала и MongoDB. Выполните команду ниже:

sudo apt-get update

Эта команда одинакова для всех версий Ubuntu. Если её пропустить, Ubuntu не будет знать о MongoDB. При успешном выполнении вывод терминала должен выглядеть так:Вывод терминала Ubuntu после выполнения sudo apt-get update

 После обновления базы данных пакетов можно приступать к загрузке пакетов MongoDB.

Установка MongoDB Community Server

Существует несколько версий MongoDB, однако большинство пользователей выбирают последнюю стабильную — она предпочтительнее. Чтобы установить её, выполните sudo apt-get install -y mongodb-org

Ubuntu загрузил пакеты MongoDB, установил их, создал учётную запись пользователя и каталог данных, а также зарегистрировал MongoDB как системный сервис. Мы разобрались, как установить MongoDB на Ubuntu. Теперь запустим его.

Как запустить MongoDB

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

sudo systemctl start mongod

Если команда выполнена успешно, Ubuntu запустит MongoDB как фоновый процесс. Если нет — вы можете получить ошибку вида Не удалось запустить mongod.service.

Это может происходить по нескольким распространённым причинам:

  • Ошибка в файле конфигурации in /etc/mongod.conf (ошибки отступов в YAML встречаются часто)
  • Конфликт портов (порт 27017 уже занят)
  • Проблема с правами доступа к каталогам данных или логов (var/lib/mongodb или var/log/mongodb)
  • Диск заполнен or повреждённое состояние файловой системы

Три команды для диагностики проблемыФутуристичный серверный стенд, три команды в терминале Ubuntu и облако с путями обновления.

Легко предположить, что именно мешает запуску MongoDB, но куда сложнее найти точную причину. Три способа определить источник ошибки:

  1. Проверить статус сервиса: sudo systemctl status mongod –no-pager
  2. Проверить подробные логи (самое важное): sudo journalctl -u mongod –no-pager -n 100
  3. Проверить собственный лог-файл MongoDB

Важно учитывать: если диск заполнен или системные файлы повреждены, решение проблемы будет на уровне железа, а не программного обеспечения. Чтобы MongoDB работал стабильно, может потребоваться обновить оборудование сервера — особенно если текущая конфигурация устарела. 

Если покупка собственного сервера не вписывается в бюджет, обратите внимание на Ubuntu VPS — чистая среда на выделенном сервере с дистрибутивом Ubuntu на ваш выбор. В комплекте идёт 24/7 поддержка и скорость сети до 40Gbps благодаря хранилище NVMe SSD и DDR5 RAM хранилище.

Кроме того, минимальная задержка, 99.95% аптайм и 14-дневной гарантия возврата средств. И это ещё не всё: сервис доступен в 12 точках по всему миру по доступной цене.

Три основных способа запустить MongoDB

Универсального решения, которое сразу определит причину проблемы и исправит её в один шаг, не существует. Ниже — распространённые способы, которые помогут запустить MongoDB.

  1. Ошибка отступов в конфиге YAML. Если вы редактировали /etc/mongod.conf проверьте отступы командой sudo nano /etc/mongod.conf. Файл YAML очень чувствителен к пробелам: убедитесь, что на каждом уровне используется ровно два пробела в /etc/mongod.conf.
  2. Порт 27017 занят. Если порт 27017 занят другим процессом, остановите его или смените порт MongoDB в mongod.conf. Если не знаете, что именно занимает порт 27017, запустите команду sudo ss -lntp | grep 27017 и посмотрите результат
  3. Проблема с правами доступа к директории данных. Иногда MongoDB не имеет нужных прав в системе и просто не запускается. Сначала выполните sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb, затем перезапустите MongoDB командой sudo systemctl restart mongod

Согласно Официальный сайт MongoDB, есть и другой способ решить эту проблему: перезагрузите демон командой sudo systemctl daemon-reload, затем выполните первую команду, sudo systemctl start mongod, снова.

Если файл mongod.serviceотсутствует, установщик не создал systemd unit — переустановите пакет mongodb-org .

После всего этого проверьте, запустился ли MongoDB успешно, с помощью команды sudo systemctl status mongod. Если в терминале отображается активный (работает), всё готово к работе. Впрочем, есть ещё несколько настроек, которые сделают работу значительно удобнее.

Автозапуск MongoDBФутуристичный интерфейс сервера с символом автоматизации MongoDB, терминал с командой MongoDB и лог-файл

MongoDB не запускается автоматически при каждом старте сервера — часть шагов придётся повторять вручную. Можно настроить Ubuntu так, чтобы MongoDB запускался автоматически после загрузки рабочего стола.

Просто выполните sudo systemctl enable mongod в терминале — после этого система будет запускать MongoDB при каждой перезагрузке. Кроме того, процесс mongod можно перезапустить командой sudo systemctl restart mongod. Также рекомендуется отслеживать ошибки и важные сообщения, просматривая лог-файл:

/var/log/mongodb/mongod.log

Теперь всё настроено. Можно начинать работу с mongod.

Открытие оболочки MongoDB

Чтобы работать с базой данных, откройте оболочку MongoDB командой mongosh. Считайте это специализированным терминалом для MongoDB или консолью MySQL. Также можно взаимодействовать с MongoDB через GUI-инструменты, например драйверы MongoDB. Но если вы предпочитаете работать из терминала, mongosh именно для этого и предназначен.

Теперь MongoDB полностью готов к работе, однако есть ряд дополнительных шагов для обеспечения безопасности.

Включение аутентификации в MongoDBПроцесс аутентификации MongoDB + символ замка + подтверждение аутентификации.

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

Создание пользователя-администратора

Сначала переключитесь на базу данных admin:

use admin

Затем создайте пользователя с помощью db.createUser({…}). Укажите

  • Имя пользователя
  • Пароль
  • Роль

Для поля role предпочтительно указать root что означает полный контроль или права администратора.

Включение аутентификации

Теперь, когда мы создали собственного пользователя, нужно отредактировать /etc/mongod.conf файл. Именно он управляет поведением MongoDB. Учтите: после каждого изменения этого файла необходимо перезапускать mongod сервис командой sudo systemctl restart mongod. Нам нужно изменить один параметр — authorization, который выглядит так:

security:

  authorization:

Чтобы завершить настройку аутентификации, измените значение authorization следующим образом:

security:

  authorization: enabled

Теперь MongoDB требует авторизации при входе — аутентификация настроена. Перейдём к следующей конфигурации, которая позволяет использовать MongoDB в полной мере.

Настройка брандмауэра

Как уже упоминалось, MongoDB работает на порту 27017. По умолчанию брандмауэр блокирует все порты, поэтому нужно явно разрешить трафик на порту 27017. Для этого выполните команду:

ufw allow from YOUR_IP to any port 27017

Можно также выполнить команду ufw allow 27017, но будьте осторожны: эта команда открывает порт для всего интернета. Первый вариант надёжнее, так как разрешает доступ к порту только с вашего IP-адреса.

Пользователи могут столкнуться и с другими трудностями при работе с MongoDB, например с проблемой удалённого доступа. Читайте дальше — разберём, как её решить.

Проблема удалённого доступаНастройка сервера с 3 мониторами: конфигурация удалённого доступа MongoDB и команды в терминале.

MongoDB запускается с параметром bindIp. bindIp который ограничивает MongoDB адресом 127.0.0.1, разрешая только локальные подключения. Это значит, что подключиться к серверу MongoDB извне не получится: по умолчанию он принимает соединения только с локальной машины, если не настроить иначе.

Снова откройте /etc/mongod.conf, и вы увидите три строки следующего вида:

net:

  port: 27017

  bindIp: 127.0.0.1

Если вы хотите разрешить удалённые подключения к вашему mongod пользователь, измените приведённые выше значения следующим образом:

net:

  port: 27017

  bindIp: 0.0.0.0

После этого перезапустите mongod сервис с помощью sudo systemctl restart mongod как и после любого другого изменения этого файла.

Теперь вы разрешили mongod сервису принимать удалённые подключения. Будьте осторожны: сделав это, вы откроете базу данных для всего интернета, если ещё не настроили аутентификацию для mongod пользователя. Существует множество ботов, которые постоянно сканируют открытые порты MongoDB, поэтому всегда убеждайтесь, что у пользователя mongod установлен пароль.

Общая картина

Готово. Вы выполнили все шаги для настройки оптимального сервиса MongoDB на своей системе Ubuntu. Ниже также приведена схема, охватывающая каждый шаг из этой статьи.

Команда Что делает
обновление apt Обновить список пакетов
apt установить Установить пакет
curl Скачать файл
gpg Управление ключами шифрования
echo Вывести текст
футболка Записать в защищённый файл
systemctl start Запустить сервис
systemctl enable Включить автозапуск
systemctl статус Проверить статус сервиса
mongosh Войти в оболочку MongoDB
Изменить /etc/mongod.conf Включить аутентификацию
ufw Управление брандмауэром
bindIp Разрешить удалённый доступ

Это поможет лучше разобраться в процессе. Но если настраивать MongoDB самостоятельно кажется слишком сложным, просто запустите MongoDB VPS для собственного приватного сервера Ubuntu 24.04 LTS с предустановленным MongoDB.

Предоставляется 99.95% uptime, 24/7 поддержкой и 14-дневной гарантия возврата денег. Кроме того, поддерживается до 40 Gbps пропускной способности благодаря DDR5 RAM и хранилище NVMe SSD хранилищу. И не нужно беспокоиться о своём местоположении - сервис доступен в 12 локациях по всему миру по доступной цене.

Итак, вам удалось настроить полноценный MongoDB-сервис со всеми необходимыми конфигурациями для работы под производственной нагрузкой и в реальных бизнес-условиях.

Поделиться

Другие статьи блога

Читать дальше.

Грамотное управление данными для бизнеса: облачное хранение и резервное копирование на базе VPS
Базы данных и аналитика

Грамотное управление данными для бизнеса: облачное хранение и резервное копирование на базе VPS

VPS для защиты бизнес-данных — это подход, который я рекомендую каждый раз, когда компания решает перестать хранить файлы на разных ноутбуках, пересылать их по почте и полагаться на давно забытые

Рекса СайрусРекса Сайрус 7 мин чтения
Материализованное представление против обычного представления
Базы данных и аналитика

Материализованное представление и обычное представление: в чём разница и где их применять

В системах управления базами данных материализованное представление — это объект, хранящий предвычисленные результаты запроса в виде физической таблицы. Поскольку данные реально записываются на диск, сложные

Айви ДжонсонАйви Джонсон 7 мин чтения
SnowFlake против DataBricks
Базы данных и аналитика

Databricks против Snowflake: честное сравнение для специалистов по данным 🧱❄️

Компании, принимающие решения на основе данных — будь то e-commerce платформы, отслеживающие поведение покупателей, финансовые организации, строящие прогнозы, или технологические компании

Аллан Ван КиркАллан Ван Кирк 13 мин. чтения

Готовы к деплою? От $2.48/мес.

Независимый облачный провайдер с 2008 года. AMD EPYC, NVMe, 40 Gbps. Возврат средств в течение 14 дней.