Как установить и настроить 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 с первого дня.
Оглавление
- Предварительные требования
- Установка MongoDB на Debian 12 (Bookworm)
- Установка MongoDB на Ubuntu LTS (24.04 / 22.04)
- Запуск и включение сервиса MongoDB
- Создание баз данных и пользователей
- Защита вашего экземпляра MongoDB
- Резервное копирование и восстановление
- Устранение распространенных проблем
- Заключительные мысли
1. Предварительные требования {#prerequisites}
Перед началом убедитесь, что выполнены следующие условия:
| Требование | Детали |
|---|---|
| Доступ к VPS | Доступ по SSH с правами root или sudo |
| Операционная система | 64-битная Debian 12 (Bookworm) или Ubuntu 22.04/24.04 LTS |
| RAM | Минимум 1 GB; 2 GB+ рекомендуется для production |
| Хранилище | Хранилище на основе SSD настоятельно рекомендуется |
| Брандмауэр | UFW или iptables доступны |
> Важно: MongoDB 8.0 официально поддерживает Debian 12 и Ubuntu LTS релизы. Всегда устанавливайте из официальных репозиториев MongoDB — никогда не используйте пакет mongodb, поставляемый с вашим дистрибутивом Linux, так как он устарел, не поддерживается и может конфликтовать с официальным пакетом mongodb-org.
Если у вас еще нет сервера, планы VPS Hosting AlexHost предлагают экземпляры Linux VPS с поддержкой SSD на высокопроизводительной инфраструктуре — идеально подходят для запуска production рабочих нагрузок баз данных.
Сначала обновите вашу систему
Всегда начинайте с полностью обновленной системы:
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y gnupg curl2. Установка MongoDB на Debian 12 (Bookworm) {#install-debian}
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) {#install-ubuntu}
Процесс почти идентичен Debian, но URL репозитория отличается в зависимости от кодового имени Ubuntu.
Шаг 1 — Импортируйте ключ подписи MongoDB GPG
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 {#start-service}
После установки используйте 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 перечитать файлы unit с диска.
Ожидаемый результат
Здоровый сервис MongoDB будет показывать результат, похожий на:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
Active: active (running) since ...Если статус показывает failed или inactive, перейдите в раздел Устранение неполадок.
5. Создание баз данных и пользователей {#create-databases-users}
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 {#secure-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"Этот подход настоятельно рекомендуется для разработчиков, получающих доступ к production базам данных с ноутбуков или удаленных рабочих станций.
Резюме усиления безопасности
| Мера безопасности | Место конфигурации | Приоритет |
|---|---|---|
| Привязка только к 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. Резервное копирование и восстановление {#backup-restore}
Регулярные резервные копии являются обязательными для любой production базы данных. 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. Устранение распространенных проблем {#troubleshooting}
Проверьте журналы сервиса
Первое место для поиска, когда MongoDB не запускается или ведет себя не
