Prerequisiti
- Un server Vultr con Arch Linux aggiornato (vedi questo articolo )
- Accesso al Sudo:
- I comandi che devono essere eseguiti come root hanno il prefisso
#
e quelli che possono essere eseguiti come utente normale da $
. Il modo raccomandato per eseguire i comandi come root è, come utente normale, aggiungere un prefisso a ciascuno di essi sudo
.
Installa il database MongoDB 4.0
MongoDB è nell'AUR (Arch User Repository). Ci sono 2 set di pacchetti che puoi usare. Vedere Creazione di pacchetti su Arch Linux (incluso AUR) per compilare e installare entrambi i set di pacchetti:
- Compila dalla fonte. Usa i pacchetti AUR
mongodb
e possibilmente mongodb-tools
'. Tieni presente che sono necessari circa 180 GB e questa è una raccolta lunga. Con 4 core, ci vogliono circa 7 ore. Questo è il metodo consigliato, perché utilizza i flag di compilazione di Arch.
- Usa il binario pre-costruito di MongoDB. Usa il pacchetto AUR
mongodb-bin
e possibilmente mongodb-tools-bin
. Questo salta l'intera fase della compilazione, scaricando un file binario pre-costruito da mongodb.org e impacchettandolo con i file di configurazione necessari.
Dopo aver installato il pacchetto, avvia MongoDB e avvialo dopo ogni avvio. Durante questo primo avvio, pre-allocerà i file per il suo journal e altri dati, il che potrebbe richiedere del tempo prima che il database finisca:
# systemctl enable --now mongodb
Test di connessione
Connetti a MongoDB:
$ mongo
Abbandonare:
> exit
Considerazione sul firewall
Sebbene la configurazione di un firewall sia sempre una buona idea, per impostazione predefinita, MongoDB è in ascolto solo sulla porta 27017
su localhost, quindi non riceverà traffico esterno.
Richiedi autenticazione
Per impostazione predefinita, MongoDB consente a chiunque di connettersi ad esso senza alcun tipo di autenticazione, il che è ovviamente un rischio per la sicurezza.
Creare un utente del database di root:
$ mongo
> use admin
> db.createUser(
... {
... user: "root",
... pwd: "YOUR-NEW-PASSWORD",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
... }
... )
> exit
Modifica /etc/mongodb.conf
e se si utilizza il pacchetto mongodb
aggiungere:
security:
authorization: "enabled"
Se si utilizza il pacchetto mongodb-bin
aggiungere:
auth = true
Riavvia MongoDB:
# systemctl restart mongodb
Ora, sebbene sia ancora possibile connettersi a MongoDB senza autenticazione, non eseguirà nulla senza di essa:
$ mongodb
> db.getUsers()
... Error: command usersInfo requires authentication :
Connettiti a MongoDB come root:
$ mongodb -u root
In alternativa, connettiti a MongoDB, quindi esegui l'autenticazione al suo interno:
$ mongodb
> use admin
> db.auth("root", "<YOUR-DATABASE-ROOT-PASSWORD>")
Importante: aggiornamenti
Poiché MongoDB è ora parte di AUR, pacman
non verrà compilato e aggiornato automaticamente a nuove versioni quando si aggiorna l'intero sistema Arch. Sarà necessario ricompilare manualmente una nuova versione e installare il nuovo pacchetto. Prima di farlo, è importante guardare le note di rilascio di MongoDB, per vedere se ci sono ulteriori passi da compiere. È consigliabile eseguire anche il backup del database prima dell'aggiornamento.
Arresto impuro
Se MongoDB non si arresta in modo pulito e non si ripristina automaticamente utilizzando il suo journal all'avvio successivo, potrebbe essere necessario eseguire quanto segue:
sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
A seconda delle dimensioni del database e degli indici utilizzati, questo processo può variare da secondi a ore.