Итак, вы решили использовать 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 успешно установлены в терминале. При успешной установке вывод должен выглядеть так:
Импорт 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
Если всё прошло успешно, вывод терминала будет выглядеть так:
Если говорить просто, эта команда скачивает сигнатуру безопасности MongoDB, преобразует её в формат, который понимает Ubuntu, и сохраняет в защищённую системную папку. Разберём команду по частям:
- curl -fsSL URL скачивает официальный ключ MongoDB
- –dearmor преобразует ключ из текстового формата в двоичный, чтобы Ubuntu мог его обработать
- -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 в вашем терминале.
Выглядит запутанно, но не переживайте. Разберём команду по частям — всё станет понятно.
- echo выводит текст
- /etc/apt/sources.list.d — это папка, в которой Ubuntu хранит определения источников программного обеспечения. Каждый файл с расширением .list в этой папке указывает Ubuntu на конкретный адрес для загрузки пакетов
- По умолчанию обычный пользователь не может записывать ничего в системные папки. футболка даёт пользователю право записи в системные файлы. При этом используется sudo
- благородный — кодовое название 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. При успешном выполнении вывод терминала должен выглядеть так:
После обновления базы данных пакетов можно приступать к загрузке пакетов 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 повреждённое состояние файловой системы
Три команды для диагностики проблемы
Легко предположить, что именно мешает запуску MongoDB, но куда сложнее найти точную причину. Три способа определить источник ошибки:
- Проверить статус сервиса: sudo systemctl status mongod –no-pager
- Проверить подробные логи (самое важное): sudo journalctl -u mongod –no-pager -n 100
- Проверить собственный лог-файл MongoDB
Важно учитывать: если диск заполнен или системные файлы повреждены, решение проблемы будет на уровне железа, а не программного обеспечения. Чтобы MongoDB работал стабильно, может потребоваться обновить оборудование сервера — особенно если текущая конфигурация устарела.
Если покупка собственного сервера не вписывается в бюджет, обратите внимание на Ubuntu VPS — чистая среда на выделенном сервере с дистрибутивом Ubuntu на ваш выбор. В комплекте идёт 24/7 поддержка и скорость сети до 40Gbps благодаря хранилище NVMe SSD и DDR5 RAM хранилище.
Кроме того, минимальная задержка, 99.95% аптайм и 14-дневной гарантия возврата средств. И это ещё не всё: сервис доступен в 12 точках по всему миру по доступной цене.
Три основных способа запустить MongoDB
Универсального решения, которое сразу определит причину проблемы и исправит её в один шаг, не существует. Ниже — распространённые способы, которые помогут запустить MongoDB.
- Ошибка отступов в конфиге YAML. Если вы редактировали /etc/mongod.conf проверьте отступы командой sudo nano /etc/mongod.conf. Файл YAML очень чувствителен к пробелам: убедитесь, что на каждом уровне используется ровно два пробела в /etc/mongod.conf.
- Порт 27017 занят. Если порт 27017 занят другим процессом, остановите его или смените порт MongoDB в mongod.conf. Если не знаете, что именно занимает порт 27017, запустите команду sudo ss -lntp | grep 27017 и посмотрите результат
- Проблема с правами доступа к директории данных. Иногда 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 не запускается автоматически при каждом старте сервера — часть шагов придётся повторять вручную. Можно настроить 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 не требует пароля, поскольку предполагается, что доступ к созданию пользователей у вас уже есть. Вот простой способ это настроить
Создание пользователя-администратора
Сначала переключитесь на базу данных 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, например с проблемой удалённого доступа. Читайте дальше — разберём, как её решить.
Проблема удалённого доступа
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-сервис со всеми необходимыми конфигурациями для работы под производственной нагрузкой и в реальных бизнес-условиях.