Introduzione
MongoDB è un database NoSQL, ovvero che non si basa sul classico modello relazionale tradizionale basato su tabelle ma utilizza un modello senza schema.
Questo database utilizza invece documenti simili a file JSON con schemi dinamici, il che significa che, a differenza dei database relazionali, MongoDB non richiede uno schema predefinito prima di aggiungere dati a un database. È possibile modificare lo schema in qualsiasi momento senza dover configurare un nuovo database con uno schema aggiornato.
In questo tutorial vedremo come installare MongoDB su un server Ubuntu, verificheremo l'installazione e impareremo a gestirlo come un servizio systemd
.
Prerequisiti
Per seguire questo tutorial, avrai bisogno di un server con installato Ubuntu. Il server deve disporre di un utente amministrativo non root e di un firewall configurato con UFW. Puoi configurare un server in questo modo seguendo la guida di configurazione di base pubblicata su questo blog.
Step 1 - Installare MongoDB
I repository di pacchetti ufficiali di Ubuntu includono una vecchia versione stabile di MongoDB, più precisamente la 3.6
, tuttavia l'ultima versione stabile è la 4.4
.
Per ottenere la versione più recente di MongoDB, è necessario includere il repository di pacchetti dedicato di MongoDB nei sorgenti APT. Quindi, sarà possibile installare mongodb-org
, un pacchetto che scarica sempre l'ultima versione di MongoDB.
Per iniziare sarà necessario importare la chiave GPG pubblica dell'ultima versione stabile di MongoDB eseguendo il comando riportato qui sotto. Se si intende utilizzare una versione di MongoDB diversa dalla 4.4, assicuratevi di modificare la parte dell'URL della versione che si intende installare.
curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
Il comando cURL è uno strumento da riga di comando disponibile su molti sistemi operativi utilizzato per trasferire dati. Legge tutti i dati memorizzati all'URL fornito e stampa il contenuto nell'output del sistema. Nell'esempio riportato, cURL stampa il contenuto del file della chiave GPG e quindi lo reindirizza al comando seguente, aggiungendo così la chiave GPG all'elenco delle chiavi attendibili.
Inoltre, si noti che il comando indicato utilizza i flag che, messi insieme, essenzialmente dicono a cURL di fallire senza emettere errori. Ciò significa che se per qualche motivo cURL non è in grado di contattare il server o il server è inattivo, la risposta con l'errore non verrò aggiungerà accidentalmente all'elenco delle chiavi attendibili.
Questo comando restituirà OK
se la chiave è stata aggiunta correttamente:
OK
Se desideri controllare che la chiave sia stata aggiunta correttamente, puoi eseguire il seguente comando:
apt-key list
Questo restituirà la chiave di MongoDB, tra le altre chiavi, da qualche parte nell'output:
/etc/apt/trusted.gpg
--------------------
pub rsa4096 2019-05-28 [SC] [expires: 2024-05-26]
2069 1EEC 3521 6C63 CAF6 6CE1 6564 08E3 90CF B1F5
uid [ unknown] MongoDB 4.4 Release Signing Key <[email protected]>
. . .
A questo punto, l'installazione APT non sa ancora dove trovare il pacchetto mongodb-org
necessario per installare l'ultima versione di MongoDB.
Ci sono due punti sul server in cui APT andrà a cercare online le sorgenti dei pacchetti da scaricare e installare: il file sources.list
e la directory sources.list.d
. Il primo è un file con l'elenco delle sorgenti APT attive, con una sorgente per ogni linea e le sorgenti migliori all'inizio. La cartella invece consente di aggiungere, come file separati, la stessa tipologia di contenuto inseriti nel primo file.
Eseguendo il seguente comando, verrà creato un file nella directory sources.list.d
chiamato mongodb-org-4.4.list
che conterrà come unica riga deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Questa singola riga fornisce ad APT tutte le informazioni necessarie su dove sia la sorgente e dove trovarla:
deb
: Questo significa che la voce sorgente fa riferimento a una normale architettura Debian. In altri casi, questa parte della riga potrebbe leggere , il che significa che la voce sorgente rappresenta il codice sorgente di una distribuzione Debian.deb-src
[ arch=amd64,arm64 ]
: specifica su quali architetture devono essere scaricati i dati APT. In questo caso, specifica le architetture e.amd64
arm64
https://repo.mongodb.org/apt/ubuntu
: si tratta di un URI che rappresenta la posizione in cui è possibile trovare i dati APT. In questo caso, l'URI punta all'indirizzo HTTPS in cui si trova il repository MongoDB ufficiale.focal/mongodb-org/4.4
: i repository di Ubuntu possono contenere diverse versioni. Questo specifica che si desidera solo la versione del pacchetto disponibile per il rilascio di Ubuntu ("Focal Fossa" è il nome in codice di Ubuntu 20.04).4.4
mongodb-org
focal
multiverse
: Questa parte punta APT a uno dei quattro principali repository di Ubuntu. In questo caso, punta al repositorymultiverso
.
Dopo aver eseguito comando precedente, è necessario aggiornare l'indice locale dei pacchetti del tuo server in modo che APT sappia dove trovare il pacchetto:
sudo apt update
Ora è finalmente possibile procedere con l'installazione di MongoDB:
sudo apt install mongodb-org
Quando richiesto, premiamo Y
e quindi confermare che si desidera installare il pacchetto con ENTER
.
Una volta confermata il comando, MongoDB verrà installato sul sistema. Tuttavia non è ancora pronto per l'uso dato che è necessario avviare MongoDB e confermare il funzionamento del database.
Step 2 - Avvio del servizio MongoDB e test del database
Il processo di installazione descritto nel passaggio precedente configura automaticamente MongoDB per l'esecuzione come demone controllato da systemd
, il che significa che è possibile gestire MongoDB utilizzando i vari comandi systemctl
. Tuttavia, questa procedura di installazione non avvia automaticamente il servizio.
Per avviare il servizio MongoDB utilizziamo il comando systemctl
come indicato di seguito:
sudo systemctl start mongod.service
Dopo l'avvio possiamo in ogni momento controllare lo stato del servizio. Si tenga presente che questo comando non include .service
nella definizione del file del servizio. systemctl
aggiungerà automaticamente questo suffisso a qualsiasi parametro che verrà passato, quindi non è necessario includerlo:
sudo systemctl status mongod
Questo comando restituirà un output simile al seguente, indicando che il servizio è attivo e funzionante:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-09 12:57:06 UTC; 2s ago
Docs: https://docs.mongodb.org/manual
Main PID: 37128 (mongod)
Memory: 64.8M
CGroup: /system.slice/mongod.service
└─37128 /usr/bin/mongod --config /etc/mongod.conf
Dopo aver verificato che il servizio stia venendo eseguito come previsto, possiamo abilitare l'avvio di MongoDB all'avvio:
sudo systemctl enable mongod
È possibile verificare ulteriormente che il database sia operativo connettendosi al server del database ed eseguendo un comando di diagnostica. Il comando seguente si connetterà al database e ne emetterà la versione corrente, l'indirizzo del server e la porta. Restituirà anche il risultato del comando interno connectionStatus
di MongoDB:
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
connectionStatus
controllerà e restituirà lo stato della connessione al database. Un valore di 1
per il campo ok
nella risposta indica che il server funziona come previsto:
MongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") }
MongoDB server version: 4.4.0
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
Si può inoltre notare che il database è in esecuzione sulla porta 27017
, ovvero la porta predefinita di MongoDB, sull'Indirizzo IP 127.0.0.1
. ovvero il localhost del server.
Nel prossimo step vedremo come gestire l'istanza di MongoDB con systemd
.
Step 3 - Gestione del Servizio di MongoDB
Come menzionato in precedenza, il processo di installazione di MongoDB descritto nello Step 1, configura MongoDB per essere eseguito come un servizio systemd
. Questo significa che può essere gestito utilizzando i comandi standard systemctl
che si userebbero normalmente anche con altri servizi di Ubuntu.
Anche se è già stato citato prima, il comando systemctl status
verifica lo stato del servizio MongoDB:
sudo systemctl status mongod
Il servizio può essere fermato in qualsiasi momento con:
sudo systemctl stop mongod
Per avviare il servizio quando è bloccato si può usare:
sudo systemctl start mongod
Possiamo anche riavviare il server mentre è in esecuzione:
sudo systemctl restart mongod
In precedenza MongoDB è stato abilitato per avviarsi automaticamente insieme al server. Se desideri disabilitare questo avvio automatico, digita:
sudo systemctl disable mongod
Nel caso si volesse riattivare l'avvio automatico del servizio all'avvio del server, si può utilizzare:
sudo systemctl enable mongod
Conclusione
In questo tutorial, abbiamo visto come aggiungere MongoDB ufficiale alla tua istanza APT e installato l'ultima versione di MongoDB. Hai quindi testato la funzionalità di Mongo e praticato alcuni comandi systemctl
.