Come installare MongoDB su Ubuntu

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 […]

Avatar di GB Factory
GB Factory 29 Gennaio 2022

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.amd64arm64
  • 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.4mongodb-orgfocal
  • multiverse: Questa parte punta APT a uno dei quattro principali repository di Ubuntu. In questo caso, punta al repository multiverso.

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.