Как установить и настроить 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 access | Root или sudo-level SSH access |
| Operating system | 64-bit Debian 12 (Bookworm) или Ubuntu 22.04/24.04 LTS |
| RAM | Минимум 1 GB; 2 GB+ рекомендуется для production |
| Storage | SSD-backed storage настоятельно рекомендуется |
| Firewall | UFW или 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 curl2. Установка 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-orgAPT теперь будет загружать последний выпуск 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.listUbuntu 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-org4. Запуск и включение сервиса 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()Выйдите из оболочки:
exit6. Защитите свой экземпляр 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 adminC) Настройте брандмауэр
Если вам нужно разрешить удаленные подключения (например, с сервера приложений на другой машине), ограничьте порт 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 verboseD) Используйте 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.conf → net.bindIp | Критично |
| Включение аутентификации | /etc/mongod.conf → security.authorization | Критично |
| Ограничение портов брандмауэра | UFW / iptables | Высокий |
| SSH туннель для удаленного доступа | Конфигурация SSH на клиенте | Высокий |
| Использование пользователей БД с минимальными привилегиями | mongosh → db.createUser() | Высокий |
| Обновление MongoDB | apt-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 found | systemd не загрузил файл unit | Выполните sudo systemctl daemon-reload | |
Address already in use | Порт 27017 занят другим процессом | Выполните `sudo ss -lntp | grep 27017` для определения конфликта |
Authentication failed | Неправильные учётные данные или неправильный authSource | Проверьте имя пользователя, пароль и authenticationDatabase | |
Connection refused | MongoDB не работает или привязана к неправильному 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.*
на всех хостинговых услугах