Was ist der richtige Weg, um einen Mongod-Dienst unter Linux / OS X zu starten?

136

Ich habe mongodb installiert und konnte es ausführen, damit arbeiten und einfache DB-Lese- / Schreibvorgänge ausführen. Jetzt versuche ich, meinen Mac so einzurichten, dass mongod als Dienst ausgeführt wird.

Ich erhalte die Meldung "Befehl nicht gefunden" als Antwort auf:

 init mongod start

Als Antwort auf:

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

Und wenn ich es versuche:

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

Also mache ich offensichtlich ein bisschen Fehler. Der nächste Schritt scheint darin zu bestehen, zufällige Zeichen einzugeben, bis etwas funktioniert. Der Befehl, der funktioniert , lautet: mongod --quiet &Ich bin mir nicht sicher, vielleicht solltest du das so machen? Vielleicht sollte ich einfach den "stillen Modus" ausschalten und > /logs/mongo.logam Ende der Befehlszeile hinzufügen ?

Ich baue eine Entwicklungsumgebung auf einem Mac mit der Absicht, dasselbe auf einem Linux-Server zu tun. Ich bin mir der Bash-Befehle einfach nicht sicher. Alle anderen Suchanfragen, die ich mit dem Versuch mache, die Antwort aufzurufen, geben mir Ratschläge für Windows-Maschinen.

Vielleicht kennt jemand die Linux-Version der Befehle?

Vielen Dank

Alex C.
quelle
Ich habe unter Windows mit diesem Link ( stackoverflow.com/questions/2438055/… ) gearbeitet, nicht sicher, ob dies unter Mac OS gleich ist.
Scott
Danke Scott, nein, ich hatte auch das Zeug aus deinem Thread gesehen und ausprobierterror command line: unknown option install
Alex C

Antworten:

129

Mit den jüngsten Versionen der Mongodb Community Edition ist dies unkompliziert.

Wenn Sie über Brew installieren, erfahren Sie, was genau zu tun ist. Es ist nicht erforderlich, eine neue Startsteuerungsdatei zu erstellen.

$ 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
Brendan W. McAdams
quelle
Muss mongodInformationen über den Fensterserver anzeigen; Muss es ein Startagent sein oder reicht es aus, um daraus einen Startdämon zu machen ?
Marius Butuc
23
Heads-up für OSX-Benutzer: Ich habe Mongo über Homebrew installiert und es wurde mitgeliefert /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(und war für meine Installation richtig konfiguriert). Nur kopiert homebrew.mxcl.mongodb.plistin LaunchAgents- und folgte dem Rest dieser Anleitung (Substitution homebrew.mxcl.mongodbfür org.mongodb.mongod) und es funktioniert super.
Jacob
5
Du solltest besser nach unten scrollen, um Mario Alemis Antwort zu erhalten;)
Oktavian
/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: Keine solche Datei oder kein solches Verzeichnis
user269867
Zuallererst: MongoDB hat einen eigenen offiziellen Homebrew Tap, mit dem Sie die Community Edition installieren sollten. $ brew tap mongodb/brewdann installieren mit $ brew install mongodb-community. Wie für die Dienste, wenn Sie ausführen$ brew services Homebrew ist dieser Tipp enthalten, sodass Sie nichts tun müssen. Wenn Sie bei den Startdiensten nach der Anmeldung nur MongoDB benötigen (als Entwicklungsserver kein Produktionsserver), verwenden Sie das ~/Library/LaunchAgents/Verzeichnis und nicht das System, für /Library/LaunchDeamonsdas letzteres Root-Rechte erfordert.
cseder
152

Bearbeiten: Sie sollten jetzt verwenden brew services start mongodb , wie in Gergos Antwort ...

Wenn Sie mongodb installieren / aktualisieren, sagt Brew Ihnen, was zu tun ist:

So starten Sie mongodb beim Login:

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

Dann mongodb jetzt laden:

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

Wenn Sie Launchctl nicht möchten / benötigen, können Sie einfach Folgendes ausführen:

    mongod

Es funktioniert perfekt.

Mario Alemi
quelle
Ich hatte diese Anweisung nicht gesehen! Dies funktioniert perfekt für mich unter Mac OSX 10.8.4. Ich glaube, ich habe es mit Brew installiert. Jacobs Kommentar in der akzeptierten Antwort zeigte auf eine unbekannte Datei, als ich es versuchte.
Matt Fletcher
5
Ich bevorzuge diese Lösung gegenüber der akzeptierten Antwort. Das Kopieren der Liste in der obigen Antwort erschwert die Aktualisierung von Mongo. Sie müssen daran denken, die Pfade nach Bedarf zu aktualisieren. Die Verwendung eines von Homebrew empfohlenen Symlinks erledigt dies jedoch für Sie. Ich habe diesen Ansatz verwendet und die Aliase aus der obigen Antwort (Ersetzen von org.mongodb.mongod durch homebrew.mxcl.mongodb), und die Dinge funktionieren großartig
verboze
2
Ich habe diese Lösung ausprobiert und die von mir verwendete Datenbank ist "verschwunden"! Ich glaube, das ist der Grund: Die von Homebrew bereitgestellte Standardliste speichert die Mongod-Konfiguration unter /usr/local/etc/mongod.conf. Diese Konfiguration gibt den Datenbankpfad als / usr / local / var / mongodb anstelle des Standards / data / db an. Ich wollte dies nur für den Fall beachten, dass es jemand anderem passiert. Damit meine Datenbank wieder angezeigt wird, musste ich den symbolischen Link entladen und entfernen.
Tempel
1
Hinweis: Es gibt einige Verrücktheiten mit launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistinnentmux
kqw
@ttemple eine Idee, wie man all dies rückgängig macht?
Zeitlos
73

Homebrews servicesWasserhahn integriert Formeln in den launchctlManager. Das Hinzufügen ist einfach:

brew tap homebrew/services

Sie können MongoDB dann mit diesem Befehl starten (dies startet mongodb auch beim Booten):

brew services start mongodb

Sie können auch verwenden stop oder restart:

brew services stop mongodb
brew services restart mongodb
Gergo Erdosi
quelle
4
Hat die Antwort gefallen, aber festgestellt, dass Brew in Zukunft die Dienste entfernen wird. Brau-Dienste starten mongodb Warnung: Brau-Dienste werden nicht unterstützt und werden bald entfernt.
smile2day
1
Das sind traurige Neuigkeiten. Im Moment ist es nur veraltet, was bedeutet, dass es irgendwann entfernt wird, aber es funktioniert immer noch. Hoffentlich meldet sich jemand freiwillig, um es als Wasserhahn zu pflegen. Ich werde meine Antwort aktualisieren, wenn sie entfernt wird oder wenn ein Tipp verfügbar wird.
Gergo Erdosi
1
robots.thoughtbot.com/…
Igor Shubovych
Es wurde bereits entfernt, da ich sehe, Error: Unknown command: servicesals ich es auf diese Weise versuchte.
iplus26
1
Danke für diese Antwort. @ iplus26 es funktioniert immer noch für mich
Philip Oghenerobo Balogun 30.
3

Gerade MongoDB über Homebrew installiert. Am Ende der Installationskonsole sehen Sie eine Ausgabe wie folgt:

So starten Sie mongodb:

brew services start mongodb

Wenn Sie keinen Hintergrunddienst möchten / benötigen, können Sie einfach Folgendes ausführen:

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

Also, Brew Services starten Mongodb , haben es geschafft, MongoDB als Service für mich zu betreiben.

Ardi Bello
quelle
2

Ich habe mich ein bisschen auf der Mac-Seite umgesehen. Möglicherweise möchten Sie das Installationsprogramm hier verwenden da es anscheinend das gesamte Setup für den automatischen Start unter Mac OS ausführt. Der einzige Nachteil ist, dass es so aussieht, als würde eine ziemlich alte Mongo-Version verwendet.

Dieser Link hier erklärt auch das Setup, mit dem Mongo automatisch als Hintergrunddienst auf dem Mac gestartet wird.

Scott
quelle
1
Link nicht mehr verfügbar.
Hoppo
1
Ich bin mir nicht sicher, ob es genau dasselbe war, aber ein fester Link zum Artikel, der das gleiche Konzept erklärt
Scott,
0

Erster Schritt

Installieren Sie Mongodb auf Ihrem Linux-Computer mit

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

Der zweite Schritt ist

Ändern Sie den Datenbankpfad anstelle Ihres Systemstandardpfads, wenn Sie möchten.
Führen Sie die folgenden Schritte aus und ändern Sie sie selbst.

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

und in Ihrem Windows-Computer machen Sie es einfach so, setzen Sie einfach ein --install-Flag. Sie müssen eine erfolgreiche Nachricht erhalten.

Freundliche Grüße...

MehdiPRG
quelle
0

Unter macOS 10.13.6 mit MongoDB 4.0

Ich konnte über die Mongo-Shell keine Verbindung zu localhost herstellen

Ich habe MongoDB gestartet mit:

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

Ich fand, dass die 'mongod.conf' hatte:

bindIp: 127.0.0.1

Ändern Sie meine JavaScript-Verbindung von localhost auf 127.0.0.1 und es hat gut funktioniert.

Das gleiche geschah auch mit MongoDB Compass.

Benachrichtigen
quelle
0

Führen Sie nach der Installation von Mongodb durch Brew Folgendes aus, um es in Betrieb zu nehmen:

mongod --dbpath /usr/local/var/mongodb
user129916
quelle
2
Dies ist die gleiche Antwort, die @ Rejeev-Divakaran vor über fünf Jahren gegeben hat. Bitte überprüfen Sie die vorhandenen Antworten, bevor Sie eine neue einreichen. Wenn es einen gibt, der denselben Ansatz vorschlägt, besteht die geeignete Maßnahme darin, ihn zu verbessern - ein Privileg, das Sie sich verdienen, wenn Sie vier weitere Reputationspunkte erhalten, glaube ich.
Jeremy Caney
0
mongod --dbpath [path_to_data_directory]
Rejeev Divakaran
quelle
2
OP möchte es als Dienst ausführen, nicht interaktiv. Eine gute Antwort sollte dies direkt ansprechen.
Paulmelnikow