Как правильно запустить службу 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. Я просто не уверен в командах Bash. Все остальные поиски, которые я предпринимаю, пытаясь найти ответ, дают мне советы для машин Windows.

Возможно, кто-то знает версию команд для Linux?

Огромное спасибо

Алекс С
источник
Я сделал на Windows с этой ссылкой ( stackoverflow.com/questions/2438055/… ), не уверен, если то же самое на Mac OS.
Скотт
Спасибо Скотт, нет, я также видел и пробовал материал из твоей темыerror command line: unknown option install
Alex C

Ответы:

129

С недавними сборками mongodb Community Edition это просто.

Когда вы устанавливаете через brew, он говорит вам, что именно делать. Нет необходимости создавать новый файл управления запуском.

$ 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) и он прекрасно работает.
Джейкоб
5
Вам лучше прокрутить вниз ответ Марио Алеми;)
октавиан
/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: Нет такого файла или каталога
user269867
Прежде всего: у MongoDB есть собственный официальный Homebrew Tap, который вы должны использовать, чтобы установить версию для сообщества. $ 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, как в ответе Герго ...

Когда вы установите / обновите mongodb, brew скажет вам, что делать:

Для запуска запустите 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. Комментарий Джейкоба в принятом ответе указывал на неизвестный файл, когда я пытался это сделать.
Мэтт Флетчер
5
Я предпочитаю это решение над принятым ответом. Копирование plist в ответе выше усложняет процесс обновления mongo; Вы должны будете помнить, чтобы обновить пути по мере необходимости. Однако использование символической ссылки, рекомендованной homebrew, позаботится об этом за вас. Я использовал этот подход и псевдонимы из ответа выше (заменив org.mongodb.mongod на homebrew.mxcl.mongodb), и все работает отлично
verboze
2
Я попробовал это решение и база данных, которую я использовал, "исчезла"! Я полагаю, что это и есть причина: стандартный список, предоставленный homebrew, хранит конфигурацию mongod по адресу /usr/local/etc/mongod.conf. В этой конфигурации dbpath указывается как / usr / local / var / mongodb вместо значения по умолчанию / data / db. Просто хотел отметить это в случае, если это случится с кем-то еще. Чтобы моя база данных снова появилась, мне пришлось выгрузить и удалить символическую ссылку.
15:07
1
Примечание: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistвнутри есть какая-то странностьtmux
kqw
@ Придумай какие-нибудь идеи, как отменить все это?
Вневременное
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
Понравился ответ, но обнаружил, что brew уберет сервисы в будущем. brew services start mongodb Предупреждение: brew services не поддерживается и будет удалена в ближайшее время.
smile2day
1
Это печальные новости. Пока это просто устарело, что означает, что когда-нибудь оно будет удалено, но оно все еще работает. Надеюсь, кто-то добровольно поддержит это как сигнал. Я обновлю свой ответ, когда он будет удален или когда станет доступен кран.
Герго Эрдоси
1
robots.thoughtbot.com/…
Игорь Шубович
Он уже удален, так как я вижу, Error: Unknown command: servicesкогда я пытался таким образом.
iplus26
1
Спасибо за этот ответ. @ iplus26 это все еще работает для меня
Филипп Огенеробо Balogun
3

Только что установил MongoDB через Homebrew. В конце консоли установки вы можете увидеть следующий вывод:

Чтобы начать mongodb:

brew services start mongodb

Или, если вам не нужен / не нужен фоновый сервис, вы можете просто запустить:

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

Итак, brew services запускает mongodb , мне удалось запустить MongoDB как сервис для меня.

Арди Белло
источник
2

Я немного осмотрелся на стороне Mac. Вы можете использовать установщик здесь, так как он выглядит так, как будто он выполняет все настройки для автоматического запуска в Mac OS. Единственным недостатком является то, что он использует довольно старую версию Монго.

Эта ссылка здесь также объясняет установку , чтобы получить Монго автоматического запуска в фоновом режиме работы на Mac.

Скотт
источник
1
Ссылка больше не доступна.
Хоппо
1
не уверен, что это была точно такая же, но фиксированная ссылка для перехода к статье, объясняющей ту же концепцию
Скотт
0

Первый шаг

установите mongodb на вашем компьютере с Linux

apt установить mongodb-клиент && apt установить mongodb-сервер

второй шаг

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

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

и в вашей машине Windows сделайте это просто так, просто поставьте флаг --install. Вы должны получить успешное сообщение.

Наилучшие пожелания...

MehdiPRG
источник
0

В macOS 10.13.6 с MongoDB 4.0

Мне не удалось подключиться к localhost из оболочки Монго

Я начал 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 через brew, запустите его, чтобы запустить его:

mongod --dbpath /usr/local/var/mongodb
user129916
источник
2
Это тот же самый ответ @ Реджеев-Дивакаран, предоставленный более пяти лет назад. Пожалуйста, не забудьте проверить существующие ответы перед отправкой нового. Если существует такой, который предлагает тот же подход, соответствующее действие - отозвать его - я полагаю, что вы получите привилегию, получив еще четыре очка репутации.
Джереми Кейни
0
mongod --dbpath [path_to_data_directory]
Реджеев Дивакаран
источник
2
ОП хочет запустить его как сервис, а не в интерактивном режиме. Хороший ответ должен адресовать это непосредственно.
Паульмельников