Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Рубрики
Linux VPS Администрация

Как установить и настроить MongoDB на VPS (Полное руководство 2024)

MongoDB — один из наиболее широко используемых NoSQL баз данных в мире, и не без причины. Его гибкая модель документов, высокопроизводительное чтение/запись и встроенная горизонтальная масштабируемость делают его предпочтительным бэкендом для современных API, SaaS платформ, CRM, e-commerce движков и приложений, интенсивно работающих с данными. В отличие от управляемых облачных сервисов баз данных, запуск MongoDB на собственном VPS Hosting дает вам полный контроль над настройкой производительности, усилением безопасности и долгосрочными затратами.

Это руководство проведет вас через установку MongoDB Community Edition 8.0 производственного уровня на Linux VPS — охватывая настройку официального репозитория для Debian 12 и Ubuntu LTS, управление сервисом, создание пользователей и баз данных, усиление безопасности (аутентификация, привязка сети, правила брандмауэра), стратегии резервного копирования и распространенные шаги по устранению неполадок. Независимо от того, запускаете ли вы свое первое приложение или переносите существующую рабочую нагрузку, это руководство обеспечит надежный запуск MongoDB с первого дня.

1. Prerequisites

Before you begin, make sure the following conditions are met:

ТребованиеДетали
VPS accessRoot или sudo-level SSH access
Operating system64-bit Debian 12 (Bookworm) или Ubuntu 22.04/24.04 LTS
RAMМинимум 1 GB; 2 GB+ рекомендуется для production
StorageSSD-backed storage настоятельно рекомендуется
FirewallUFW или iptables доступны

> Важно: MongoDB 8.0 официально поддерживает Debian 12 и Ubuntu LTS релизы. Всегда устанавливайте из официальных репозиториев MongoDB — никогда не используйте mongodb пакет, поставляемый с вашим дистрибутивом Linux, так как он устарел, не поддерживается и может конфликтовать с официальным mongodb-org пакетом.

Если у вас еще нет сервера, VPS Hosting планы AlexHost предлагают SSD-backed Linux VPS экземпляры на высокопроизводительной инфраструктуре — идеальны для запуска production рабочих нагрузок баз данных.

Сначала обновите вашу систему

Всегда начинайте с полностью обновленной системы:

sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y gnupg curl

2. Установка MongoDB на Debian 12 (Bookworm)

MongoDB недоступна в стандартных репозиториях Debian, поэтому вы должны вручную добавить официальный репозиторий MongoDB APT.

Шаг 1 — Импорт ключа подписи MongoDB GPG

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

Это загружает и сохраняет ключ GPG, используемый для проверки целостности пакетов. Без этого шага APT откажется устанавливать пакеты из репозитория MongoDB.

Шаг 2 — Добавление официального репозитория MongoDB

echo "deb [signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg] 
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | 
  sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list > /dev/null

Шаг 3 — Установка MongoDB Community Edition

sudo apt-get update
sudo apt-get install -y mongodb-org

APT теперь будет загружать последний выпуск MongoDB 8.0 непосредственно из официального CDN MongoDB.

3. Установка MongoDB на Ubuntu LTS (24.04 / 22.04)

Процесс практически идентичен Debian, но URL репозитория отличается в зависимости от кодового имени Ubuntu.

Шаг 1 — Импорт ключа подписи GPG 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

Шаг 2 — Добавление репозитория для вашей версии Ubuntu

Ubuntu 24.04 (Noble Numbat):

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

Ubuntu 22.04 (Jammy Jellyfish):

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

Шаг 3 — Установка MongoDB Community Edition

sudo apt-get update
sudo apt-get install -y mongodb-org

4. Запуск и включение сервиса MongoDB

После установки используйте systemctl для запуска MongoDB и настройки его автоматического запуска при перезагрузке сервера.

sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod --no-pager

Почему daemon-reload?

Официальная документация MongoDB специально рекомендует запустить systemctl daemon-reload перед запуском сервиса. Если вы пропустите этот шаг и увидите ошибку "Unit mongod.service not found", сначала запустите daemon-reload — это заставляет systemd перечитать файлы модулей с диска.

Ожидаемый результат

Здоровый сервис MongoDB будет показывать результат, похожий на:

● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
     Active: active (running) since ...

Если статус показывает failed или inactive, перейдите в раздел Устранение неполадок.

5. Создание баз данных и пользователей

MongoDB не требует аутентификацию по умолчанию после свежей установки. Это означает, что вы должны создать администратора и пользователей приложения перед включением аутентификации — в противном случае вы рискуете заблокировать себя.

Откройте оболочку MongoDB

Подключитесь к MongoDB локально на VPS:

mongosh

Шаг 1 — Создание административного пользователя

Переключитесь на базу данных admin и создайте привилегированный аккаунт администратора:

use admin

db.createUser({
  user: "admin",
  pwd: "STRONG_PASSWORD_HERE",
  roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" }
  ]
})

> Совет по безопасности: Замените STRONG_PASSWORD_HERE на случайно сгенерированный пароль длиной не менее 20 символов. Используйте менеджер паролей или запустите openssl rand -base64 24 на вашем сервере для создания пароля.

Шаг 2 — Создание базы данных приложения и пользователя

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

use myapp

db.createUser({
  user: "myapp_user",
  pwd: "STRONG_PASSWORD_HERE",
  roles: [
    { role: "readWrite", db: "myapp" }
  ]
})

Это следует принципу наименьших привилегий — ваше приложение имеет доступ на чтение/запись только к своей собственной базе данных, а не ко всему экземпляру MongoDB.

Шаг 3 — Проверка создания пользователей

use admin
db.getUsers()

Выйдите из оболочки:

exit

6. Защитите свой экземпляр MongoDB

Это наиболее критичный раздел руководства. Неправильно настроенные экземпляры MongoDB, открытые в общедоступный интернет, были ответственны за многочисленные громкие утечки данных. Собственный контрольный список безопасности MongoDB явно указывает: укрепите свой экземпляр перед открытием его в любую сеть.

A) Привяжите MongoDB только к localhost (рекомендуемое значение по умолчанию)

По умолчанию MongoDB может прослушивать все сетевые интерфейсы. Ограничьте его localhost, если у вас нет конкретной, обоснованной необходимости в удаленном доступе.

Отредактируйте /etc/mongod.conf:

net:
  bindIp: 127.0.0.1

Примените изменение:

sudo systemctl restart mongod

Это гарантирует, что MongoDB доступна только с самого сервера — не из общедоступного интернета.

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

Без включенной аутентификации любой локальный процесс может подключиться к MongoDB без пароля. Отредактируйте /etc/mongod.conf:

security:
  authorization: enabled

Перезагрузите сервис:

sudo systemctl restart mongod

Теперь проверьте, что аутентификация применяется:

mongosh -u admin -p --authenticationDatabase admin

C) Настройте брандмауэр

Если вам нужно разрешить удаленные подключения (например, с сервера приложений на другой машине), ограничьте порт 27017 только определенным доверенным IP-адресом. Никогда не открывайте порт 27017 для 0.0.0.0/0.

Используя UFW:

sudo ufw allow from YOUR.TRUSTED.IP.ADDRESS to any port 27017 proto tcp
sudo ufw enable
sudo ufw status

Проверьте, что правило активно:

sudo ufw status verbose

D) Используйте SSH туннелирование для безопасного удаленного доступа (лучшая практика)

Самый безопасный способ удаленного доступа к MongoDB — это SSH туннель. Это полностью избегает открытия порта 27017 и шифрует весь трафик в пути.

С вашей локальной машины:

ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IP

Затем подключитесь из вашей локальной оболочки MongoDB, как если бы она была локальной:

mongosh "mongodb://myapp_user:PASS@127.0.0.1:27017/myapp?authSource=myapp"

Этот подход настоятельно рекомендуется для разработчиков, получающих доступ к производственным базам данных с ноутбуков или удаленных рабочих станций.

Сводка по укреплению безопасности

Мера безопасностиМесто конфигурацииПриоритет
Привязка только к localhost/etc/mongod.confnet.bindIpКритично
Включение аутентификации/etc/mongod.confsecurity.authorizationКритично
Ограничение портов брандмауэраUFW / iptablesВысокий
SSH туннель для удаленного доступаКонфигурация SSH на клиентеВысокий
Использование пользователей БД с минимальными привилегиямиmongoshdb.createUser()Высокий
Обновление MongoDBapt-get upgrade mongodb-orgСредний

7. Резервное копирование и восстановление

Регулярные резервные копии являются обязательными для любой производственной базы данных. MongoDB включает mongodump и mongorestore как часть пакета MongoDB Database Tools.

Создание сжатого архива резервной копии

mongodump 
  --username admin 
  --password STRONG_PASSWORD_HERE 
  --authenticationDatabase admin 
  --archive=/root/mongo-backup.archive 
  --gzip

Это создает один сжатый файл архива, содержащий логический дамп всех баз данных.

Восстановление из архива резервной копии

mongorestore 
  --username admin 
  --password STRONG_PASSWORD_HERE 
  --authenticationDatabase admin 
  --archive=/root/mongo-backup.archive 
  --gzip

Автоматизация резервного копирования с помощью Cron

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

crontab -e

Добавьте следующую строку для запуска резервной копии каждый день в 2:00 AM:

0 2 * * * mongodump --username admin --password PASS --authenticationDatabase admin --archive=/root/backups/mongo-$(date +%F).archive --gzip

> Совет профессионала: Для внешней избыточности рассмотрите возможность синхронизации архивов резервных копий во внешнее хранилище с помощью rsync или rclone. Никогда не храните единственную резервную копию на том же сервере, что и ваша база данных.

8. Устранение распространённых проблем

Проверка журналов сервиса

Первое место для поиска, когда MongoDB не запускается или ведёт себя неожиданно:

sudo journalctl -u mongod --no-pager -n 200

Это показывает последние 200 строк журнала systemd MongoDB — обычно достаточно для определения основной причины.

Проверка того, что MongoDB прослушивает ожидаемый порт

sudo ss -lntp | grep 27017

Ожидаемый результат, если MongoDB работает и привязана к localhost:

LISTEN  0  128  127.0.0.1:27017  0.0.0.0:*  users:(("mongod",...))

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

Проверка установленной версии MongoDB

mongod --version

Распространённые сообщения об ошибках и их решения

ОшибкаВероятная причинаРешение
Unit mongod.service not foundsystemd не загрузил файл unitВыполните sudo systemctl daemon-reload
Address already in useПорт 27017 занят другим процессомВыполните `sudo ss -lntpgrep 27017` для определения конфликта
Authentication failedНеправильные учётные данные или неправильный authSourceПроверьте имя пользователя, пароль и authenticationDatabase
Connection refusedMongoDB не работает или привязана к неправильному IPПроверьте bindIp в mongod.conf и статус сервиса
mongod.conf permission deniedПроблема с разрешениями файловВыполните sudo chmod 600 /etc/mongod.conf

9. Заключительные мысли

Запуск MongoDB на VPS — это проверенный и экономичный подход для production-нагрузок, требующих гибкости, производительности и полного контроля над инфраструктурой. Следуя этому руководству, вы установили MongoDB 8.0 из официальных репозиториев, настроили аутентификацию и привязку сети, создали пользователей базы данных с минимальными привилегиями, установили правила брандмауэра и организовали регулярное резервное копирование.

Несколько ключевых моментов, которые следует помнить:

  • Всегда включайте аутентификацию — неаутентифицированный экземпляр MongoDB — это критическая уязвимость безопасности.
  • Никогда не открывайте порт 27017 в публичный интернет — используйте SSH-туннелирование или ограничьте доступ определенными доверенными IP-адресами.
  • Держите MongoDB в актуальном состоянии — регулярно запускайте sudo apt-get upgrade mongodb-org для получения патчей безопасности.
  • Тестируйте ваши резервные копии — резервная копия, которую вы никогда не восстанавливали, — это резервная копия, на которую вы не можете положиться.

Для команд, которым нужна надежная и высокопроизводительная основа для развертывания MongoDB, VPS Hosting AlexHost предоставляет хранилище SSD NVMe, полный root-доступ и гибкое масштабирование ресурсов. Если ваша нагрузка превысит возможности одного VPS, Dedicated Servers предлагают выделенные CPU и RAM без влияния соседних пользователей — идеально для высоконагруженных MongoDB replica sets или sharded clusters.

Нужен полный хостинг-стек? Дополните ваш database VPS Shared Web Hosting для вашего front-end или статических ресурсов и защитите трафик приложения с помощью SSL Certificate, чтобы защитить данные при передаче между вашими пользователями и серверами.

*Последнее обновление для MongoDB Community Edition 8.0 на Debian 12 (Bookworm) и Ubuntu 22.04/24.04 LTS.*