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
endPozwó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 = falseKaż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_vagrantPoniż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"
endNazwa 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 mongodNaciś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 upTeraz 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 sshMongoDB nasłuchuje na porcie 27017. Możesz użyć polecenia netstat, aby sprawdzić, czy port znajduje się w stanie nasłuchiwania.
sudo netstat -tlnupPrzykł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/mongodUruchom następujące polecenie, aby sprawdzić status usługi mongod :
systemctl status mongodPrzykł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.confUzyskaj 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/adminAlternatywnie możesz uruchomić powłokę i wydać następujące polecenia, aby się połączyć:
monoshuse admindb.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 HostAby 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.




