Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux Адміністрація Віртуальні сервери

Як встановити та налаштувати 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. Передумови

Перед початком переконайтеся, що виконані такі умови:

ВимогаДеталі
Доступ до VPSRoot або SSH-доступ на рівні 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 пропонують SSD-підтримані 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 Shell

Підключіться до 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 Instance

Це найбільш критичний розділ посібника. Неправильно налаштовані MongoDB instances, відкриті для публічного інтернету, були причиною численних високопрофільних витоків даних. Власний контрольний список безпеки MongoDB є явним: посиліть вашу instance перед тим, як відкривати її для будь-якої мережі.

A) Прив’яжіть MongoDB до Localhost Only (Рекомендована за замовчуванням)

За замовчуванням 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 Tunneling для безпечного віддаленого доступу (найкраща практика)

Найбезпечніший спосіб отримати віддалений доступ до MongoDB — це SSH tunnel. Це уникає відкриття порту 27017 взагалі і шифрує весь трафік під час передачі.

З вашої локальної машини:

ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IP

Потім підключіться з вашої локальної MongoDB shell, як якби вона була локальною:

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

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

Резюме посилення безпеки

Заходи безпекиМісце розташування конфігураціїПріоритет
Прив’язка до localhost only/etc/mongod.confnet.bindIpКритично
Увімкнення аутентифікації/etc/mongod.confsecurity.authorizationКритично
Обмеження порту брандмауеромUFW / iptablesВисокий
SSH tunnel для віддаленого доступуКонфігурація 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 ранку:

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 не завантажив файл модуляЗапустіть 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 — це перевірений, економічно ефективний підхід для виробничих навантажень, які вимагають гнучкості, продуктивності та повного контролю над інфраструктурою. Дотримуючись цього посібника, ви встановили 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.

Потрібен повний стек хостингу? Поєднайте ваш VPS бази даних з Shared Web Hosting для вашого фронтенду або статичних активів та захистіть трафік вашого додатку за допомогою SSL Certificate для захисту даних під час передачі між вашими користувачами та вашими серверами.

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