วิธีที่ถูกต้องในการเริ่มบริการ mongod บน linux / OS X คืออะไร?


137

ฉันได้ติดตั้ง mongodb และสามารถเรียกใช้ทำงานกับมันทำสิ่งประเภทอ่าน / เขียน DB อย่างง่าย ตอนนี้ฉันกำลังพยายามตั้งค่า Mac ให้เรียกใช้ mongod เป็นบริการ

ฉันได้รับ "ไม่พบคำสั่ง" เพื่อตอบสนองต่อ:

 init mongod start

เพื่อตอบสนองต่อ:

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

และถ้าฉันลอง:

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

เห็นได้ชัดว่าฉันเข้าใจผิดไปเล็กน้อย ขั้นตอนต่อไปดูเหมือนว่าจะพิมพ์อักขระแบบสุ่มจนกว่าจะมีบางอย่างทำงานได้ คำสั่งที่ใช้งานได้คือ: mongod --quiet &ฉันไม่แน่ใจบางทีนั่นอาจเป็นวิธีที่คุณควรทำ? บางทีฉันควรจะปิด 'โหมดเงียบ' และเพิ่ม> /logs/mongo.logที่ส่วนท้ายของบรรทัดคำสั่ง?

ฉันกำลังสร้างสภาพแวดล้อมการพัฒนาบน Mac ด้วยความตั้งใจที่จะทำสิ่งเดียวกันบนเซิร์ฟเวอร์ linux ฉันไม่แน่ใจในคำสั่ง Bash การค้นหาอื่น ๆ ทั้งหมดที่ฉันพยายามดึงคำตอบให้คำแนะนำสำหรับเครื่อง windows

อาจมีใครรู้คำสั่งเวอร์ชัน linux หรือไม่?

ขอบคุณมาก ๆ


ฉันทำบน Windows ด้วยลิงค์นี้ ( stackoverflow.com/questions/2438055/… ) ไม่แน่ใจว่าเหมือนกันบน Mac OS หรือไม่
Scott

ขอบคุณสก็อตฉันไม่เคยเห็นและลองของจากกระทู้ของคุณerror command line: unknown option install
Alex C

คำตอบ:


129

ด้วยรุ่นล่าสุดของ mongodb community edition สิ่งนี้ตรงไปตรงมา

เมื่อคุณติดตั้งผ่านการชงมันจะบอกคุณว่าต้องทำอย่างไร ไม่จำเป็นต้องสร้างไฟล์ควบคุมการเปิดตัวใหม่

$ 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

ไม่mongodจำเป็นต้องแสดงข้อมูลผ่านเซิร์ฟเวอร์หน้าต่าง จำเป็นต้องเป็นเอเจนต์การเรียกใช้งานหรือเพียงพอที่จะทำให้เป็นlaunch daemonหรือไม่?
Marius Butuc

23
มุ่งหน้าไปยังผู้ใช้ OSX: ฉันติดตั้ง mongo ผ่าน homebrew และรวมอยู่ด้วย/usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(และได้รับการกำหนดค่าอย่างเหมาะสมสำหรับการติดตั้งของฉัน) เพียงแค่คัดลอกhomebrew.mxcl.mongodb.plistลงใน LaunchAgents และตามส่วนที่เหลือของคำแนะนำเหล่านี้ (แทนhomebrew.mxcl.mongodbสำหรับorg.mongodb.mongod) และการทำงานที่ดี
jacob

5
คุณควรเลื่อนลงเพื่อดูคำตอบของ Mario Alemi;)
octavian

/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
user269867

ก่อนอื่น: MongoDB มี Homebrew Tap ที่เป็นทางการของตัวเองที่คุณควรใช้เพื่อติดตั้ง Community Edition $ brew tap mongodb/brewจากนั้นติดตั้งโดยใช้ $ brew install mongodb-community. สำหรับบริการหากคุณเรียกใช้$ brew services Homebrew ตอนนี้มี Tap รวมอยู่ด้วยดังนั้นไม่จำเป็นต้องทำอะไรเลย นอกจากนี้เกี่ยวกับบริการเริ่มต้นหากคุณต้องการ MongoDB หลังจากที่คุณเข้าสู่ระบบ (ในฐานะเซิร์ฟเวอร์ dev ไม่ใช่เซิร์ฟเวอร์ที่ใช้งานจริง) ให้ใช้~/Library/LaunchAgents/ไดเร็กทอรีไม่ใช่ระบบ/Library/LaunchDeamonsที่ต้องใช้สิทธิ์ root
cseder

152

แก้ไข: ตอนนี้คุณควรใช้brew services start mongodbเช่นเดียวกับคำตอบของ Gergo ...

เมื่อคุณติดตั้ง / อัพเกรด mongodb เบียร์จะบอกคุณว่าต้องทำอย่างไร:

ในการเริ่มต้น Launchd mongodb เมื่อเข้าสู่ระบบ:

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

จากนั้นโหลด mongodb ทันที:

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

หรือหากคุณไม่ต้องการ / ต้องการ launchctl คุณสามารถเรียกใช้:

    mongod

มันทำงานได้อย่างสมบูรณ์


ฉันไม่เห็นคำสั่งนั้น! ใช้งานได้ดีสำหรับฉันบน Mac OSX 10.8.4 ฉันคิดว่าฉันติดตั้งด้วย Brew ความคิดเห็นของเจคอบในคำตอบที่ยอมรับชี้ไปที่ไฟล์ที่ไม่รู้จักเมื่อฉันลองใช้
Matt Fletcher

5
ฉันชอบวิธีนี้มากกว่าคำตอบที่ยอมรับ การคัดลอกคำตอบในคำตอบด้านบนทำให้สิ่งต่าง ๆ ยากขึ้นเล็กน้อยเมื่ออัปเดต mongo คุณจะต้องอย่าลืมอัปเดตเส้นทางตามความจำเป็น การใช้ symlink ตามคำแนะนำของ homebrew จะดูแลสิ่งนี้ให้คุณ ฉันใช้วิธีนี้และนามแฝงจากคำตอบด้านบน (แทนที่ org.mongodb.mongod ด้วย homebrew.mxcl.mongodb) และสิ่งต่าง ๆ ก็ใช้งานได้ดี
กริยา

2
ฉันลองวิธีแก้ปัญหานี้และฐานข้อมูลที่ฉันใช้ "หายไป"! ฉันเชื่อว่านี่คือเหตุผล: plist เริ่มต้นที่ homebrew จัดเก็บการกำหนดค่า mongod ที่ /usr/local/etc/mongod.conf คอนฟิกูเรชันนี้ระบุ dbpath เป็น / usr / local / var / mongodb แทนค่าดีฟอลต์ / data / db แค่อยากจะแจ้งให้ทราบในกรณีที่เกิดขึ้นกับคนอื่น เพื่อให้ฐานข้อมูลของฉันปรากฏขึ้นอีกครั้งฉันต้องยกเลิกการโหลดและลบลิงก์สัญลักษณ์
ttemple

1
หมายเหตุ: มีความแปลกประหลาดบางอย่างกับเป็นlaunchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistภายในtmux
kqw

@ttemple ความคิดวิธีการยกเลิกทั้งหมดเหล่านี้หรือไม่
Timeless

73

การservicesแตะของ Homebrew จะรวมสูตรเข้ากับlaunchctlผู้จัดการ การเพิ่มมันเป็นเรื่องง่าย:

brew tap homebrew/services

จากนั้นคุณสามารถเปิด MongoDB ด้วยคำสั่งนี้ (ซึ่งจะเริ่ม mongodb เมื่อบูตด้วย):

brew services start mongodb

คุณยังสามารถใช้stopหรือrestart:

brew services stop mongodb
brew services restart mongodb

4
ชอบคำตอบ แต่พบว่าการชงจะลบบริการในอนาคต บริการชงเริ่มต้น mongodb คำเตือน: ไม่รองรับบริการชงและจะถูกลบออกในไม่ช้า
smile2day

1
นั่นเป็นข่าวเศร้า ตอนนี้เพิ่งเลิกใช้งานซึ่งหมายความว่าจะถูกลบออกไปในบางครั้ง แต่ก็ยังใช้งานได้ หวังว่าจะมีคนอาสาดูแลรักษาเป็นก๊อก ๆ ฉันจะอัปเดตคำตอบเมื่อถูกนำออกหรือเมื่อมีการแตะ
Gergo Erdosi


มันถูกลบออกไปแล้วเนื่องจากฉันเห็นError: Unknown command: servicesเมื่อฉันลองวิธีนี้
iplus26

1
ขอบคุณสำหรับคำตอบนี้ @ iplus26 มันยังใช้ได้สำหรับฉัน
philip oghenerobo balogun

14

หากคุณรู้สึกว่ามี gui ง่ายๆในการแก้ไขปัญหานี้ (เหมือนที่ฉันทำ) ฉันขอแนะนำ mongodb บานหน้าต่างสำเร็จรูป คำอธิบาย: https://www.mongodb.com/blog/post/macosx-preferences-pane-for-mongodb

บน github: https://github.com/remysaissy/mongodb-macosx-prefspane


3

เพิ่งติดตั้ง MongoDB ผ่าน Homebrew ในตอนท้ายของคอนโซลการติดตั้งคุณจะเห็นผลลัพธ์ดังนี้:

ในการเริ่ม mongodb:

brew services start mongodb

หรือหากคุณไม่ต้องการ / ต้องการบริการพื้นหลังคุณสามารถเรียกใช้:

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

ดังนั้นบริการชงเริ่ม mongodbจัดการเพื่อเรียกใช้ MongoDB เป็นบริการสำหรับฉัน


2

ฉันมองไปรอบ ๆ ด้าน Mac เล็กน้อย คุณอาจต้องการใช้โปรแกรมติดตั้งที่นี่เนื่องจากดูเหมือนว่าจะทำการตั้งค่าทั้งหมดเพื่อให้คุณเปิดใช้งานบน Mac OS โดยอัตโนมัติ ข้อเสียเพียงอย่างเดียวคือดูเหมือนว่าจะใช้ Mongo รุ่นเก่า ๆ

ลิงค์นี้ที่นี่ยังได้อธิบายถึงการตั้งค่าที่จะได้รับการเปิดตัวโดยอัตโนมัติ Mongo เป็นบริการพื้นหลังใน Mac


1
ลิงก์ไม่สามารถใช้ได้อีกต่อไป
Hoppo

1
ไม่แน่ใจว่าเหมือนกันทุกประการ แต่ลิงก์ถาวรเพื่อไปยังบทความที่อธิบายแนวคิดเดียวกัน
Scott

0

ขั้นแรก

ติดตั้ง mongodb ในเครื่อง linux ของคุณด้วย

apt ติดตั้ง mongodb-client && apt ติดตั้ง mongodb-server

ขั้นตอนที่สองคือ

เปลี่ยนเส้นทางฐานข้อมูลแทนเส้นทางเริ่มต้นระบบของคุณหากคุณต้องการ
ดังนั้นทำตามขั้นตอนต่อไปนี้และเปลี่ยนแปลงด้วยตัวคุณเอง

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

และในเครื่อง windows ของคุณก็ทำแบบนั้นเพียงแค่ใส่ - ติดตั้งแฟล็ก คุณต้องได้รับข้อความที่ประสบความสำเร็จ

ขอแสดงความนับถืออย่างสูง...


0

บน macOS 10.13.6 พร้อม MongoDB 4.0

ฉันไม่สามารถเชื่อมต่อกับ localhost จาก mongo shell

ฉันเริ่ม MongoDB ด้วย:

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

ฉันพบว่า 'mongod.conf' มี:

bindIp: 127.0.0.1

เปลี่ยนการเชื่อมต่อ JavaScript ของฉันจากlocalhostเป็น127.0.0.1และใช้งานได้ดี

สิ่งเดียวกันนี้เกิดขึ้นกับ MongoDB Compass ด้วย



0

หลังจากติดตั้ง mongodb ผ่านการชงแล้วให้เรียกใช้สิ่งนี้เพื่อเริ่มต้นใช้งาน:

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

2
นี่คือคำตอบเดียวกันกับที่ Rejeev-Divakaran ให้ไว้เมื่อห้าปีก่อน โปรดตรวจสอบคำตอบที่มีอยู่ก่อนส่งคำตอบใหม่ หากมีอยู่ที่แนะนำแนวทางเดียวกันของคุณการดำเนินการที่เหมาะสมคือการเพิ่มคะแนนซึ่งเป็นสิทธิพิเศษที่คุณจะได้รับหลังจากได้รับคะแนนชื่อเสียงเพิ่มอีกสี่คะแนนฉันเชื่อ
Jeremy Caney

0
mongod --dbpath [path_to_data_directory]

2
OP ต้องการเรียกใช้เป็นบริการไม่ใช่แบบโต้ตอบ คำตอบที่ดีควรตอบคำถามนี้โดยตรง
paulmelnikow
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.