Wyszukiwanie w witrynie

Zainstaluj MongoDB przy użyciu Vagrant w systemie Linux


Vagrant to oprogramowanie typu open source zapewniające czyste, łatwe w konfiguracji, odtwarzalne i przenośne środowisko programistyczne. Korzystając z Vagrant, możemy łatwo i szybko budować i utrzymywać różne wirtualne środowiska programistyczne. W tym przewodniku zobaczymy, jak zainstalować mongoDB przy użyciu Vagrant w systemie operacyjnym Linux.

Co to jest mongoDB?

MongoDB to zorientowana na dokumenty baza danych NoSQL, używana, gdy trzeba przetwarzać ogromne dane. MongoDB wykorzystuje kolekcje i dokumenty do przechowywania danych. Dokumenty to zestaw par klucz-wartość (JSON) przechowywanych w kolekcjach.

Poniżej znajduje się przykładowy dokument w formacie JSON w celach informacyjnych.

{
   title: 'Install MongoDB-5 In Linux Using Vagrant',
   url: 'https://ostechnix.com/',
   Site: 'ostechnix',
   owner: 'sk',
   author: 'Karthick',
   tags: ['community Edition', 'Linux', 'NoSQL', 'MongoDB5'],
   mongo_version: 5
}

Najnowsza wersja mongoDB to 5. MongoDB jest dostępny w dwóch wariantach - w wersji społecznościowej i w wersji dla przedsiębiorstw. W tym artykule zainstalujemy wersję społecznościową mongoDB 5 przy użyciu Vagrant w systemie Linux.

Warunki wstępne

Przed przejściem do kolejnych kroków upewnij się, że na komputerze z systemem Linux zainstalowano Oracle VirtualBox i Vagrant. Oracle VirtualBox jest dostępny w oficjalnych repozytoriach popularnych dystrybucji Linuksa, więc możesz go zainstalować za pomocą domyślnego menedżera pakietów Twojej dystrybucji.

Następnie zainstaluj Vagrant w systemie Linux, jak opisano w poniższym łączu.

  • Jak zainstalować Vagrant w systemie Linux

Zainicjuj środowisko Vagrant

Na potrzeby tego przewodnika będę używać Oracle Virtualbox jako hypervisora, który jest domyślnym dostawcą dla Vagrant. Używam Ubuntu 20.04 Vagrant Box do wdrożenia w nim mongoDB.

Utwórz nowy katalog projektu dla MongoB.

$mkdir mongodb_vagrant

Przejdź do katalogu projektu i zainicjuj środowisko włóczęgi, uruchamiając następującą komendę:

cd mongodb_vagrant
vagrant init -m "ubuntu\focal64"

Spowoduje to utworzenie nowego pliku Vagrantfile w katalogu projektu. Otwórz plik Vagrantfile w swoim ulubionym edytorze i skopiuj/wklej do niego następujące wiersze:

-*- mode: ruby -*-
vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64"
  config.vm.box_check_update = false
  config.vm.define "MongoDB5"
  config.vm.network "public_network"
  config.vm.provision "shell", path: "mongo-bootstrap.sh"
  config.vm.provider "virtualbox" do |v|
    v.memory = 2048
    v.cpus = 2
    v.name = "MongoDB-5"
  end
end

Pozwólcie, że wyjaśnię ważne parametry w powyższym kodzie.

Parametr vm.box wskazuje podstawową dystrybucję Linuksa, której używamy do instalacji MongoDB. W naszym przypadku jest to Ubuntu 20.04 LTS.

config.vm.box = "ubuntu/focal64"

Za każdym razem, gdy uruchamiasz maszynę wirtualną, Vagrant sprawdzi, czy jest dostępna aktualizacja dla używanego urządzenia. Ustawienie parametru box_check_update=false wyłączy sprawdzanie aktualizacji. To jest opcjonalne! Wolisz zaktualizować skrzynkę Vagrant, możesz usunąć tę linię:

config.vm.box_check_update = false

Każda włóczęga VM ma przypisaną nazwę default. Za pomocą parametru vm.define można ustawić niestandardową nazwę maszyny wirtualnej. W tym przypadku ustawiłem nazwę na MongoDB5.

config.vm.define "MongoDB5"

Możesz uruchomić komendę global-status, aby sprawdzić nazwę przypisaną do maszyny wirtualnej:

$ vagrant global-status --prune

id       name        provider   state    directory
--------------------------------------------------------------------------------------------

76c3e81  MongoDB5    virtualbox running  /home/karthick/Work/Lab/vagrant/mongodb_vagrant

Poniższy parametr decyduje o sposobie skonfigurowania sieci dla Twojej maszyny wirtualnej.

config.vm.network "public_network"

Skonfigurowałem sieć_publiczną. Nie podałem również nazwy interfejsu, ponieważ może się ona różnić, a podczas vagrant up zostanie wyświetlony monit o podłączenie interfejsu, jak pokazano w wynikach dziennika poniżej.

==> MongoDB5: Available bridged network interfaces:
1) wlo1
2) eno1
3) docker0
==> MongoDB5: When choosing an interface, it is usually the one that is
==> MongoDB5: being used to connect to the internet.
==> MongoDB5: 
    MongoDB5: Which interface should the network bridge to? 1
==> MongoDB5: Preparing network interfaces based on configuration...
    MongoDB5: Adapter 1: nat
    MongoDB5: Adapter 2: bridged
==> MongoDB5: Forwarding ports...
    MongoDB5: 22 (guest) => 2222 (host) (adapter 1)

Użyłem dostawcy powłoki do zainstalowania i skonfigurowania MongoDB. Nazwa skryptu to mongo-bootstrap.sh. Możesz nazwać skrypt jak chcesz.

config.vm.provision "shell", path: "mongo-bootstrap.sh"

Poniższe parametry skonfigurują pamięć i procesor dla Twojej maszyny wirtualnej. Ustawiłem pamięć na 2 giga i 2 Vcores. Możesz zwiększać i zmniejszać wartości, modyfikując parametry v.memory i v.cpus.

config.vm.provider "virtualbox" do |v|
    v.memory = 2048
    v.cpus = 2
    v.name = "MongoDB-5"
  end

Nazwa przypisana do parametru v.name będzie wyświetlana w interfejsie GUI Virtualbox.

Nazwa VBoxa

Utwórz skrypt powłoki ładującej

Jak wspomniałem wcześniej, dostawca powłoki służy do instalowania i konfigurowania mongoDB w vagrant boxie.

Utwórz plik o nazwie mongo-bootstrap.sh:

vi mongo-bootstrap.sh

I dodaj do niego następujący fragment kodu:

#!/usr/bin/env bash

Adding Repo
echo "-------------------------- ADDING REPO -------------------------------------"
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

Updating Package Index and Installing MongoDB-5
echo "-------------------------- UPDATING PACKAGE INDEX -------------------------------------"
sudo apt update

echo "-------------------------- INSTALL PACKAGES --------------------------"
sudo apt install -y mongodb-org net-tools

Start and Enable Mongod 
echo "-------------------------- START & ENABLE MONGOD --------------------------"
sudo systemctl enable --now mongod

sleep 20

Create user
echo "-------------------------- CREATE VAGRANT USER --------------------------"
mongosh << BLK
use admin
db.createUser(
{
    user: "vagrant",
    pwd: "vagrant",
    roles: [
              { role: "userAdminAnyDatabase", db: "admin" },
              { role: "readWriteAnyDatabase", db: "admin" },
              { role: "dbAdminAnyDatabase", db: "admin" },
              { role: "clusterAdmin", db: "admin" }
           ]
})
exit
BLK


## Enable Authorization

sudo cat << EOB >> /etc/mongod.conf
#security:
security:
    authorization: "enabled"
EOB

echo "-------------------------- RESTARTED MONGOD --------------------------"
sudo systemctl restart mongod

Naciśnij ESC i wpisz :wq, aby zapisać plik i zamknąć go.

Pozwólcie, że przedstawię krótki opis każdej sekcji powyższego kodu.

Domyślnie dostępna jest starsza wersja mongoDB dostarczana z Ubuntu. Jeśli chcesz najnowszą wersję mongodDB, musisz dodać oficjalne repozytorium w pliku mongo-bootstrap.sh.

Poniższa sekcja kodu zajmie się dodaniem repozytorium, aktualizacją indeksu pakietu, instalacją mongoDB i wywołaniem demona mongod.

Dodaj oficjalne repozytorium mongodb

Poniższy blok kodu utworzy użytkownika włóczęgi z uprawnieniami administratora. Nazwa użytkownika będzie włóczęga, a hasło również będzie ustawione na włóczęga. Jeśli chcesz, możesz ustawić inną nazwę użytkownika i hasło.

Utwórz użytkownika Vagrant

Domyślnie nie jest wymuszana żadna polityka bezpieczeństwa. Każdy użytkownik może wywołać powłokę mongosh i rozpocząć korzystanie z bazy danych. Aby wymusić kontrolę dostępu opartą na rolach należy dodać następujący parametr do pliku /etc/mongod.conf.

Ten fragment kodu zajmie się dodaniem parametru i zrestartowaniem demona mongod, aby zmiany zadziałały.

Włącz autoryzację

Uwaga: przed włączeniem RBAC (kontroli dostępu opartej na rolach) należy utworzyć użytkownika administratora, aby mógł on udzielać dostępu innym użytkownikom w dowolnej bazie danych.

Uruchom maszynę MongoDB Vagrant

Po utworzeniu pliku Vagrant i skryptu startowego możesz uruchomić maszynę wirtualną, uruchamiając następującą komendę:

vagrant up

Teraz poczekaj, aż maszyna zostanie uruchomiona, a część instalacji i konfiguracji mongoDB zostanie wykonana przez skrypt ładowania początkowego. To zajmie kilka minut.

Aby zalogować się do maszyny wirtualnej, uruchom następujące polecenie:

vagrant ssh

MongoDB nasłuchuje na porcie 27017. Możesz użyć polecenia netstat, aby sprawdzić, czy port znajduje się w stanie nasłuchiwania.

sudo netstat -tlnup

Przykładowe dane wyjściowe:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      3306/mongod

Uruchom następujące polecenie, aby sprawdzić status usługi mongod :

systemctl status mongod

Przykładowe dane wyjściowe:

● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-08-17 10:24:36 UTC; 2h 21min ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 3306 (mongod)
     Memory: 162.3M
     CGroup: /system.slice/mongod.service
             └─3306 /usr/bin/mongod --config /etc/mongod.conf

Uzyskaj dostęp do powłoki mongoDB

Powłoka mongo to klient CLI służący do łączenia się z mongoDB. Teraz został zastąpiony nowym klientem CLI mongosh z mongoDB V5.

Uruchom mongosh w terminalu, aby rozpocząć korzystanie z powłoki. Ponieważ funkcja RBAC jest włączona, musisz podać poświadczenia.

Możesz połączyć się z bazą danych MongoDB za pomocą monosh, korzystając z następujących parametrów połączenia.

mongosh mongodb://<username>:<password>@localhost:<port>/<database>

Tutaj łączę się z nowo utworzonym użytkownikiem włóczęgi.

mongosh mongodb://vagrant:vagrant@localhost:27017/admin

Alternatywnie możesz uruchomić powłokę i wydać następujące polecenia, aby się połączyć:

monosh
use admin
db.auth("username","password")
db.auth("vagrant","vagrant")

Połącz się z bazą danych MongoDB jako użytkownik Vagrant

Zarządzaj skrzynką włóczęgów mongoDB z wiersza poleceń

Następujące polecenia włóczęgów pomogą Ci zarządzać maszyną wirtualną mongoDB za pośrednictwem CLI:

vagrant --global-status --prune      # check the status of the machine 
vagrant halt                         # Stop the VM
vagrant destroy                      # Destroy the VM and associated VM disk.
vagrant ssh                          # Login to Remote Host

Aby uzyskać bardziej szczegółowe informacje na temat użycia poleceń Vagrant, zapoznaj się z naszym samouczkiem Vagrant:

  • Samouczek Vagrant - pierwsze kroki z Vagrant w systemie Linux

Wniosek

W tym przewodniku krok po kroku widzieliśmy, jak łatwo skonfigurować mongoDB w systemie Ubuntu 20.04 Vagrant. Jeśli testujesz projekt mongoDB lub uczysz się mongoDB, możesz szybko uruchomić pudełko Vagrant i zainstalować mongodDB w pudełku Vagrant, jak opisano tutaj.

Powiązane artykuły