Cách chính xác để bắt đầu một dịch vụ mongod trên linux / OS X là gì?


136

Tôi đã cài đặt mongodb và đã có thể chạy nó, làm việc với nó, thực hiện các công cụ đọc / ghi DB đơn giản. Bây giờ tôi đang cố gắng thiết lập máy Mac của mình để chạy mongod như một dịch vụ.

Tôi nhận được "Lệnh không tìm thấy" để đáp lại:

 init mongod start

Đáp lại:

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

Và nếu tôi cố gắng:

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

Vì vậy, rõ ràng là tôi đang lúng túng một chút. Bước tiếp theo dường như là gõ các ký tự ngẫu nhiên cho đến khi một cái gì đó hoạt động. Lệnh không hoạt động là: mongod --quiet &Tôi không chắc chắn, có lẽ đó là cách bạn phải làm? Có lẽ tôi chỉ nên tắt 'chế độ im lặng' và thêm > /logs/mongo.logvào cuối dòng lệnh?

Tôi đang xây dựng một môi trường phát triển trên máy Mac với ý định làm điều tương tự trên máy chủ linux. Tôi chỉ không chắc chắn về các lệnh Bash. Tất cả các tìm kiếm khác tôi làm với việc cố gắng đưa ra câu trả lời cho tôi lời khuyên cho các máy Windows.

Có lẽ ai đó biết phiên bản linux của các lệnh?

Cảm ơn rất nhiều


Tôi đã thực hiện trên Windows với liên kết này ( stackoverflow.com/questions/2438055/ ,), không chắc chắn nếu tương tự trên Mac OS.
Scott

Cảm ơn Scott, không tôi cũng đã thấy và thử những thứ từ chủ đề của bạnerror command line: unknown option install
Alex C

Câu trả lời:


129

Với các bản dựng gần đây của phiên bản cộng đồng mongodb, điều này rất đơn giản.

Khi bạn cài đặt qua brew, nó sẽ cho bạn biết chính xác phải làm gì. Không cần phải tạo một tệp kiểm soát khởi chạy mới.

$ 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

mongodcần hiển thị thông tin qua máy chủ cửa sổ; nó cần phải là một tác nhân khởi động hay nó là đủ để làm cho nó một daemon khởi chạy ?
Marius Butuc

23
Hướng tới người dùng OSX: Tôi đã cài đặt mongo thông qua homebrew và nó bao gồm /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(và được cấu hình đúng cho cài đặt của tôi). Chỉ cần sao chép homebrew.mxcl.mongodb.plistvào LaunchAgents và làm theo phần còn lại của các hướng dẫn này (thay thế homebrew.mxcl.mongodbcho org.mongodb.mongod) và nó hoạt động rất tốt.
jacob

5
Bạn nên cuộn xuống để tìm câu trả lời của Mario Alemi;)
octavian


Trước hết: MongoDB có Homebrew Tap chính thức của riêng bạn, bạn nên sử dụng để cài đặt phiên bản cộng đồng. $ brew tap mongodb/brewsau đó cài đặt bằng $ brew install mongodb-community. Đối với các dịch vụ, nếu bạn chạy $ brew services Homebrew bây giờ có Tap đó đi kèm, do đó không cần phải làm gì cả. Ngoài ra, về các dịch vụ khởi động, nếu bạn chỉ cần MongoDB sau khi đăng nhập (vì máy chủ dev không phải là máy chủ sản xuất), hãy sử dụng ~/Library/LaunchAgents/thư mục và không phải hệ thống /Library/LaunchDeamonssau này yêu cầu quyền root.
cseder

152

Chỉnh sửa: bây giờ bạn nên sử dụng brew services start mongodb, như trong câu trả lời của Gergo ...

Khi bạn cài đặt / nâng cấp mongodb, brew sẽ cho bạn biết phải làm gì:

Để có launchd bắt đầu mongodb khi đăng nhập:

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

Sau đó, tải mongodb ngay bây giờ:

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

Hoặc, nếu bạn không muốn / cần launchctl, bạn có thể chạy:

    mongod

Nó hoạt động hoàn hảo.


Tôi đã không thấy hướng dẫn đó! Điều này hoạt động hoàn hảo với tôi trên Mac OSX 10.8.4, tôi nghĩ rằng tôi đã cài đặt nó với Brew. Nhận xét của Jacob trong câu trả lời được chấp nhận chỉ vào một tệp không xác định khi tôi thử.
Matt Fletcher

5
Tôi thích giải pháp này hơn câu trả lời được chấp nhận. Sao chép số nguyên trong câu trả lời ở trên làm cho mọi thứ khó hơn một chút khi cập nhật mongo; bạn sẽ phải nhớ cập nhật các đường dẫn khi cần thiết. Tuy nhiên, việc sử dụng một liên kết tượng trưng như lời khuyên của homebrew sẽ giúp bạn điều này. Tôi đã sử dụng phương pháp này và các bí danh từ câu trả lời ở trên (thay thế org.mongodb.mongod bằng homebrew.mxcl.mongodb) và mọi thứ hoạt động rất tốt
verboze

2
Tôi đã thử giải pháp này và cơ sở dữ liệu tôi đang sử dụng "biến mất"! Tôi tin rằng đây là lý do: số nguyên mặc định được cung cấp bởi homebrew lưu trữ cấu hình mongod tại /usr/local/etc/mongod.conf. Cấu hình này chỉ định dbpath là / usr / local / var / mongodb thay vì mặc định / data / db. Chỉ muốn lưu ý điều này trong trường hợp nó xảy ra với người khác. Để có được cơ sở dữ liệu của tôi xuất hiện trở lại, tôi đã phải dỡ và xóa liên kết tượng trưng.
ttemple

1
Lưu ý: Có một số điều kỳ lạ với launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistbên trongtmux
kqw

@ttemple có ý tưởng nào để hoàn tác tất cả những thứ này không?
Vô tận

73

servicesVòi của Homebrew tích hợp các công thức với người launchctlquản lý. Thêm nó thật dễ dàng:

brew tap homebrew/services

Sau đó, bạn có thể khởi chạy MongoDB bằng lệnh này (điều này cũng sẽ bắt đầu mongodb khi khởi động):

brew services start mongodb

Bạn cũng có thể sử dụng stophoặc restart:

brew services stop mongodb
brew services restart mongodb

4
Thích câu trả lời nhưng nhận thấy rằng brew sẽ loại bỏ các dịch vụ trong tương lai. dịch vụ sản xuất bia bắt đầu mongodb Cảnh báo: dịch vụ sản xuất bia không được hỗ trợ và sẽ sớm bị xóa.
smile2

1
Đó là tin buồn. Bây giờ nó không được dùng nữa, điều đó có nghĩa là đôi khi nó sẽ bị xóa, nhưng nó vẫn hoạt động. Hy vọng ai đó sẽ tình nguyện để duy trì nó như một vòi. Tôi sẽ cập nhật câu trả lời của mình khi nó bị xóa hoặc khi một vòi có sẵn.
Gergo Erdosi


Nó đã được gỡ bỏ, vì tôi thấy Error: Unknown command: serviceskhi tôi thử cách này.
iplus26

1
Cảm ơn câu trả lời này. @ iplus26 nó vẫn hoạt động với tôi
philip oghenerobo balogun


3

Chỉ cần cài đặt MongoDB qua Homebrew. Ở cuối bảng điều khiển cài đặt, bạn có thể thấy một đầu ra như sau:

Để bắt đầu mongodb:

brew services start mongodb

Hoặc, nếu bạn không muốn / cần một dịch vụ nền, bạn có thể chạy:

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

Vì vậy, các dịch vụ sản xuất bia bắt đầu mongodb , được quản lý để chạy MongoDB như một dịch vụ cho tôi.


2

Tôi đã làm một chút nhìn xung quanh phía Mac. Bạn có thể muốn sử dụng trình cài đặt ở đây vì có vẻ như tất cả các thiết lập để bạn tự động khởi chạy trên Mac OS. Nhược điểm duy nhất là có vẻ như nó đang sử dụng một phiên bản mongo khá cũ.

Liên kết này ở đây cũng giải thích việc thiết lập để mongo tự động khởi chạy dưới dạng dịch vụ nền trên Mac.


1
Liên kết không còn có sẵn.
Hoppo

1
không chắc nó có giống hệt nhau không, nhưng liên kết cố định để đi đến bài viết giải thích cùng một khái niệm
Scott

0

Bước đầu tiên

cài đặt mongodb trong máy linux của bạn với

apt cài đặt mongodb-client && apt cài đặt mongodb-server

bước thứ hai là

thay đổi đường dẫn cơ sở dữ liệu thay vì đường dẫn mặc định hệ thống của bạn nếu bạn muốn.
vì vậy hãy làm các bước sau và thay đổi nó cho chính mình.

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

và trong máy tính windows của bạn làm điều đó giống như chỉ cần đặt cờ --install. bạn phải nhận được một tin nhắn thành công

Trân trọng...


0

Trên macOS 10.13.6 với MongoDB 4.0

Tôi không thể kết nối với localhost từ vỏ mongo

Tôi đã bắt đầu MongoDB với:

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

Tôi thấy rằng 'mongod.conf' có:

bindIp: 127.0.0.1

Thay đổi kết nối JavaScript của tôi từ localhost thành 127.0.0.1 và nó hoạt động tốt.

Điều tương tự cũng xảy ra với MongoDB Compass.



0

Sau khi cài đặt mongodb thông qua brew, hãy chạy nó để khởi động và chạy:

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

2
Đây là cùng một câu trả lời @ Rejeev-Divakaran cung cấp hơn năm năm trước. Hãy chắc chắn kiểm tra câu trả lời hiện có trước khi gửi một câu trả lời mới. Nếu một tồn tại gợi ý cách tiếp cận tương tự của bạn, thì hành động thích hợp là nâng cao nó một đặc quyền mà bạn sẽ kiếm được sau khi nhận thêm bốn điểm danh tiếng, tôi tin.
Jeremy Caney

0
mongod --dbpath [path_to_data_directory]

2
OP muốn chạy nó như một dịch vụ, không tương tác. Một câu trả lời tốt nên giải quyết điều này trực tiếp.
paulmelnikow 9/2/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.