Який правильний спосіб запустити службу mongod на linux / OS X?


136

Я встановив mongodb і міг запускати його, працювати з ним, робити прості речі для читання / запису БД. Зараз я намагаюся налаштувати свій 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-сервері. Я просто не впевнений у командах Баша. Усі інші пошуки, які я роблю, намагаючись знайти відповідь, дають мені поради щодо машин Windows.

Можливо, хтось знає версію linux команд?

Дуже дякую


Я робив це в Windows з цим посиланням ( stackoverflow.com/questions/2438055/… ), не впевнений, чи те саме в Mac OS.
Скотт

Дякую Скотту, ні, я також не бачив і не пробував речі з вашої темиerror command line: unknown option install
Alex C

Відповіді:


129

Що стосується останніх версій спільноти mongodb, це зрозуміло.

Коли ви встановлюєте за допомогою варіння, він підкаже, що саме робити. Не потрібно створювати новий файл управління запуском.

$ 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потрібно відображати інформацію через віконний сервер; чи потрібно це бути запускаючим агентом чи достатньо, щоб зробити це демоном запуску ?
Маріус Бутук

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
Тобі краще прокрутити вниз відповідь Маріо Алемі;)
октавіан

/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: Немає такого файлу чи каталогу
користувач269867

Перш за все: у MongoDB є власний офіційний довідник Homebrew, який слід використовувати для встановлення спільноти. $ brew tap mongodb/brewпотім встановіть за допомогою $ brew install mongodb-community. Що стосується сервісів, якщо у вас запущено програму $ brew services Homebrew, ввімкнено функцію Tap, тому нічого не потрібно робити. Крім того, про сервіси запуску, якщо вам просто потрібен MongoDB після входу (як сервер розробників, а не виробничий сервер), використовуйте ~/Library/LaunchAgents/каталог, а не систему/Library/LaunchDeamons для якої останній потребує привілеїв root.
cseder

152

Редагувати: тепер ви повинні використовувати brew services start mongodb , як у відповіді Герго ...

Під час встановлення / оновлення mongodb, brew підкаже, що робити:

Щоб запустити mongodb при вході в систему:

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

Потім завантажити mongodb зараз:

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

Або, якщо ви не хочете / не потребуєте startctl, ви можете просто запустити:

    mongod

Це прекрасно працює.


Я не бачив цієї інструкції! Це прекрасно працює для мене на Mac OSX 10.8.4, я думаю, я встановив його з Brew. Коментар Якова у прийнятій відповіді вказував на невідомий файл, коли я його спробував.
Метт Флетчер

5
Я вважаю за краще це рішення над прийнятою відповіддю. Скопіювання списку у відповідь вище робить дещо складніше під час оновлення монго; вам доведеться пам’ятати, щоб оновити шляхи за потребою. Використання символьної посилання, як радить домашня мова, однак це забезпечує для вас. Я використовував цей підхід, і псевдоніми з відповіді вище (замінюючи org.mongodb.mongod на homebrew.mxcl.mongodb), і все чудово
спрацьовує

2
Я спробував це рішення, і база даних, яку я використовував, "зникла"! Я вважаю, що це причина: список за замовчуванням, який надає 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
щось дивне

@ttemple будь-яка ідея, як скасувати все це?
позачасовий

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
Це сумна новина. Наразі це просто застаріло, а це означає, що він буде видалений колись, але він все ще працює. Сподіваємось, хтось зголоситься добровільно підтримувати це як крана. Я оновлю свою відповідь, коли вона буде видалена або коли кран стане доступним.
Герго Ердосі


Його вже видалено, оскільки я бачу, Error: Unknown command: servicesколи я спробував цей спосіб.
iplus26

1
Дякую за цю відповідь. @ iplus26 це все ще працює для мене
philip oghenerobo balogun


3

Щойно встановлено MongoDB через Homebrew. В кінці інсталяційної консолі ви можете побачити вихід таким чином:

Щоб запустити mongodb:

brew services start mongodb

Або, якщо ви не хочете / потребуєте фонової послуги, просто можете запустити:

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

Отже, сервіси пивоварів запускають mongodb , вдалося запустити MongoDB як сервіс для мене.


2

Я трохи озирнувся на стороні Mac. Ви можете скористатися інсталятором тут як здається, він робить усі налаштування для автоматичного запуску на Mac OS. Єдиний мінус - це схоже, що він використовує досить стару версію монго.

Це посилання тут також пояснює установку , щоб отримати Монго автоматичного запуску у фоновому режимі роботи на Mac.


1
Посилання більше не доступне.
Хоппо

1
не впевнений, чи то саме, але зафіксований посилання на статтю, що пояснює ту саму концепцію
Скотт

0

Перший крок

встановіть mongodb у вашій машині Linux за допомогою

apt встановити mongodb-client && apt встановити mongodb-сервер

другий крок -

змінити шлях до бази даних замість вашого системного шляху за замовчуванням, якщо ви хочете.
тому виконайте наступні дії та змініть це для себе.

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

Я почав MongoDB з:

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

Я виявив, що "mongod.conf" мав:

bindIp: 127.0.0.1

Змініть моє JavaScript-з'єднання з localhost на 127.0.0.1, і він працював чудово.

Те саме відбувалося і з компасом MongoDB.



0

Встановивши mongodb через варити, запустіть це, щоб його почати працювати:

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

2
Це та сама відповідь @ Rejeev-Divakaran, яка була надана більше п'яти років тому. Будь ласка, обов'язково перевірте наявні відповіді, перш ніж надсилати нову. Якщо існує один, який пропонує ваш той самий підхід, то відповідна дія полягає в тому, щоб його підтвердити - привілей, яку ви заробите, отримавши ще чотири репутаційні бали, я вважаю.
Джеремі Кейні

0
mongod --dbpath [path_to_data_directory]

2
ОП хоче запустити його як послугу, а не інтерактивно. Хороша відповідь повинна вирішити це безпосередньо.
paulmelnikow
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.