Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Administracja Linux Serwery Wirtualne

Jak zainstalować i skonfigurować MongoDB na VPS (Kompletny przewodnik 2024)

MongoDB jest jedną z najszerzej przyjętych baz danych NoSQL na świecie — i z dobrego powodu. Jego elastyczny model dokumentów, wysoka wydajność odczytu/zapisu i natywna skalowalność horyzontalna sprawiają, że jest to preferowany backend dla nowoczesnych API, platform SaaS, systemów CRM, silników e-commerce i aplikacji intensywnie korzystających z danych. W przeciwieństwie do zarządzanych usług baz danych w chmurze, uruchamianie MongoDB na własnym VPS Hosting daje Ci pełną kontrolę nad dostrajaniem wydajności, wzmacnianiem bezpieczeństwa i długoterminowymi kosztami.

Ten przewodnik przeprowadzi Cię przez instalację MongoDB Community Edition 8.0 na poziomie produkcyjnym na Linux VPS — obejmując konfigurację oficjalnego repozytorium dla Debian 12 i Ubuntu LTS, zarządzanie usługą, tworzenie użytkowników i baz danych, wzmacnianie bezpieczeństwa (uwierzytelnianie, wiązanie sieci, reguły zapory), strategie kopii zapasowych i typowe kroki rozwiązywania problemów. Niezależnie od tego, czy uruchamiasz swoją pierwszą aplikację, czy migrujesz istniejące obciążenie, ten przewodnik zapewnia niezawodne uruchomienie MongoDB od pierwszego dnia.

1. Wymagania wstępne

Przed rozpoczęciem upewnij się, że spełnione są następujące warunki:

WymaganieSzczegóły
Dostęp do VPSDostęp SSH na poziomie root lub sudo
System operacyjny64-bitowy Debian 12 (Bookworm) lub Ubuntu 22.04/24.04 LTS
RAMMinimum 1 GB; 2 GB+ zalecane dla produkcji
MagazynMagazyn wspierany przez SSD zdecydowanie zalecany
FirewallUFW lub iptables dostępne

> Ważne: MongoDB 8.0 oficjalnie obsługuje wydania Debian 12 i Ubuntu LTS. Zawsze instaluj z oficjalnych repozytoriów MongoDB — nigdy nie używaj pakietu mongodb dołączonego do dystrybucji Linux, ponieważ jest przestarzały, nieobsługiwany i może powodować konflikty z oficjalnym pakietem mongodb-org.

Jeśli nie masz jeszcze serwera, plany VPS Hosting AlexHost oferują instancje Linux VPS wspierane przez SSD na infrastrukturze o wysokiej wydajności — idealne do uruchamiania obciążeń baz danych w produkcji.

Najpierw zaktualizuj swój system

Zawsze zacznij od w pełni zaktualizowanego systemu:

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

2. Zainstaluj MongoDB na Debian 12 (Bookworm)

MongoDB nie jest dostępny w domyślnych repozytoriach Debian, dlatego musisz ręcznie dodać oficjalne repozytorium APT MongoDB.

Krok 1 — Importuj klucz podpisywania GPG MongoDB

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

To pobiera i przechowuje klucz GPG używany do weryfikacji integralności pakietu. Bez tego kroku APT odmówi instalacji pakietów z repozytorium MongoDB.

Krok 2 — Dodaj oficjalne repozytorium 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

Krok 3 — Zainstaluj MongoDB Community Edition

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

APT będzie teraz pobierać najnowszą wersję MongoDB 8.0 bezpośrednio z oficjalnego CDN MongoDB.

3. Instalacja MongoDB na Ubuntu LTS (24.04 / 22.04)

Proces jest prawie identyczny jak w przypadku Debiana, ale adres URL repozytorium różni się w zależności od nazwy kodowej Ubuntu.

Krok 1 — Importowanie klucza 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

Krok 2 — Dodanie repozytorium dla Twojej wersji 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

Krok 3 — Instalacja MongoDB Community Edition

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

4. Uruchomienie i włączenie usługi MongoDB

Po zainstalowaniu użyj systemctl aby uruchomić MongoDB i skonfigurować go do automatycznego uruchamiania przy ponownym uruchomieniu serwera.

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

Dlaczego daemon-reload?

Oficjalna dokumentacja MongoDB wyraźnie zaleca uruchomienie systemctl daemon-reload przed uruchomieniem usługi. Jeśli pominiesz ten krok i zobaczysz błąd "Unit mongod.service not found", najpierw uruchom daemon-reload — zmusza to systemd do ponownego odczytania plików jednostek z dysku.

Oczekiwane wyjście

Zdrowa usługa MongoDB będzie wyświetlać wyjście podobne do:

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

Jeśli status pokazuje failed lub inactive, przejdź do sekcji Rozwiązywanie problemów.

5. Tworzenie baz danych i użytkowników

MongoDB nie wymusza uwierzytelniania domyślnie po świeżej instalacji. Oznacza to, że powinieneś utworzyć swoich użytkowników administratora i aplikacji przed włączeniem uwierzytelniania — w przeciwnym razie ryzykujesz zablokowanie sobie dostępu.

Otwórz powłokę MongoDB

Połącz się z MongoDB lokalnie na VPS:

mongosh

Krok 1 — Utwórz użytkownika administracyjnego

Przełącz się na bazę danych admin i utwórz uprzywilejowane konto administratora:

use admin

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

> Wskazówka bezpieczeństwa: Zastąp STRONG_PASSWORD_HERE losowo wygenerowanym hasłem o długości co najmniej 20 znaków. Użyj menedżera haseł lub uruchom openssl rand -base64 24 na swoim serwerze, aby je wygenerować.

Krok 2 — Utwórz bazę danych aplikacji i użytkownika

Utwórz dedykowaną bazę danych i użytkownika z minimalnymi uprawnieniami ograniczonymi tylko do tej bazy danych:

use myapp

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

To jest zgodne z zasadą najmniejszych uprawnień — Twoja aplikacja ma dostęp do odczytu/zapisu tylko do własnej bazy danych, a nie całej instancji MongoDB.

Krok 3 — Zweryfikuj, czy użytkownicy zostali utworzeni

use admin
db.getUsers()

Zamknij powłokę:

exit

6. Zabezpiecz swoją instancję MongoDB

To jest najkrytyczniejsza sekcja przewodnika. Błędnie skonfigurowane instancje MongoDB udostępnione w publicznym internecie były odpowiedzialne za liczne głośne naruszenia bezpieczeństwa danych. Własna lista kontrolna bezpieczeństwa MongoDB jest wyraźna: wzmocnij swoją instancję przed udostępnieniem jej w jakiejkolwiek sieci.

A) Powiąż MongoDB tylko z localhost (Zalecana konfiguracja domyślna)

Domyślnie MongoDB może nasłuchiwać na wszystkich interfejsach sieciowych. Ogranicz to do localhost, chyba że masz konkretną, uzasadnioną potrzebę zdalnego dostępu.

Edytuj /etc/mongod.conf:

net:
  bindIp: 127.0.0.1

Zastosuj zmianę:

sudo systemctl restart mongod

Gwarantuje to, że MongoDB jest dostępne tylko z samego serwera — nie z publicznego internetu.

B) Włącz uwierzytelnianie

Bez włączonego uwierzytelniania każdy proces lokalny może się połączyć z MongoDB bez hasła. Edytuj /etc/mongod.conf:

security:
  authorization: enabled

Uruchom ponownie usługę:

sudo systemctl restart mongod

Teraz przetestuj, czy uwierzytelnianie jest wymuszane:

mongosh -u admin -p --authenticationDatabase admin

C) Skonfiguruj zaporę sieciową

Jeśli musisz zezwolić na połączenia zdalne (np. z serwera aplikacji na innej maszynie), ogranicz port 27017 tylko do określonego zaufanego adresu IP. Nigdy nie otwieraj portu 27017 dla 0.0.0.0/0.

Używając UFW:

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

Sprawdź, czy reguła jest aktywna:

sudo ufw status verbose

D) Użyj tunelu SSH do bezpiecznego dostępu zdalnego (Najlepsza praktyka)

Najbezpieczniejszym sposobem zdalnego dostępu do MongoDB jest tunel SSH. Pozwala to uniknąć otwierania portu 27017 i szyfruje cały ruch przesyłany.

Z twojej lokalnej maszyny:

ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IP

Następnie połącz się z lokalnej powłoki MongoDB tak, jakby była lokalna:

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

Takie podejście jest zdecydowanie zalecane dla deweloperów uzyskujących dostęp do produkcyjnych baz danych z laptopów lub zdalnych stacji roboczych.

Podsumowanie wzmacniania bezpieczeństwa

Środek bezpieczeństwaLokalizacja konfiguracjiPriorytet
Powiąż z localhost tylko/etc/mongod.confnet.bindIpKrytyczne
Włącz uwierzytelnianie/etc/mongod.confsecurity.authorizationKrytyczne
Ograniczenie portu zapory sieciowejUFW / iptablesWysokie
Tunel SSH do dostępu zdalnegoKonfiguracja SSH po stronie klientaWysokie
Użyj użytkowników bazy danych z najmniejszymi uprawnieniamimongoshdb.createUser()Wysokie
Aktualizuj MongoDBapt-get upgrade mongodb-orgŚrednie

7. Kopia zapasowa i przywracanie

Regularne kopie zapasowe są niezbędne dla każdej produkcyjnej bazy danych. MongoDB zawiera mongodump i mongorestore jako część pakietu MongoDB Database Tools.

Utwórz skompresowane archiwum kopii zapasowej

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

Tworzy to pojedynczy skompresowany plik archiwum zawierający logiczny zrzut wszystkich baz danych.

Przywróć z archiwum kopii zapasowej

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

Automatyzuj kopie zapasowe za pomocą Cron

Zaplanuj codzienne kopie zapasowe za pomocą cron:

crontab -e

Dodaj następujący wiersz, aby uruchomić kopię zapasową każdego dnia o 2:00 AM:

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

> Porada: Aby zapewnić redundancję poza siedzibą, rozważ synchronizację archiwów kopii zapasowych z zewnętrzną lokalizacją przechowywania za pomocą rsync lub rclone. Nigdy nie przechowuj jedynej kopii zapasowej na tym samym serwerze co baza danych.

8. Rozwiązywanie typowych problemów

Sprawdzenie dzienników usługi

Pierwsze miejsce do sprawdzenia, gdy MongoDB nie uruchamia się lub zachowuje się nieoczekiwanie:

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

Pokazuje ostatnie 200 linii dziennika systemd MongoDB — zwykle wystarczy, aby zidentyfikować przyczynę.

Weryfikacja, że MongoDB nasłuchuje na oczekiwanym porcie

sudo ss -lntp | grep 27017

Oczekiwane wyjście, jeśli MongoDB jest uruchomiony i powiązany z localhost:

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

Jeśli nie ma wyjścia, MongoDB nie jest uruchomiony lub jest powiązany z innym interfejsem.

Sprawdzenie zainstalowanej wersji MongoDB

mongod --version

Typowe komunikaty błędów i rozwiązania

BłądPrawdopodobna przyczynaRozwiązanie
Unit mongod.service not foundsystemd nie załadował pliku jednostkiUruchom sudo systemctl daemon-reload
Address already in usePort 27017 jest zajęty przez inny procesUruchom `sudo ss -lntpgrep 27017` aby zidentyfikować konflikt
Authentication failedBłędne poświadczenia lub błędny authSourceSprawdź nazwę użytkownika, hasło i authenticationDatabase
Connection refusedMongoDB nie jest uruchomiony lub powiązany z błędnym IPSprawdź bindIp w mongod.conf i status usługi
mongod.conf permission deniedProblem z uprawnieniami plikuUruchom sudo chmod 600 /etc/mongod.conf

9. Ostateczne uwagi

Uruchamianie MongoDB na VPS to sprawdzony, opłacalny sposób na obsługę produkcyjnych obciążeń wymagających elastyczności, wydajności i pełnej kontroli infrastruktury. Postępując zgodnie z tym przewodnikiem, zainstalowałeś MongoDB 8.0 z oficjalnych repozytoriów, skonfigurowałeś uwierzytelnianie i powiązanie sieciowe, utworzyłeś użytkowników bazy danych z minimalnym dostępem, skonfigurowałeś reguły zapory i ustanowiłeś rutynę kopii zapasowych.

Kilka kluczowych wniosków do zapamiętania:

  • Zawsze włączaj uwierzytelnianie — nieuwierzytelniona instancja MongoDB to krytyczna luka bezpieczeństwa.
  • Nigdy nie udostępniaj portu 27017 w publicznym internecie — użyj tunelowania SSH lub ogranicz dostęp do określonych zaufanych adresów IP.
  • Utrzymuj MongoDB zaktualizowany — uruchamiaj sudo apt-get upgrade mongodb-org regularnie, aby otrzymywać poprawki bezpieczeństwa.
  • Testuj swoje kopie zapasowe — kopia zapasowa, którą nigdy nie przywróciłeś, to kopia zapasowa, której nie możesz zaufać.

Dla zespołów, które potrzebują niezawodnej, wysokowydajnej podstawy do wdrażania MongoDB, VPS Hosting AlexHost zapewnia magazyn SSD NVMe, pełny dostęp root i elastyczne skalowanie zasobów. Jeśli Twoje obciążenie przekroczy możliwości jednego VPS, Serwery dedykowane oferują dedykowany CPU i RAM bez efektów hałaśliwych sąsiadów — idealne dla wysokoobciążonych zestawów replik MongoDB lub klastrów podzielonych.

Potrzebujesz kompletnego stosu hostingowego? Połącz swój VPS bazy danych z Hostingiem wspólnym dla swojego front-endu lub zasobów statycznych i zabezpiecz ruch aplikacji za pomocą Certyfikatu SSL, aby chronić dane przesyłane między użytkownikami a serwerami.

*Ostatnia aktualizacja dla MongoDB Community Edition 8.0 na Debian 12 (Bookworm) i Ubuntu 22.04/24.04 LTS.*