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:
| Wymaganie | Szczegóły |
|---|---|
| Dostęp do VPS | Dostęp SSH na poziomie root lub sudo |
| System operacyjny | 64-bitowy Debian 12 (Bookworm) lub Ubuntu 22.04/24.04 LTS |
| RAM | Minimum 1 GB; 2 GB+ zalecane dla produkcji |
| Magazyn | Magazyn wspierany przez SSD zdecydowanie zalecany |
| Firewall | UFW 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 curl2. 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.gpgTo 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/nullKrok 3 — Zainstaluj MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-orgAPT 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 --dearmorKrok 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.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.listKrok 3 — Instalacja MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-org4. 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-pagerDlaczego 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:
mongoshKrok 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ę:
exit6. 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.1Zastosuj zmianę:
sudo systemctl restart mongodGwarantuje 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: enabledUruchom ponownie usługę:
sudo systemctl restart mongodTeraz przetestuj, czy uwierzytelnianie jest wymuszane:
mongosh -u admin -p --authenticationDatabase adminC) 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 statusSprawdź, czy reguła jest aktywna:
sudo ufw status verboseD) 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_IPNastę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ństwa | Lokalizacja konfiguracji | Priorytet |
|---|---|---|
| Powiąż z localhost tylko | /etc/mongod.conf → net.bindIp | Krytyczne |
| Włącz uwierzytelnianie | /etc/mongod.conf → security.authorization | Krytyczne |
| Ograniczenie portu zapory sieciowej | UFW / iptables | Wysokie |
| Tunel SSH do dostępu zdalnego | Konfiguracja SSH po stronie klienta | Wysokie |
| Użyj użytkowników bazy danych z najmniejszymi uprawnieniami | mongosh → db.createUser() | Wysokie |
| Aktualizuj MongoDB | apt-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
--gzipTworzy 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
--gzipAutomatyzuj kopie zapasowe za pomocą Cron
Zaplanuj codzienne kopie zapasowe za pomocą cron:
crontab -eDodaj 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 200Pokazuje ostatnie 200 linii dziennika systemd MongoDB — zwykle wystarczy, aby zidentyfikować przyczynę.
Weryfikacja, że MongoDB nasłuchuje na oczekiwanym porcie
sudo ss -lntp | grep 27017Oczekiwane 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 --versionTypowe komunikaty błędów i rozwiązania
| Błąd | Prawdopodobna przyczyna | Rozwiązanie | |
|---|---|---|---|
Unit mongod.service not found | systemd nie załadował pliku jednostki | Uruchom sudo systemctl daemon-reload | |
Address already in use | Port 27017 jest zajęty przez inny proces | Uruchom `sudo ss -lntp | grep 27017` aby zidentyfikować konflikt |
Authentication failed | Błędne poświadczenia lub błędny authSource | Sprawdź nazwę użytkownika, hasło i authenticationDatabase | |
Connection refused | MongoDB nie jest uruchomiony lub powiązany z błędnym IP | Sprawdź bindIp w mongod.conf i status usługi | |
mongod.conf permission denied | Problem z uprawnieniami pliku | Uruchom 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-orgregularnie, 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.*
na wszystkich usługach hostingowych