Solo per i visitatori del nostro blog: ricevi 3 mesi aggiuntivi gratuiti + 10% di sconto sul piano triennale YSBLOG10
Afferra l'affare

Come configurare MongoDB su un server Linux – (Guida passo passo 2026)

Ultimo aggiornamento: Settembre 7, 2026 9 min letto Prahlad Prajapati
Come configurare MongoDB su un server Linux

Per configurare MongoDB su un server Linux, installa il repository ufficiale di MongoDB, installa mongod, avvia e abilita il servizio, imposta bindIp e security.authorization in mongod.conf, crea un utente amministratore tramite mongosh, apri le regole del firewall e abilita TLS. Infine, ottimizza i limiti e lo storage di Linux per le prestazioni di WiredTiger e configura backup e monitoraggio.

In questa guida passo passo, imparerai esattamente come configurare MongoDB su un server Linux per la produzione nel 2026. Tratteremo l'installazione su sistemi Ubuntu/Debian e basati su RHEL, la configurazione sicura, l'ottimizzazione delle prestazioni, i set di repliche, i backup, il monitoraggio e le correzioni più comuni. Le istruzioni sono adatte ai principianti, ma basate sull'esperienza operativa reale.

Intento di ricerca e cosa imparerai

Questo tutorial si rivolge agli utenti che cercano informazioni su "come configurare MongoDB su un server Linux ", inclusi gli amministratori che implementano nuove istanze, gli sviluppatori che passano alla produzione e i team che rafforzano le installazioni esistenti. Troverete comandi pratici, impostazioni predefinite collaudate e il contesto necessario per fare scelte consapevoli per le distribuzioni basate su Ubuntu, Debian e RHEL.

Prerequisiti e requisiti di sistema

  • Server Linux (Ubuntu 22.04/24.04, Debian 12, RHEL/AlmaLinux/Rocky 8 o 9)
  • 64-bit CPU, 2+ core (4+ consigliati), 4 GB RAM minimo (8–32 GB per la produzione)
  • Accesso root o sudo
  • Porte aperte: 27017/TCP (MongoDB), 27018/27019 se sharding o replicazione
  • Sincronizzazione temporale (chrony o systemd-timesyncd) per evitare deviazioni di autenticazione e replicazione
  • Focus sulla parola chiave principale: Come configurare MongoDB su server Linux (più secondario: installazione di MongoDB, configurazione di MongoDB, rafforzamento della sicurezza, ottimizzazione delle prestazioni)

Passaggio 1: aggiungere il repository ufficiale MongoDB

Ubuntu 22.04/24.04 (Jammy/Noble) e Debian 12 (Bookworm)

Sostituisci il nome in codice con quello della tua distribuzione, se necessario. L'esempio utilizza MongoDB 7.0 (una versione stabile ampiamente distribuita). Verifica sempre l'ultima versione supportata dalla documentazione ufficiale.

# Ubuntu Jammy example (22.04). For Noble (24.04), replace 'jammy' with 'noble'
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

curl -fsSL https://pgp.mongodb.com/server-7.0.asc | 
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] 
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | 
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

sudo apt-get update
# Debian 12 (Bookworm) example
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

curl -fsSL https://pgp.mongodb.com/server-7.0.asc | 
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] 
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | 
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

sudo apt-get update

RHEL 8/9, AlmaLinux, Rocky Linux

sudo tee /etc/yum.repos.d/mongodb-org-7.0.repo >/dev/null <<'EOF'
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc
EOF

sudo dnf clean all

Passaggio 2: installare MongoDB Server

# Ubuntu/Debian
sudo apt-get install -y mongodb-org

# RHEL/Alma/Rocky
sudo dnf install -y mongodb-org

Questo installa mongod, mongosh e gli strumenti correlati. Mantieni il tuo sistema operativo e il ramo MongoDB allineati con la tua policy di supporto.

Passaggio 3: avviare e abilitare il servizio

sudo systemctl enable --now mongod
sudo systemctl status mongod --no-pager
journalctl -u mongod -b --no-pager | tail -n 50

Se mongod non si avvia, controllare i permessi del percorso dati, il contesto SELinux o i conflitti di porta su 27017.

Passaggio 4: Configurazione di base (mongod.conf)

Nella maggior parte delle distribuzioni, la configurazione si trova in /etc/mongod.conf. Imposta il binding di rete, i percorsi dati/log e abilita l'autorizzazione. Esegui sempre un backup di questo file prima di modificarlo.

sudo cp /etc/mongod.conf /etc/mongod.conf.bak.$(date +%F)

sudo tee /etc/mongod.conf >/dev/null <<'EOF'
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
  wiredTiger:
    engineConfig:
      # Set later based on RAM; omit to auto-calc
      # cacheSizeGB: 8
systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
net:
  port: 27017
  bindIp: 127.0.0.1,10.0.0.10   # replace 10.0.0.10 with your server's private IP
processManagement:
  timeZoneInfo: /usr/share/zoneinfo
security:
  authorization: enabled
# replication:
#   replSetName: rs0           # uncomment when configuring a replica set
# net:
#   tls:
#     mode: requireTLS
#     certificateKeyFile: /etc/ssl/mongo/mongo.pem
EOF

sudo systemctl restart mongod

Per impostazione predefinita, esegui il binding a localhost e a un IP privato (mai 0.0.0.0 in produzione). Abiliteremo TLS e la replica in seguito.

Passaggio 5: creare il primo utente amministratore

Con l'autorizzazione abilitata, crea un amministratore utente nel database di amministrazione. Usa SCRAM-SHA-256 e una password complessa.

mongosh --host 127.0.0.1 --port 27017

use admin
db.createUser({
  user: "siteAdmin",
  pwd: passwordPrompt(),
  roles: [ { role: "root", db: "admin" } ]
})
exit

Riconnettiti tramite autenticazione:

mongosh --username siteAdmin --authenticationDatabase admin --host 127.0.0.1

Passaggio 6: aprire le porte del firewall in modo sicuro

Ubuntu/Debian (UFW)

# Allow only trusted subnets or peers (replace CIDR)
sudo ufw allow from 10.0.0.0/24 to any port 27017 proto tcp
sudo ufw reload
sudo ufw status

RHEL/Alma/Rocky (firewalld)

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="27017" accept'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Non esporre mai 27017 alla rete Internet pubblica. Utilizza reti private, VPN o gruppi di sicurezza.

Passaggio 7: Abilita TLS/SSL crittografia

Crittografare il traffico in transito. Utilizzare un certificato CA interno o Let's Encrypt. Ecco un rapido esempio autofirmato per uso in laboratorio; per la produzione, utilizzare un certificato firmato da una CA reale.

sudo mkdir -p /etc/ssl/mongo
sudo openssl req -newkey rsa:4096 -x509 -days 825 -nodes 
  -keyout /etc/ssl/mongo/mongo.key 
  -out /etc/ssl/mongo/mongo.crt 
  -subj "/CN=mongo.internal.example.com"

sudo sh -c 'cat /etc/ssl/mongo/mongo.key /etc/ssl/mongo/mongo.crt > /etc/ssl/mongo/mongo.pem'
sudo chmod 600 /etc/ssl/mongo/mongo.pem
sudo chown mongod:mongod /etc/ssl/mongo/mongo.pem
sudo tee -a /etc/mongod.conf >/dev/null <<'EOF'
net:
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongo/mongo.pem
EOF

sudo systemctl restart mongod

Connettiti con TLS dai client tramite specificando SSL parametri nei driver o in mongosh (per i certificati autofirmati, fornire il file CA o consentire certificati non validi solo negli ambienti di test).

Fase 8: Ottimizzazione delle prestazioni di Linux e WiredTiger

Aumenta i descrittori e i processi dei file

sudo tee /etc/security/limits.d/mongodb.conf >/dev/null <<'EOF'
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc  32000
mongod hard nproc  32000
EOF

Riavviare o assicurarsi che i limiti PAM siano applicati al servizio mongod. Confermare tramite lsof e cat /proc/$(pidof mongod)/limits.

Disabilitare le pagine enormi trasparenti (THP) e regolare lo swapping

# THP often hurts latency-sensitive databases
sudo tee /etc/systemd/system/disable-thp.service >/dev/null <<'EOF'
[Unit]
Description=Disable Transparent Huge Pages (THP)
After=network.target

[Service]
Type=simple
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled; echo never > /sys/kernel/mm/transparent_hugepage/defrag'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now disable-thp

# Lower swappiness
echo 'vm.swappiness=1' | sudo tee /etc/sysctl.d/99-mongo.conf
sudo sysctl --system

Cache WiredTiger di dimensioni corrette

La cache di WiredTiger è impostata di default su una frazione di RAM. In ambienti con memoria limitata o quando si esegue su nodi condivisi, impostare cacheSizeGB in mongod.conf per evitare pressioni sul sistema operativo. Esempio: 50%–60% di RAM su server di database dedicati.

Passaggio 9: configurare un set di repliche (alta disponibilità)

I set di repliche garantiscono ridondanza e failover. Impostare un nome e riavviare prima di iniziare.

# In /etc/mongod.conf
replication:
  replSetName: rs0

sudo systemctl restart mongod
# On the primary node
mongosh --username siteAdmin --authenticationDatabase admin
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "mongo1.internal:27017" },
    { _id: 1, host: "mongo2.internal:27017" },
    { _id: 2, host: "mongo3.internal:27017", arbiterOnly: false }
  ]
})
rs.status()

Assicurati che tutti i membri possano risolvere e contattarsi a vicenda sul 27017. Usa privato DNS o voci in /etc/hosts e impostazioni TLS coerenti.

Fase 10: Backup e ripristino point-in-time

Per maggiore sicurezza, combina backup logici con snapshot del file system o snapshot cloud-native. Per cluster con carichi di lavoro elevati, valuta la possibilità di backup a caldo o di agenti di backup.

# Logical backup
mongodump --authenticationDatabase admin -u siteAdmin -h 127.0.0.1 
  --archive=/backups/mongo-$(date +%F).archive --gzip

# Restore
mongorestore --archive=/backups/mongo-YYYY-MM-DD.archive --gzip

Per gli snapshot di volumi LVM o cloud, se possibile, sospendere le scritture o utilizzare replica secondaria per snapshot più sicuri. Testare sempre i ripristini.

Fase 11: Monitoraggio, registri e manutenzione

  • Strumenti in tempo reale: mongostat, mongotop
  • Metriche di sistema: esportatore di nodi, CloudWatch o stack di monitoraggio
  • Esportatore MongoDB per dashboard Prometheus e Grafana
  • Rotazione del registro: usa logAppend true; attiva con sudo kill -SIGUSR1 $(pidof mongod)
  • Avviso su ritardo di replicazione, pressione della cache, query lente, I/O su disco ed eventi OOM

SELinux e spostamenti della directory dati

Se si modifica dbPath in un mount personalizzato (ad esempio, /data/mongo) su sistemi basati su RHEL con enforcing SELinux, impostare i contesti corretti altrimenti mongod non riuscirà a leggere/scrivere.

# Example: moving data to /data/mongo
sudo systemctl stop mongod
sudo rsync -aHAX /var/lib/mongo/ /data/mongo/
sudo semanage fcontext -a -t mongod_var_lib_t "/data/mongo(/.*)?"
sudo restorecon -Rv /data/mongo
sudo sed -i 's|dbPath: .*|dbPath: /data/mongo|' /etc/mongod.conf
sudo systemctl start mongod

Risoluzione dei problemi: soluzioni rapide

  • Porta già in uso: sudo ss -lntp | grep 27017
  • Autorizzazione negata sul percorso dati: verificare la proprietà (mongod:mongod) e i contesti SELinux
  • Errori di autorizzazione: confermare db, utente e ruolo; controllare keyfile/clusterAuthMode nelle repliche
  • Connessione rifiutata da remoto: verificare le impostazioni bindIp, firewall e TLS
  • Alto CPU o memoria: rivedere le query lente, aggiungere indici, regolare la cache di WiredTiger e verificare che THP sia disabilitato

Quando l'hosting gestito ha senso

Se preferisci concentrarti sulla tua app piuttosto che sui flag e sui backup del kernel, considera managed MongoDB su istanze VPS o cloud ottimizzate. A YouStable, forniamo server supportati da NVMe, reti private, monitoraggio proattivo e, facoltativamente, manageServizi di database d: ideali per i team che desiderano prestazioni, sicurezza e costi prevedibili senza l'onere delle operazioni.

Riepilogo: la tua checklist MongoDB pronta per la produzione

  • Installa dal repository ufficiale MongoDB
  • Avvia e abilita mongod tramite systemd
  • Imposta bindIp, abilita l'autorizzazione e crea un utente amministratore
  • Blocca il firewall e richiedi TLS
  • Limiti di sintonizzazione, THP, swappiness e cache WiredTiger
  • Utilizzare set di repliche per HA e backup convalidati per DR
  • Monitora lo stato di salute, la capacità e le prestazioni delle query

FAQ: come configurare MongoDB su un server Linux

Quale distribuzione Linux è la migliore per MongoDB nel 2026?

Ubuntu LTS (22.04/24.04) e le distribuzioni compatibili con RHEL (AlmaLinux/Rocky 8/9) sono le scelte migliori per stabilità, aggiornamenti a lungo termine e supporto di prima classe per i repository MongoDB. Scegli quella che il tuo team ha già installato. manageè bene semplificare l'applicazione di patch e l'automazione.

Come posso proteggere MongoDB se deve essere accessibile tramite Internet?

Utilizza prima una VPN o un bastion. Se l'esposizione è inevitabile, applica TLS (requireTLS), autenticazione avanzata, liste di autorizzazione del firewall, limitazione della velocità su un reverse proxy e monitoraggio continuo. Non associare mai la porta 0.0.0.0 senza controlli e avvisi di rete rigorosi.

Quale porta utilizza MongoDB e posso cambiarla?

MongoDB è in ascolto su TCP 27017 per impostazione predefinita. Modificatelo in mongod.conf sotto net.port, modificate le regole del firewall e aggiornate le stringhe di connessione del client. Le modifiche alle porte aggiungono oscurità, non sicurezza; utilizzate comunque TLS e un'autenticazione adeguata.

Quanto RAM Devo allocare risorse su MongoDB?

Inizia con almeno 8 GB per la produzione. Punta a RAM vicino al tuo set di lavoro. Imposta la cache di WiredTiger a circa il 50-60% di RAM su server di database dedicati. Monitorare gli errori di pagina, la pressione della cache e la latenza delle query per iterare in sicurezza.

Come posso spostare la directory dei dati MongoDB su un nuovo disco?

Arrestare mongod, sincronizzare i dati con il nuovo percorso tramite rsync, aggiornare storage.dbPath in mongod.conf, correggere i contesti di proprietà e SELinux, quindi avviare mongod. Convalidare dati, log e prestazioni dopo lo spostamento. Per le repliche, spostare prima i database secondari per preservare la disponibilità.

Con questi passaggi, ora sai come configurare MongoDB su un server Linux, dall'installazione e sicurezza all'ottimizzazione e all'alta disponibilità. Se hai bisogno di uno stack robusto e ad alte prestazioni con supporto esperto, YouStable può aiutarti a distribuire MongoDB nel modo giusto.

Lascia un tuo commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati da un asterisco (*).

Scorrere fino a Top