Bagaimana cara yang benar untuk memulai layanan mongod di linux / OS X?

137

Saya telah menginstal mongodb dan telah dapat menjalankannya, bekerja dengannya, melakukan hal-hal tipe DB read / write sederhana. Sekarang saya mencoba mengatur Mac saya untuk menjalankan mongod sebagai layanan.

Saya mendapatkan "Perintah tidak ditemukan" sebagai tanggapan terhadap:

 init mongod start

Menanggapi:

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

Dan jika saya mencoba:

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

Jadi jelas saya sedikit melakukan kesalahan. Langkah selanjutnya sepertinya mengetik karakter acak sampai sesuatu berfungsi. Perintah yang tidak bekerja adalah: mongod --quiet &Saya tidak yakin, mungkin itu adalah cara Anda seharusnya melakukannya? Mungkin saya harus melepas 'mode diam' dan menambahkan > /logs/mongo.logke akhir baris perintah?

Saya membangun lingkungan pengembangan di Mac dengan tujuan melakukan hal yang sama di server linux. Saya hanya tidak yakin dengan perintah Bash. Semua pencarian lain yang saya lakukan dengan mencoba menarik jawabannya memberi saya saran untuk mesin windows.

Mungkin ada yang tahu versi linux dari perintah tersebut?

Terima kasih banyak

Alex C
sumber
Saya telah melakukannya di Windows dengan tautan ini ( stackoverflow.com/questions/2438055/… ), tidak yakin apakah sama di Mac OS.
Scott
Terima kasih Scott, tidak, saya juga telah melihat dan mencoba hal-hal dari utas Andaerror command line: unknown option install
Alex C

Jawaban:

129

Dengan build edisi komunitas mongodb baru-baru ini, ini sangat mudah.

Saat Anda menginstal melalui brew, ia memberi tahu Anda apa yang sebenarnya harus dilakukan. Tidak perlu membuat file kontrol peluncuran baru.

$ 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
sumber
Apakah mongodperlu menampilkan informasi melalui server jendela; apakah itu perlu menjadi agen peluncuran atau cukup untuk menjadikannya daemon peluncuran ?
Marius Butuc
23
Kepala ke pengguna OSX: Saya menginstal mongo melalui homebrew dan itu termasuk /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(dan dikonfigurasi dengan benar untuk instalasi saya). Hanya disalin homebrew.mxcl.mongodb.plistke LaunchAgents dan mengikuti seluruh petunjuk ini (mengganti homebrew.mxcl.mongodbuntuk org.mongodb.mongod) dan karya besar.
jacob
5
Anda sebaiknya menggulir ke bawah untuk jawaban Mario Alemi;)
oktavianus
/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: Tidak ada file atau direktori seperti itu
pengguna269867
Pertama-tama: MongoDB memiliki Homebrew Tap resmi yang harus Anda gunakan untuk menginstal edisi komunitas. $ brew tap mongodb/brewlalu instal menggunakan $ brew install mongodb-community. Adapun layanannya, jika Anda menjalankan $ brew services Homebrew sekarang sudah termasuk Tap, jadi tidak perlu melakukan apa-apa. Juga, tentang layanan startup, jika Anda hanya membutuhkan MongoDB setelah Anda masuk (sebagai server dev, bukan server produksi), gunakan ~/Library/LaunchAgents/direktori dan bukan sistem /Library/LaunchDeamonsyang terakhir memerlukan hak akses root.
cseder
152

Sunting: Anda sekarang harus menggunakan brew services start mongodb, seperti dalam jawaban Gergo ...

Saat Anda menginstal / meningkatkan mongodb, brew akan memberi tahu Anda apa yang harus dilakukan:

Agar launchd memulai mongodb saat login:

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

Kemudian untuk memuat mongodb sekarang:

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

Atau, jika Anda tidak ingin / membutuhkan launchctl, Anda dapat menjalankan:

    mongod

Ini bekerja dengan sempurna.

Mario Alemi
sumber
Saya belum melihat instruksi itu! Ini bekerja dengan sempurna untuk saya di Mac OSX 10.8.4, saya rasa saya menginstalnya dengan Brew. Komentar Jacob dalam jawaban yang diterima menunjuk ke file yang tidak dikenal ketika saya mencobanya.
Matt Fletcher
5
Saya lebih suka solusi ini daripada jawaban yang diterima. Menyalin plist pada jawaban di atas membuat segalanya sedikit lebih sulit saat memperbarui mongo; Anda harus ingat untuk memperbarui jalur sesuai kebutuhan. Menggunakan symlink seperti yang disarankan oleh homebrew akan menangani hal ini untuk Anda. Saya menggunakan pendekatan ini, dan alias dari jawaban di atas (mengganti org.mongodb.mongod dengan homebrew.mxcl.mongodb), dan semuanya bekerja dengan baik
verboze
2
Saya mencoba solusi ini dan database yang saya gunakan "menghilang"! Saya yakin inilah alasannya: plist default yang disediakan oleh homebrew menyimpan konfigurasi mongod di /usr/local/etc/mongod.conf. Konfigurasi ini menetapkan dbpath menjadi / usr / local / var / mongodb alih-alih default / data / db. Hanya ingin mencatat ini jika terjadi pada orang lain. Agar database saya muncul kembali, saya harus membongkar dan menghapus tautan simbolik.
ttemple
1
Catatan: Ada beberapa keanehan dengan launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistdi dalamnyatmux
kqw
@ Mencoba tahu cara membatalkan semua ini?
Timeless
73

servicesTap Homebrew mengintegrasikan formula dengan launchctlmanajer. Menambahkannya mudah:

brew tap homebrew/services

Anda kemudian dapat meluncurkan MongoDB dengan perintah ini (ini juga akan memulai mongodb saat boot):

brew services start mongodb

Anda juga dapat menggunakan stopatau restart:

brew services stop mongodb
brew services restart mongodb
Gergo Erdosi
sumber
4
Menyukai jawabannya tetapi ternyata brew akan menghapus layanan di masa mendatang. layanan pembuatan bir mulai mongodb Peringatan: layanan pembuatan bir tidak didukung dan akan segera dihapus.
smile2day
1
Itu berita sedih. Untuk saat ini fitur tersebut sudah usang, yang berarti akan dihapus suatu saat, tetapi masih berfungsi. Mudah-mudahan seseorang akan secara sukarela memeliharanya sebagai keran. Saya akan memperbarui jawaban saya ketika dihapus, atau ketika ketukan tersedia.
Gergo Erdosi
1
robots.thoughtbot.com/…
Igor Shubovych
Itu sudah dihapus, sejak saya melihat Error: Unknown command: servicesketika saya mencoba cara ini.
iplus26
1
Terima kasih atas jawaban ini. @ iplus26 masih berfungsi untuk saya
philip oghenerobo balogun
3

Baru saja menginstal MongoDB melalui Homebrew. Di akhir konsol penginstalan, Anda dapat melihat output sebagai berikut:

Untuk memulai mongodb:

brew services start mongodb

Atau, jika Anda tidak ingin / membutuhkan layanan latar belakang, Anda dapat menjalankan:

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

Jadi, layanan pembuatan bir mulai mongodb , berhasil menjalankan MongoDB sebagai layanan untuk saya.

Ardi Bello
sumber
2

Saya melakukan sedikit melihat sekeliling di sisi Mac. Anda mungkin ingin menggunakan penginstal di sini karena sepertinya ia melakukan semua pengaturan agar Anda dapat diluncurkan secara otomatis di Mac OS. Satu-satunya downside adalah sepertinya itu menggunakan versi mongo yang cukup lama.

Tautan ini di sini juga menjelaskan pengaturan agar mongo diluncurkan secara otomatis sebagai layanan latar belakang di Mac.

Scott
sumber
1
Tautan tidak lagi tersedia.
Hoppo
1
tidak yakin apakah itu sama persis, tetapi tautan tetap ke artikel yang menjelaskan konsep yang sama
Scott
0

Langkah pertama

instal mongodb di mesin linux Anda dengan

apt menginstal mongodb-client && apt menginstal mongodb-server

langkah kedua adalah

ubah jalur database alih-alih jalur default sistem Anda jika Anda mau.
jadi lakukan langkah-langkah berikut dan ubah sendiri.

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

dan di mesin windows Anda, lakukan seperti itu, cukup beri tanda --install. Anda harus mendapatkan pesan yang sukses.

Salam Hormat...

MehdiPRG
sumber
0

Di macOS 10.13.6 dengan MongoDB 4.0

Saya tidak dapat terhubung ke localhost dari shell mongo

Saya memulai MongoDB dengan:

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

Saya menemukan bahwa 'mongod.conf' memiliki:

bindIp: 127.0.0.1

Ubah koneksi JavaScript saya dari localhost menjadi 127.0.0.1 dan itu berfungsi dengan baik.

Hal yang sama juga terjadi dengan MongoDB Compass.

Memberitahukan
sumber
0

Setelah menginstal mongodb melalui brew, jalankan ini untuk mengaktifkan dan menjalankannya:

mongod --dbpath /usr/local/var/mongodb
pengguna129916
sumber
2
Ini adalah jawaban yang sama @ Rejeev-Divakaran yang diberikan lebih dari lima tahun lalu. Harap pastikan untuk memeriksa jawaban yang ada sebelum mengirimkan yang baru. Jika ada yang menyarankan pendekatan Anda yang sama, tindakan yang tepat adalah menaikkannya — hak istimewa yang akan Anda peroleh setelah menerima empat poin reputasi lagi, saya yakin.
Jeremy Caney
0
mongod --dbpath [path_to_data_directory]
Rejeev Divakaran
sumber
2
OP ingin menjalankannya sebagai layanan, bukan secara interaktif. Jawaban yang baik harus menjawabnya secara langsung.
paulmelnikow