Jaki jest prawidłowy sposób uruchamiania usługi mongod w systemie Linux / OS X?

136

Zainstalowałem mongodb i byłem w stanie go uruchomić, pracować z nim, robić proste rzeczy do odczytu / zapisu DB. Teraz próbuję skonfigurować Maca do uruchamiania mongod jako usługi.

Otrzymuję komunikat „Nie znaleziono polecenia” w odpowiedzi na:

 init mongod start

W odpowiedzi na:

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

A jeśli spróbuję:

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

Więc oczywiście trochę się gubię. Następnym krokiem wydaje się wpisywanie losowych znaków, aż coś zadziała. Komenda, która czyni pracę to: mongod --quiet &Nie jestem pewien, może to jest sposób, w jaki powinniśmy to zrobić? Może powinienem po prostu zdjąć „tryb cichy” i dodać > /logs/mongo.logna koniec wiersza poleceń?

Buduję środowisko programistyczne na komputerze Mac z zamiarem zrobienia tego samego na serwerze z systemem Linux. Po prostu nie jestem pewien poleceń Bash. Wszystkie inne wyszukiwania, które wykonuję, próbując znaleźć odpowiedź, dają mi porady dotyczące komputerów z systemem Windows.

Może ktoś zna wersję poleceń dla Linuksa?

Dziękuję bardzo

Alex C
źródło
Zrobiłem na Windowsie za pomocą tego linku ( stackoverflow.com/questions/2438055/… ), nie jestem pewien, czy to samo w systemie Mac OS.
Scott,
Dzięki Scott, nie, ja też widziałem i próbowałem rzeczy z twojego wątkuerror command line: unknown option install
Alex C

Odpowiedzi:

129

W przypadku najnowszych wersji wydania społecznościowego mongodb jest to proste.

Po zainstalowaniu przez brew, mówi ci, co dokładnie zrobić. Nie ma potrzeby tworzenia nowego pliku kontroli uruchamiania.

$ 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
źródło
Czy mongodmusi wyświetlać informacje przez serwer okien; czy musi to być agent uruchamiania, czy wystarczy, aby był demonem uruchamiania ?
Marius Butuc,
23
Uwaga do użytkowników OSX: zainstalowałem mongo przez homebrew i zawierało /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(i zostało poprawnie skonfigurowane do mojej instalacji). Po prostu kopiowane homebrew.mxcl.mongodb.plistdo LaunchAgents a następnie resztę tych instrukcji (podstawiając homebrew.mxcl.mongodbza org.mongodb.mongod) i działa świetnie.
Jakub
5
Lepiej przewiń w dół, aby znaleźć odpowiedź Mario Alemi;)
oktawski
/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: Brak takiego pliku lub katalogu
user269867
Po pierwsze: MongoDB ma swój własny, oficjalny Homebrew Tap, którego powinieneś użyć do zainstalowania edycji społecznościowej. $ brew tap mongodb/brewnastępnie zainstaluj za pomocą $ brew install mongodb-community. Jeśli chodzi o usługi, jeśli korzystasz z $ brew services Homebrew, teraz zawiera to Tap, więc nie musisz nic robić. Co więcej, jeśli chodzi o usługi startowe, jeśli potrzebujesz MongoDB po zalogowaniu (jako serwer deweloperski, a nie serwer produkcyjny), użyj ~/Library/LaunchAgents/katalogu, a nie systemu, /Library/LaunchDeamonsktóry wymaga uprawnień roota.
cseder
152

Edycja: powinieneś teraz użyć brew services start mongodb, jak w odpowiedzi Gergo ...

Kiedy zainstalujesz / zaktualizujesz mongodb, brew powie Ci, co zrobić:

Aby launchd uruchomił mongodb podczas logowania:

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

Następnie, aby załadować mongodb teraz:

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

Lub, jeśli nie chcesz / nie potrzebujesz launchctl, możesz po prostu uruchomić:

    mongod

Działa doskonale.

Mario Alemi
źródło
Nie widziałem tej instrukcji! To działa idealnie dla mnie na Mac OSX 10.8.4, myślę, że zainstalowałem go z Brew. Komentarz Jacoba w zaakceptowanej odpowiedzi wskazywał na nieznany plik, kiedy go wypróbowałem.
Matt Fletcher
5
Wolę to rozwiązanie od zaakceptowanej odpowiedzi. Skopiowanie plist z powyższej odpowiedzi może trochę utrudnić aktualizację mongo; musisz pamiętać o aktualizacji ścieżek w razie potrzeby. Korzystanie z linku symbolicznego zgodnie z zaleceniami homebrew załatwia to za Ciebie. Użyłem tego podejścia i aliasów z odpowiedzi powyżej (zastępując org.mongodb.mongod słowem homebrew.mxcl.mongodb) i wszystko działa świetnie
verboze
2
Wypróbowałem to rozwiązanie i baza danych, z której korzystałem, "zniknęła"! Myślę, że jest to powód: domyślny plist dostarczony przez homebrew przechowuje konfigurację mongod w /usr/local/etc/mongod.conf. Ta konfiguracja określa ścieżkę dbpath jako / usr / local / var / mongodb zamiast domyślnej / data / db. Chciałem tylko zauważyć, że przydarzy się to komuś innemu. Aby moja baza danych pojawiła się ponownie, musiałem zwolnić i usunąć dowiązanie symboliczne.
ttemple
1
Uwaga: w launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistśrodku jest trochę dziwnościtmux
kqw
@ttemple jakiś pomysł, jak to wszystko cofnąć?
Timeless
73

servicesTap Homebrew integruje formuły z launchctlmenedżerem. Dodanie jest łatwe:

brew tap homebrew/services

Następnie możesz uruchomić MongoDB za pomocą tego polecenia (spowoduje to również uruchomienie mongodb podczas rozruchu):

brew services start mongodb

Możesz także użyć stoplub restart:

brew services stop mongodb
brew services restart mongodb
Gergo Erdosi
źródło
4
Podobała mi się odpowiedź, ale stwierdziłem, że napar usunie usługi w przyszłości. usługi warzenia piwa start mongodb Ostrzeżenie: usługi parzenia nie są obsługiwane i zostaną wkrótce usunięte.
smile2day,
1
To smutna wiadomość. Na razie jest to po prostu przestarzałe, co oznacza, że ​​zostanie kiedyś usunięte, ale nadal działa. Miejmy nadzieję, że ktoś zgłosi się na ochotnika do utrzymania go jako kranu. Zaktualizuję odpowiedź, gdy zostanie usunięta lub gdy będzie dostępny kran.
Gergo Erdosi,
1
robots.thoughtbot.com/…
Igor Shubovych
Został już usunięty, ponieważ widzę, Error: Unknown command: serviceskiedy próbowałem w ten sposób.
iplus26
1
Dzięki za tę odpowiedź. @ iplus26 to nadal działa dla mnie
philip oghenerobo balogun
3

Właśnie zainstalowałem MongoDB przez Homebrew. Na końcu konsoli instalacyjnej możesz zobaczyć następujące dane wyjściowe:

Aby uruchomić mongodb:

brew services start mongodb

Lub, jeśli nie chcesz / potrzebujesz usługi w tle, możesz po prostu uruchomić:

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

Tak więc, serwisy piwowarskie zaczęły mongodb , udało się uruchomić MongoDB jako usługę dla mnie.

Ardi Bello
źródło
2

Rozejrzałem się trochę po stronie Maca. Możesz tutaj użyć instalatora , ponieważ wygląda na to, że wykonuje całą konfigurację, aby automatycznie uruchomić się w systemie Mac OS. Jedynym minusem jest to, że wygląda na to, że używa dość starej wersji mongo.

Ten link tutaj również wyjaśnia konfigurację dostać Mongo automatycznie uruchomienia jako usługa w tle na komputerze Mac.

Scott
źródło
1
Link nie jest już dostępny.
Hoppo
1
nie jestem pewien, czy to dokładnie to samo, ale naprawiono link do artykułu wyjaśniającego tę samą koncepcję
Scott
0

Pierwszy krok

zainstaluj mongodb na swoim komputerze z systemem Linux z

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

drugi krok to

Jeśli chcesz, zmień ścieżkę bazy danych zamiast domyślnej ścieżki systemowej.
więc wykonaj poniższe czynności i zmień to samodzielnie.

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

a na komputerze z systemem Windows zrób to tak, jak po prostu wstaw flagę --install. musisz otrzymać pomyślną wiadomość.

Z poważaniem...

MehdiPRG
źródło
0

W systemie macOS 10.13.6 z MongoDB 4.0

Nie mogłem połączyć się z lokalnym hostem z powłoki mongo

Zacząłem MongoDB z:

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

Okazało się, że plik „mongod.conf” miał:

bindIp: 127.0.0.1

Zmień moje połączenie JavaScript z localhost na 127.0.0.1 i działało dobrze.

To samo działo się z MongoDB Compass.

Notyfikować
źródło
0

Po zainstalowaniu mongodb przez brew, uruchom to, aby go uruchomić:

mongod --dbpath /usr/local/var/mongodb
user129916
źródło
2
To ta sama odpowiedź, której @ Rejeev-Divakaran udzielił ponad pięć lat temu. Przed przesłaniem nowej należy sprawdzić istniejące odpowiedzi. Jeśli istnieje taki, który sugeruje takie samo podejście, odpowiednim działaniem jest głosowanie za nim - przywilej, który zdobędziesz po otrzymaniu czterech dodatkowych punktów reputacji, jak sądzę.
Jeremy Caney
0
mongod --dbpath [path_to_data_directory]
Rejeev Divakaran
źródło
2
OP chce uruchamiać go jako usługę, a nie interaktywnie. Dobra odpowiedź powinna bezpośrednio rozwiązać ten problem.
paulmelnikow