MongoDB è disponibile in due versioni: Community Edition e Enterprise Edition.
In questa lezione vedremo come installare MongoDB Community Edition (la versione gratuita di MongoDB) in Windows 10, macOS Monterey.
MongoDB Community Edition non ha nessuna limitazione per i fini di questa guida e presenta tutte le funzionalità base necessarie compresi gli strumenti per implementare Replica Set e Sharding.
Come è facile immaginare la procedura di installazione varia in base al tipo di sistema operativo. Per comprendere al meglio la procedura d’installazione, vediamo velocemente quali sono i processi e i file di cui abbiamo bisogno per lanciare un’istanza di MongoDB.
Cos’è mongod?
Dopo aver completato l’installazione con successo, il primo comando che lanciamo nella shell sarà mongod
. In questo modo avviamo il processo principale che si occuperà di gestire tutte le connessioni e le richieste e soprattutto sarà responsabile delle operazioni necessarie per salvare e mantenere i dati.
mongod
è configurabile attraverso numerose opzioni per definire, per esempio, quale sistema di autenticazione usare oppure quale deve essere il percorso del file di log, quale porta utilizzare e così via.
Un’opzione è particolarmente importante, ovvero --dbpath
con cui stabiliamo il percorso della cartella per il salvataggio dei dati e dei file usati internamente da mongod
per le varie operazioni di gestione del database.
Se non specifichiamo nessun percorso, verrà utilizzata una cartella predefinita che di solito è /data/db
in macOS e Linux. In Windows invece sarà la cartella datadb
del volume corrente, per esempio C:datadb
.
È bene notare che tale cartella predefinita potrebbe cambiare a seconda del metodo usato per l’installazione di MongoDB.
In ogni caso è opportuno assicurarsi che la cartella da usare sia già presente e che abbiamo i permessi necessari per la lettura e scrittura.
A cosa servono i file di configurazione
Se non vogliamo specificare tutte le opzioni via linea di comando, possiamo invocare mongod
indicando il percorso di un file di configurazione che possiamo nominare a nostro piacimento e che presenta solitamente l’estensione .conf
(per esempio mongod.conf
). Selezioniamo un file di configurazione con l’opzione --config
o -f
, per esempio mongod --config /etc/mongod.conf
oppure mongod -f /usr/local/etc/mongod.conf
, assicurandoci sempre di avere configurato correttamente tutti i permessi per le cartelle del percorso indicato.
Cosa sono mongo e mongosh?
Una volta avviato il server di MongoDB, dovremo collegarci usando un client. Da riga di comando possiamo lanciare mongosh
per avviare la nuova Shell MongoDB. Si tratta di un ambiente di programmazione interattivo in cui poter eseguire qualsiasi comando Javascript ed interrogare il database. Sperimenteremo in maggiore dettaglio quali sono alcune delle funzionalità di mongosh
nelle prossime lezioni.
Con l’introduzione di mongosh
è stata messa a disposizione un’alternativa alla precedente shell mongo
. Al momento mongosh
presenta solo un numero limitato dei metodi presenti in mongo
, in compenso offre una migliore evidenziazione della sintassi e gestione della cronologia dei comandi.
Installare MongoDB Community Edition in Windows 10
Il metodo più semplice per installare MongoDB su Windows 10 è attraverso il file d’installazione .msi che andiamo a scaricare dall’apposita pagina del sito ufficiale.
Dopo aver completato il download, non dovremo fare altro che avviare la procedura d’installazione.
Scegliamo quindi l’installazione completa.
Ci verrà poi chiesto se vogliamo installare MongoDB come servizio. Così facendo non dovremo preoccuparci di lanciare mongod
visto che sarà automaticamente eseguito all’avvio di Windows. È importante notare che dobbiamo selezionare un percorso sia per la cartella data
che per log
.
La scelta di avviare un’istanza di mongod
come servizio è facoltativa visto che possiamo comunque lanciare una nuova istanza con le opportune configurazioni in qualsiasi momento. Inoltre, se premiamo la combinazione di tasti WINDOWS+s
e cerchiamo ‘Servizi’, possiamo in ogni momento sapere quali sono i servizi di Windows attivi per poterli gestire come vogliamo.
Prima di completare la procedura d’installazione ci verrà richiesto se vogliamo installare MongoDB Compass.
Scegliamo di installare MongoDB Compass anche se richiede un po’ di tempo in più per il download in quanto si tratta di un’applicazione utile che useremo nel corso della guida. Si tratta di una GUI realizzata dal team di MongoDB che possiamo usare non solo per interrogare il database, ma per varie operazioni di gestione e analisi. In più presenta al suo interno una shell per interrogare e configurare il database da riga di comando.
In base a quanto abbiamo detto all’inizio di questa lezione, dopo aver completato il processo d’installazione di mongod
, abbiamo bisogno di installare un client a riga di comando per collegarsi al server di MongoDB.
Vediamo allora come installare mongosh
.
In Windows 10 dovremo procedere al download manuale di mongosh
dalla pagina ufficiale
Scegliamo il pacchetto .msi
per la nostra versione di Windows.
Una volta completato il download, seguiamo la procedura d’installazione al termine della quale possiamo aprire cmd.exe
e lanciare il comando mongosh --version
.
Vediamo ora come collegarci finalmente al database.
Se abbiamo scelto di eseguire MongoDB come servizio, dovremmo avere un’istanza di mongod
già in esecuzione. Possiamo effettuare una verifica col seguente comando:
tasklist | find "mongod.exe"
Se il processo è in esecuzione, visualizzeremo alcune informazioni in merito.
A questo punto possiamo eseguire mongosh
nella shell e ci apparirà una schermata come quella riportata sotto che ci conferma l’accesso. Come si può notare, al primo avvio visualizzeremo degli avvisi in merito all’assenza di autenticazione. Possiamo trascurare per il momento questi messaggi. Vedremo in futuro come aggiungere degli utenti e limitare i permessi associati a ciascuno di loro.
Se lo riteniamo opportuno, possiamo invece disabilitare la raccolta di dati eseguendo la funzione disableTelemetry()
.
Se non abbiamo scelto di lanciare mongod
come servizio, (ma è comunque possibile eseguire una nuova istanza anche se un’altra è già in esecuzione) possiamo lanciare mongod
nella shell dei comandi.
"C:Program FilesMongoDBServer5.0binmongod.exe" --dbpath="c:datadb" --port 27002
Se non vogliamo digitare ogni volta l’intero percorso di mongod.exe
, basterà aggiungere la directory C:Program FilesMongoDBServer5.0bin
alla variabile d’ambiente PATH
.
Possiamo finalmente collegarci tramite mongosh
specificando la porta selezionata prima, ovvero lanciando il comando mongosh --port 27002
.
Per terminare mongosh
basterà eseguire l’istruzione exit
.
Installare MongoDB Community Edition in macOS con Homebrew
In macOS completeremo tutte le procedure di installazione tramite shell. Avviamo Terminal
, iTerm2
o il vostro terminale preferito e assicuriamoci di avere installato gli strumenti a riga di comando di Xcode eseguendo xcode-select --version
. In caso contrario, procediamo all’installazione con il comando xcode-select --install
.
Avremo poi bisogno del gestore di pacchetti Homebrew che installiamo con il comando:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Se l’installazione viene completata con successo, saremo in grado di lanciare brew --version
. Se il comando brew
non è disponibile, è bene accertarsi di aver configurato correttamente la variabile d’ambiente PATH.
Andiamo poi ad aggiungere l’apposita formula ad Homebrew per poter scaricare MongoDB.
brew tap mongodb/brew
Questo comando consentirà a Homebrew di installare MongoDB aggiungendo ulteriori repository all’elenco predefinito.
Siamo finalmente pronti per installare MongoDB Community Edition
con il comando:
brew install [email protected]
Se volessimo invece installare un’altra versione o un altro strumento collegato a MongoDB, possiamo sempre controllare quali sono disponibili con il comando brew search mongodb
.
L’installazione comprende oltre a mongod
anche mongosh
e mongo
(la vecchia shell). Possiamo verificare che l’installazione sia stata eseguita in maniera corretta con i comandi mongod --version
e mongosh --version
.
Homebrew si occupa di creare le opportune cartelle per i file di log, per i file necessari al corretto funzionamento del database e per il file di configurazione mongod.conf
. Queste saranno usate se decidiamo di lanciare mongod
come servizio di macOS.
Il percorso di tali cartelle sui computer con processore Intel è diverso rispetto a quelli con precessore Apple Silicon.
Sui primi, vengono usati i seguenti percorsi:
/usr/local/etc/mongod.conf
per il file di configurazione/usr/local/var/log/mongodb
come cartella per i file di log/usr/local/var/mongodb
come cartella per i dati del database
Per i computer con Apple Silicon invece:
/opt/homebrew/etc/mongod.conf
per il file di configurazione/opt/homebrew/var/log/mongodb
come cartella per i file di log/opt/homebrew/var/mongodb
come cartella per i dati del database
Possiamo poi decidere se eseguire mongod
come servizio o meno. Anche in questo caso, useremo Homebrew.
Per conoscere lo stato dei servizi lanciati con Homebrew, eseguiremo il comando brew services
. Se appendiamo --help
(brew services --help
) otteniamo una lista con tutti i comandi che possiamo eseguire in merito ai servizi, verranno anche mostrati dei semplici esempi pratici.
Per avviare mongod
come servizio, lanciamo il comando:
brew services start [email protected]
Per interromperlo invece eseguiamo:
brew services stop [email protected]
In alternativa, possiamo sempre eseguire mongod
manualmente e decidere se usare il file di configurazione già creato da Homebrew oppure specificare delle opzioni via linea di comando.
Per esempio, dopo aver creato nella directory utente le cartelle per i dati e il file di log con il comando cd && mkdir -p mongodb/{data,log}
possiamo eseguire:
mongod --dbpath "/Users/$(whoami)/mongodb/data/"
--logpath "/Users/$(whoami)/mongodb/log/mongodb"
--bind_ip 127.0.0.1 --port 27002 --fork
about to fork child process, waiting until server is ready for connections.
forked process: 18880
child process started successfully, parent exiting
Il comando riportato sopra avvia una nuova istanza di mongod
specificando le opportune cartelle per --dbpath
e --logpath
. Il server sarà accessibile solo in locale (--bind_ip 127.0.0.1
) sulla porta 27002
. Tramite l’opzione --fork
stabiliamo che vogliamo eseguire il processo figlio in background. Per far ciò è obbligatorio indicare un percorso per il file di log (–logpath).
Per accertarsi che mongod
sia correttamente in esecuzione possiamo usare il comando:
ps -e | grep mongod
Possiamo in caso terminare il processo in background con il comando kill <PID>
, per esempio.
kill 18880
Se abbiamo in precedenza lanciato un’altra istanza di mongod
come servizio, visualizzeremo due differenti processi che usano cartelle dei dati differenti. Si tratta quindi di due processi distinti e indipendenti.
In ogni caso, sia se abbiamo eseguito mongod
come servizio sia se l’abbiamo lanciato manualmente, possiamo usare il client mongosh
per collegarci al server via linea di comando. Nel primo caso basterà eseguire semplicemente mongosh
visto che mongod
usa la porta predefinita 27017, nel secondo caso dovremo indicare la porta scelta, nel nostro caso:
mongosh --port 27002
Come già visto per Windows 10, basterà digitare exit
per terminare mongosh
.
Anche su macOS è poi possibile installare l’applicazione MongoDB Compass che scarichiamo dal sito ufficiale.
In alternativa possiamo installare MongoDB Compass tramite Homebrew con il comando:
brew install --cask mongodb-compass
Installare MongoDB in Linux
In Linux la procedura d’installazione cambia a seconda della distribuzione installata, per questo motivo è bene riferirsi alla documentazione ufficiale in cui troviamo tutti i dettagli e le spiegazioni necessarie.
In ogni caso si tratta di semplici passaggi da eseguire nel terminale per recuperare ed installare i corretti pacchetti tramite il package manager della nostra distribuzione.
In sintesi, avremo comunque due possibilità:
- eseguire
mongod
come servizio; - lanciare
mongod
manualmente;
In entrambi i casi valgono delle considerazioni simili a quelle già fatte per macOS
.
Per eseguire mongod
manualmente dovremo indicare la cartella per i file del database con l’opzione --dbpath
. Se si vuole lanciare un processo in background sarà necessario specificare anche un percorso per il file di log (--logpath
).
Potremo collegarci al server via linea di comando grazie a mongosh
dovendo eventualmente specificare delle opzioni come --port
ecc…
Sempre sul sito ufficiale è possibile trovare le istruzioni per scaricare i pacchetti .deb
o .rpm
ed installare MongoDB Compass anche sulle distribuzioni Linux supportate.
Installare MongoDB su WSL
Per installare MongoDB su WSL, possiamo invece far riferimento alla documentazione presente sul sito ufficiale di Microsoft dove troveremo tutte le istruzioni necessarie.
Conclusioni
In alternativa ai metodi visti sopra è possibile usare MongoDB in Docker scaricando l’opportuna immagine da Docker Hub.
Infine se non vogliamo installare MongoDB in locale possiamo creare un account e utilizzare un servizio di database completamente gestito come MongoDB Atlas che si occupa di tutte le operazioni di configurazione ed amministrazione permettendoci di concentrare la nostra attenzione solo sull’implementazione dei database. L’unica limitazione, ammesso che lo sia, è la necessità di avere sempre accesso ad internet. MongoDB Atlas è stato sviluppato dallo stesso team di MongoDB e sarà l’argomento della prossima lezione.