Postanowiłeś użyć MongoDB, świetny alternative to MariaDB do budowania aplikacji MERN stack, platformy analitycznej czy dowolnego systemu opartego na dokumentach, ale natknąłeś się na problemy ze starymi Linux command lines i niezliczonymi błędami terminala.
Nie ma się czym martwić - ten przewodnik zawiera wszystko, co musisz wiedzieć, aby zainstalować MongoDB na Ubuntu.
MongoDB używa X.Y.Z wersjonowanie. 8.0 jest główny serii wydań oraz 8.2 jest mniejszy wydanie w ramach tego cyklu 8.0. Wydania dodatkowe wprowadzają nowe funkcje w obrębie tego samego cyklu głównego i, począwszy od wersji 8.0, są również dostępne dla instalacji on-prem w określonych przypadkach użycia (na przykład Search i Vector Search). MongoDB 8.0 na Ubuntu obsługuje 24.04 (Noble), 22.04 (Jammy) oraz 20.04 (Focal) na systemach 64-bitowych, z obsługą ARM64 na wybranych platformach.
Wymagania wstępne: GnuPG i Curl
Przed zainstalowaniem oficjalnego mongodb-org pakiet Ubuntu wymaga dwóch warunków wstępnych: GnuPG i Curl. Te narzędzia dają Ubuntu uprawnienie do pobrania MongoDB, ponieważ Ubuntu ma własne mongodb pakiet nie jest utrzymywany przez MongoDB Inc. i konfliktuje z oficjalnym mongodb-org pakietu. Jeśli został już zainstalowany mongodb pamiętaj, aby go odinstalować.
Teraz uruchom polecenie sudo apt-get install gnupg curl. Curl to narzędzie do pobierania plików z internetu, potrzebne do uzyskania klucza bezpieczeństwa MongoDB. GnuPG służy do weryfikacji autentyczności oprogramowania przez Ubuntu. Jeśli GnuPG jest niedostępny, Ubuntu nie może zweryfikować pakietów MongoDB.
Upewnij się, że w terminalu pomyślnie zainstalowałeś GnuPG i Curl. Jeśli tak, powinno to wyglądać tak:
Importowanie klucza GPG MongoDB
Menedżer pakietów APT w Ubuntu używa kluczy GPG do weryfikacji pakietów przed instalacją. Bez tego klucza GPG Ubuntu nie zezwala na dodanie repozytoriów MongoDB. Wpisz poniższe polecenie w terminalu, aby dodać klucz:
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
Jeśli się powiedzie, wynik w terminalu powinien wyglądać tak:
Mówiąc prosto, to polecenie pobiera podpis bezpieczeństwa MongoDB, konwertuje go na format, który rozumie Ubuntu, i zapisuje w bezpiecznym folderze systemowym. Oto rozpisanie polecenia część po części:
- curl -fsSL URL pobiera oficjalny klucz MongoDB
- –dearmor konwertuje klucz z formatu tekstowego na binarny, który rozumie Ubuntu
- -o /usr/share/keyrings/mongodb-server-8.0.gpg zapisuje plik binarny do folderu, gdzie Ubuntu przechowuje zaufane klucze
Jeśli dokładnie położy każde polecenie, publiczny klucz GPG zostanie dodany bez problemów. Jednak niektórzy użytkownicy napotykają problemy przy pobieraniu MongoDB z powodu niezgodności klucza GPG. Błędy takie jak:
NO_PUBKEY
The following signatures couldn't be verified
public key not available
Pojawiają się, gdy nie stosujesz się dokładnie do poleceń klucza GPG z wcześniejszej sekcji i zamiast tego używasz sudo apt-key ponieważ nowoczesny Ubuntu tego nie zaleca.
Dodawanie repozytorium MongoDB
Dodanie repozytorium MongoDB tworzy plik, który informuje Ubuntu, że pakiety MongoDB są dostępne pod określonym adresem internetowym. Utwórz plik listy w /etc/apt/sources.list.d/mongodb-org-8.0.list wpisując linię repozytorium za pomocą echo … | sudo tee …
Tu właśnie robi się trudniej, bo różne wersje Ubuntu wymagają innej odmiany tego polecenia. Sprawdzimy teraz, jak zaimportować plik listy w trzech wersjach Ubuntu wymienionych wcześniej.
Ubuntu 24.04 (Noble)
Aby utworzyć plik listy na Ubuntu 24.04, po prostu wpisz 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 w Twoim terminalu.
To może wyglądać mylące, ale nie przejmuj się. Gdy rozłożymy to polecenie na części, wszystko stanie się jasne.
- echo drukuje tekst
- /etc/apt/sources.list.d to folder, w którym Ubuntu przechowuje definicje źródeł oprogramowania. Każdy plik z .list format wewnątrz folderu wskazuje Ubuntu na konkretną lokalizację, z której pobierać oprogramowanie
- Normalnie, jako zwykły użytkownik nie możesz pisać nic w folderach systemowych. koszulka daje użytkownikowi specjalne uprawnienia do pisania tekstu w pliki systemowe, podczas korzystania z sudo
- szlachetny to nazwa kodowa Ubuntu 24.04. Każda wersja Ubuntu ma nazwę kodową, taką jak:
| Wersja | Nazwa kodowa |
| 20.04 | Ogniskowy |
| 22.04 | Jammy |
| 24.04 | Szlachetny |
Jeśli nie dopasuje się wersji Ubuntu do odpowiedniego wiersza poleceń, Ubuntu nie rozpozna repozytorium MongoDB.
Ubuntu 22.04 (Jammy)
Dodanie pliku listy do Ubuntu Jammy wygląda dokładnie tak samo, ale musisz wpisać wiersz poleceń, zamieniając szlachetny z jammyI notice you haven't provided English text to translate. Could you please share the English UI labels you'd like me to translate to Polish?
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
Upewnij się, że to ten, który odpowiada twojej wersji Ubuntu, w przeciwnym razie znowu się nie powiedzie.
Ubuntu 20.04 (Focal)
Wykonaj tutaj te same kroki, ale zamiast szlachetny or jammy, umieść w focal:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
Teraz, gdy repozytorium jest skonfigurowane, możesz przystąpić do instalacji mongodb-org.
Odśwież bazę danych pakietów
Skoro repozytorium jest już rozpoznane przez Ubuntu, musisz przeładować bazę danych pakietów, aby od teraz obejmowała również MongoDB. Wpisz poniższe polecenie:
sudo apt-get update
To polecenie pozostaje takie samo we wszystkich wersjach Ubuntu. Jeśli go pominiesz, Ubuntu nie będzie zawierać MongoDB. Jeśli polecenie zadziała, w terminalu powinieneś zobaczyć:
Teraz, po przeładowaniu bazy danych pakietów, czas pobrać pakiety MongoDB.
Zainstaluj MongoDB Community Server
Dostępnych jest wiele wydań MongoDB do instalacji, ale użytkownicy zazwyczaj wybierają najnowszą stabilną wersję, ponieważ jest bardziej preferowana. Aby zainstalować najnowszą stabilną wersję, wpisz sudo apt-get install -y mongodb-org
Ubuntu pobrał pakiety MongoDB, zainstalował je, utworzył konto użytkownika MongoDB oraz katalog danych, i zarejestrował MongoDB jako usługę systemową. Do tego momentu omówiliśmy, jak pobrać MongoDB na Ubuntu. Teraz uruchommy go.
Jak uruchomić MongoDB
Aby uruchomić MongoDB, musisz powiedzieć menedżerowi usług Ubuntu, "systemd", aby rozpoznał MongoDB jako usługę w tle. W tym celu wpisz następujące polecenie w terminalu:
sudo systemctl start mongod
Jeśli polecenie zadziała, Ubuntu otworzy MongoDB jako aplikację działającą w tle. Jeśli polecenie nie zadziała, możesz otrzymać błąd podobny do Nie udało się uruchomić mongod.service.
Może to się zdarzyć z powodu kilku typowych problemów:
- Błąd w pliku konfiguracji in /etc/mongod.conf (błędy wcięć YAML są powszechne)
- Konflikt portów (port 27017 jest już zajęty)
- Problem z uprawnieniami w katalogach danych lub logów (var/lib/mongodb lub var/log/mongodb)
- Dysk pełny or uszkodzony stan systemu plików
Trzy Komendy do Zdiagnozowania Problemu
Łatwo powiedzieć, co może być nie tak z konfiguracją, przez którą MongoDB się nie uruchamia, ale znacznie trudniej jest wskazać dokładną przyczynę. Oto trzy sposoby, dzięki którym możesz zdiagnozować, skąd pochodzi błąd:
- Sprawdź status usługi: sudo systemctl status mongod –no-pager
- Sprawdź szczegółowe logi (najważniejsze): sudo journalctl -u mongod –no-pager -n 100
- Sprawdź plik logu samego MongoDB
Zwróć jednak uwagę, że jeśli dysk jest pełny lub pliki systemowe są uszkodzone, naprawa będzie bardziej kwestią sprzętu niż oprogramowania. Użytkownicy mogą być zmuszeni kupić lepszy sprzęt dla swojego serwera, aby efektywnie uruchamiać MongoDB, jeśli ich obecna konfiguracja jest przestarzała.
Jeśli kupno pełnoprawnego serwera nie mieści się w twoim budżecie, rozważ sprawdzenie Ubuntu VPS dla czystego doświadczenia na twoim prywatnym serwerze z wybraną dystrybucją Ubuntu. Zawiera 24/7 obsługa i do 40Gbps prędkość sieci, dzięki jej magazyn NVMe SSD i DDR5 RAM przechowywanie.
Ponadto charakteryzuje się minimalnym opóźnieniem, 99.95% czas dostępności, oraz 14-dniowy gwarancją zwrotu pieniędzy. To nie wszystko, dostępny jest także w 12 lokalizacjach na całym świecie w przystępnej cenie.
Trzy Najczęstsze Rozwiązania do Uruchomienia MongoDB
Nie ma absolutnego sposobu na zidentyfikowanie dokładnego problemu systemu z MongoDB i jego naprawienie w jednym łatwym kroku. Oto kilka typowych rozwiązań, które możesz zastosować, aby mieć nadzieję, że MongoDB znowu się uruchomi.
- Błąd wcięcia konfiguracji YAML. Przypuśćmy, że edytowałeś /etc/mongod.conf ponownie sprawdź wcięcia, wykonując sudo nano /etc/mongod.conf. Plik YAML jest wrażliwy na białe znaki, dlatego upewnij się, że na każdym poziomie znajdują się dokładnie dwie spacje w /etc/mongod.conf.
- Port 27017 zajęty. Jeśli coś innego używa portu 27017, wyłącz to lub zmień port MongoDB w mongod.conf. Jeśli nie jesteś pewny, co działa na porcie 27017, możesz uruchomić sudo ss -lntp | grep 27017 sprawdzić to
- Problem uprawnień w katalogu danych. Czasami MongoDB nie ma uprawnień do uruchomienia w Twoim systemie i w ogóle się nie uruchamia. Najpierw uruchom sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb, a następnie uruchom MongoDB ponownie za pomocą sudo systemctl restart mongod
Zgodnie z Oficjalna strona MongoDB, innym sposobem na obejście tego problemu jest przeładowanie demona za pomocą sudo systemctl daemon-reload, a następnie uruchom pierwszą komendę sudo systemctl start mongod, ponownie.
Jeśli nie ma mongod.service, instalacja nie umieściła jednostki systemd, dlatego zainstaluj ponownie mongodb-org zestaw pakietów
Możesz zweryfikować, czy MongoDB uruchomił się pomyślnie za pomocą sudo systemctl status mongod. Jeśli terminal wyświetli aktywny (uruchomiony), to wszystko jest w porządku. Istnieje jednak kilka dodatkowych konfiguracji, które uczynią Twoją pracę znacznie sprawniejszą.
Automatyzuj MongoDB
MongoDB nie uruchamia się automatycznie za każdym razem, gdy włączysz serwer. Będziesz musiał powtórzyć niektóre z wymienionych kroków każdorazowo. Opcjonalnie możesz poinstruować Ubuntu, aby uruchamiał MongoDB po starcie systemu.
Po prostu uruchom sudo systemctl enable mongod w terminalu, co od tej pory poinstruuje Twój system, aby uruchamiał MongoDB po każdym ponownym uruchomieniu. Ponadto możesz uruchomić ponownie mongod proces wydając komendę sudo systemctl restart mongod. Dodatkowo użytkownicy mogą musieć przeglądnąć dane wyjściowe w pliku, aby śledzić wszelkie błędy lub ważne komunikaty:
/var/log/mongodb/mongod.log
Teraz, gdy wszystko jest skonfigurowane, zacznijmy korzystać z mongod.
Otwieranie powłoki MongoDB
Aby pracować z bazą danych, użytkownicy muszą otworzyć powłokę MongoDB, wydając polecenie mongosh. Pomyśl o tym jako dedykowanym wierszu poleceń dla MongoDB lub konsoli MySQL. Alternatywnie możesz pracować z MongoDB za pomocą narzędzi GUI, takich jak sterowniki MongoDB. Ale jeśli chcesz pracować z tym z poziomu terminala, mongosh pozwala to zrealizować.
Twój MongoDB będzie teraz w pełni funkcjonalny, ale musisz rozważyć kilka dodatkowych kroków, aby go zabezpieczyć.
Włącz autentykację w MongoDB
MongoDB domyślnie nie ma ochrony hasłem, ponieważ aby utworzyć użytkownika, musisz już mieć dostęp. Oto prosty sposób, aby to zrobić
Utwórz użytkownika administratora
Najpierw musisz przełączyć się na bazę danych admin za pomocą:
use admin
Następnie utwórz użytkownika za pomocą db.createUser({…}). Wypełnij to swoim
- Nazwa użytkownika
- Hasło
- Rola
W polu rola wpisz najlepiej root co oznacza pełną kontrolę lub uprawnienia administratora.
Włącz uwierzytelnianie
Teraz, gdy mamy skonfigurowanego własnego użytkownika, musimy edytować /etc/mongod.conf plik. To dlatego, że ten plik kontroluje zachowanie MongoDB. Ale pamiętaj, że edytując plik, musisz zawsze ponownie uruchomić mongod usługę za pomocą sudo systemctl restart mongod. To, co musimy zmienić, to jeden parametr zwany authorization, który wygląda tak:
security:
authorization:
Aby zakończyć proces autentykacji, po prostu zmień wartość authorization w taki sposób:
security:
authorization: enabled
Od teraz MongoDB wymaga logowania, więc twoja autentykacja jest sfinalizowana. Przejdźmy teraz do innej konfiguracji, która w pełni wykorzystuje MongoDB.
Otwórz zaporę sieciową
Jak wspomniano wcześniej, MongoDB działa na porcie 27017. Ponieważ zapory sieciowe domyślnie blokują porty, musisz powiedzieć zaporze, aby zezwoliła na aplikacje działające na porcie 27017. Aby to zrobić, po prostu wydaj polecenie:
ufw allow from YOUR_IP to any port 27017
Alternatywnie możesz również wydać polecenie ufw allow 27017, ale uważaj, ponieważ jego uruchomienie pozwoli całemu internetowi na dostęp do tego portu. Bezpieczniej będzie wybrać pierwszą opcję, która zezwala na dostęp do portu tylko z Twojego adresu IP.
Użytkownicy mogą napotkać problemy podczas uruchamiania MongoDB, na przykład z dostępem zdalnym. Czytaj dalej, aby dowiedzieć się, jak to naprawić.
Problem z dostępem zdalnym
MongoDB uruchamia się z bindIp. bindIp ogranicza MongoDB do 127.0.0.1, co pozwala tylko na połączenia lokalne. Dlatego jeśli spróbujesz połączyć się z serwerem MongoDB z innego miejsca, dostęp będzie Ci odmówiony, ponieważ MongoDB jest domyślnie skonfigurowany na zezwolenie tylko na połączenia lokalne, chyba że skonfiguruje się go inaczej.
Znowu przejdź do /etc/mongod.conf, a zobaczysz trzy linie takie jak ta:
net:
port: 27017
bindIp: 127.0.0.1
Jeśli chcesz zezwolić na zdalne połączenia z Twoim mongod użytkownikiem, zmień podane wyżej wartości w ten sposób:
net:
port: 27017
bindIp: 0.0.0.0
Następnie uruchom ponownie Twój mongod usługa z sudo systemctl restart mongod tak jak przy każdej innej edycji tego pliku.
Właśnie udzieliłeś/udzieliłaś swojemu mongod usłudze uprawnienia do akceptowania zdalnych połączeń. Ale uważaj, ponieważ wykonując to, udostępnisz swoją bazę danych całemu internetowi, jeśli jeszcze nie uwierzytelniłeś/uwierzytelniłaś swojego mongod użytkownika. Istnieje wiele botów, które stale skanują otwarte porty MongoDB, dlatego zawsze upewnij się, że użytkownik mongod ma hasło.
Przegląd całości
Gratulacje, wykonałeś/wykonałaś już wszystko, aby stworzyć zoptymalizowaną usługę MongoDB dla systemu Ubuntu. Oto również mapa mentalna do śledzenia każdego kroku przedstawionego w tym artykule.
| Polecenie | Co to robi |
| aktualizacja apt | Odśwież listę oprogramowania |
| apt zainstaluj | Zainstaluj oprogramowanie |
| curl | Pobierz plik |
| gpg | Zarządzaj kluczami szyfrowania |
| echo | Drukuj tekst |
| koszulka | Zapisz do chronionego pliku |
| systemctl start | Uruchom usługę |
| systemctl enable | Uruchom przy starcie |
| systemctl status | Sprawdź usługę |
| mongosh | Wejdź do powłoki MongoDB |
| Edytuj /etc/mongod.conf | Włącz uwierzytelnianie |
| ufw | Zarządzaj zaporą |
| bindIp | Zezwól na dostęp zdalny |
To powinno Ci pomóc w lepszym zrozumieniu całego procesu. Ale jeśli samodzielne skonfigurowanie MongoDB jest dla Ciebie zbyt trudne, upewnij się, że uruchamiasz MongoDB VPS dla Twojego prywatnego serwera Ubuntu 24.04 LTS z preinstalowanym MongoDB.
Wyposażony w 99.95% uptime, 24/7 wsparcie i 14-dniowy gwarancja zwrotu pieniędzy. Poza tym obsługuje do 40 Gbps przepustowości dzięki DDR5 RAM i magazyn NVMe SSD miejsca na dane. Nie martw się, gdzie mieszkasz, bo jest dostępne też w 12 lokalizacjach na całym świecie w przystępnej cenie.
Ale skoro już udało Ci się skonfigurować własną usługę MongoDB wyposażoną we wszystkie ustawienia potrzebne do obsługi obciążeń i biznesu na poziomie produkcji.