Qual è il modo corretto di avviare un servizio mongod su linux / OS X?


136

Ho installato mongodb e sono stato in grado di eseguirlo, lavorare con esso, fare semplici cose di tipo lettura / scrittura DB. Ora sto cercando di configurare il mio Mac per eseguire mongod come servizio.

Ottengo "Comando non trovato" in risposta a:

 init mongod start

In risposta a:

~: service mongod start
service: This command still works, but it is deprecated. Please use launchctl(8) instead.
service: failed to start the 'mongod' service

E se provo:

~: launchctl start mongod
launchctl start error: No such process

Quindi ovviamente sto sbagliando un po '. Il passo successivo sembra digitare caratteri casuali fino a quando qualcosa non funziona. Il comando che fa il lavoro è: mongod --quiet &io non sono sicuro, forse è questo il modo in cui si suppone di farlo? Forse dovrei semplicemente togliere la 'modalità silenziosa' e aggiungere > /logs/mongo.logalla fine della riga di comando?

Sto costruendo un ambiente di sviluppo su un Mac con l'intenzione di fare la stessa cosa su un server Linux. Non sono sicuro dei comandi di Bash. Tutte le altre ricerche che faccio con il tentativo di ottenere la risposta mi danno consigli per le macchine Windows.

Forse qualcuno conosce la versione di Linux dei comandi?

Grazie mille


Ho fatto su Windows con questo link ( stackoverflow.com/questions/2438055/… ), non sono sicuro se lo stesso su Mac OS.
Scott,

Grazie Scott, no, avevo anche visto e provato le cose dal tuo threaderror command line: unknown option install
Alex C

Risposte:


129

Con le recenti build di mongodb community edition, questo è semplice.

Quando si installa tramite brew, ti dice cosa fare esattamente. Non è necessario creare un nuovo file di controllo di avvio.

$ brew install mongodb
==> Downloading https://homebrew.bintray.com/bottles/mongodb-3.0.6.yosemite.bottle.tar.gz ### 100.0%
==> Pouring mongodb-3.0.6.yosemite.bottle.tar.gz
==> Caveats
To have launchd start mongodb at login:
  ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents
Then to load mongodb now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Or, if you don't want/need launchctl, you can just run:
  mongod --config /usr/local/etc/mongod.conf
==> Summary
🍺  /usr/local/Cellar/mongodb/3.0.6: 17 files, 159M

Ha mongodbisogno di visualizzare informazioni attraverso il server finestra; deve essere un agente di lancio o è sufficiente per renderlo un demone di lancio ?
Marius Butuc,

23
Attenzione agli utenti OSX: ho installato mongo tramite homebrew ed è stato incluso /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(ed è stato correttamente configurato per la mia installazione). Ho appena copiato homebrew.mxcl.mongodb.plistin LaunchAgents e seguito il resto di queste istruzioni (in sostituzione homebrew.mxcl.mongodbdi org.mongodb.mongod) e funziona benissimo.
Jacob

5
Faresti meglio a scorrere verso il basso per la risposta di Mario Alemi;)
Ottaviano

/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: nessun file o directory
user269867

Prima di tutto: MongoDB ha il suo Homebrew Tap ufficiale che dovresti usare per installare l'edizione della community. $ brew tap mongodb/brewquindi installare utilizzando $ brew install mongodb-community. Per quanto riguarda i servizi, se esegui $ brew services Homebrew ora ha quel Tap incluso, quindi non c'è bisogno di fare nulla. Inoltre, per quanto riguarda i servizi di avvio, se hai solo bisogno di MongoDB dopo aver effettuato l'accesso (come server di sviluppo non come server di produzione), utilizza la ~/Library/LaunchAgents/directory e non il sistema che /Library/LaunchDeamonsrichiede i privilegi di root.
cseder il

152

Modifica: ora dovresti usare brew services start mongodb, come nella risposta di Gergo ...

Quando installi / aggiorni mongodb, brew ti dirà cosa fare:

Per avviare launchd mongodb al login:

    ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

Quindi per caricare mongodb ora:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

Oppure, se non vuoi / hai bisogno di launchctl, puoi semplicemente eseguire:

    mongod

Funziona perfettamente.


Non avevo visto quell'istruzione! Questo funziona perfettamente per me su Mac OSX 10.8.4, penso di averlo installato con Brew. Il commento di Jacob nella risposta accettata ha indicato un file sconosciuto quando l'ho provato.
Matt Fletcher,

5
Preferisco questa soluzione rispetto alla risposta accettata. Copiare il plist nella risposta sopra rende le cose un po 'più difficili quando si aggiorna mongo; dovrai ricordarti di aggiornare i percorsi secondo necessità. L'uso di un collegamento simbolico come consigliato da homebrew tuttavia si occupa di questo per te. Ho usato questo approccio e gli alias dalla risposta sopra (sostituendo org.mongodb.mongod con homebrew.mxcl.mongodb) e le cose funzionano alla grande
verboze

2
Ho provato questa soluzione e il database che stavo usando "è scomparso"! Credo che questo sia il motivo: il plist predefinito fornito da homebrew memorizza la configurazione di mongod in /usr/local/etc/mongod.conf. Questa configurazione specifica che dbpath deve essere / usr / local / var / mongodb invece che predefinito / data / db. Volevo solo notare questo nel caso succeda a qualcun altro. Per visualizzare nuovamente il mio database, ho dovuto scaricare e rimuovere il collegamento simbolico.
temp

1
Nota: c'è un po 'di strano launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistdentrotmux
kqw,

Hai qualche idea su come annullare tutto ciò?
Senza tempo,

73

Il servicestocco di Homebrew integra le formule con il launchctlmanager. Aggiungerlo è semplice:

brew tap homebrew/services

È quindi possibile avviare MongoDB con questo comando (questo avvierà anche mongodb all'avvio):

brew services start mongodb

Puoi anche usare stopo restart:

brew services stop mongodb
brew services restart mongodb

4
Mi è piaciuta la risposta, ma ho scoperto che la birra rimuoverà i servizi in futuro. i servizi di infusione avviano mongodb Avvertenza: i servizi di infusione non sono supportati e saranno presto rimossi.
smile2day

1
Questa è una notizia triste. Per ora è solo deprecato, il che significa che verrà rimosso qualche volta, ma funziona ancora. Eventualmente qualcuno si offrirà volontario per mantenerlo come un tocco. Aggiornerò la mia risposta quando viene rimossa o quando un tocco diventa disponibile.
Gergo Erdosi,


È già stato rimosso, da Error: Unknown command: servicesquando ho visto che ho provato in questo modo.
iplus26,

1
Grazie per questa risposta @ iplus26 funziona ancora per me
philip oghenerobo balogun


3

Ho appena installato MongoDB tramite Homebrew. Alla fine della console di installazione, puoi vedere un output come segue:

Per avviare mongodb:

brew services start mongodb

Oppure, se non vuoi / hai bisogno di un servizio in background, puoi semplicemente eseguire:

mongod --config /usr/local/etc/mongod.conf

Quindi, i servizi di infusione avviano mongodb , sono riuscito a far funzionare MongoDB come servizio per me.


2

Mi sono guardato un po 'in giro sul lato Mac. Potresti voler utilizzare il programma di installazione qui poiché sembra che esegua tutte le impostazioni per l'avvio automatico su Mac OS. L'unico aspetto negativo è che sembra che stia usando una versione piuttosto vecchia di mongo.

Questo link qui spiega anche la configurazione per l'avvio automatico di mongo come servizio in background sul Mac.


1
Il link non è più disponibile.
Hoppo,

1
non sono sicuro che fosse lo stesso, ma il collegamento fisso per andare all'articolo che spiega lo stesso concetto
Scott

0

Primo passo

installa mongodb nella tua macchina linux con

apt install mongodb-client && apt install mongodb-server

il secondo passo è

modificare il percorso del database anziché il percorso predefinito del sistema, se lo si desidera.
quindi procedi come segue e modificalo da solo.

mongod --directoryperdb --dbpath /var/lib/mongodb/data/db --logpath /var/lib/mongodb/log/mongodb.log --logappend --rest

e nel tuo computer Windows fallo proprio come quello basta mettere un flag --install. devi ricevere un messaggio di successo.

I migliori saluti...


0

Su macOS 10.13.6 con MongoDB 4.0

Non sono riuscito a connettermi a localhost dalla shell mongo

Ho iniziato MongoDB con:

mongod --config /usr/local/etc/mongod.conf

Ho scoperto che "mongod.conf" aveva:

bindIp: 127.0.0.1

Cambia la mia connessione JavaScript da localhost a 127.0.0.1 e ha funzionato bene.

Lo stesso stava accadendo anche con MongoDB Compass.



0

Dopo aver installato mongodb tramite brew, esegui questo per metterlo in funzione:

mongod --dbpath /usr/local/var/mongodb

2
Questa è la stessa risposta fornita da Rejeev-Divakaran oltre cinque anni fa. Assicurati di controllare le risposte esistenti prima di inviarne una nuova. Se ne esiste uno che suggerisce il tuo stesso approccio, l'azione appropriata è quella di votarlo: un privilegio che guadagnerai dopo aver ricevuto altri quattro punti reputazione, credo.
Jeremy Caney,

0
mongod --dbpath [path_to_data_directory]

2
OP vuole eseguirlo come un servizio, non in modo interattivo. Una buona risposta dovrebbe rivolgersi direttamente a questo.
paulmelnikow,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.