【问题标题】:What is the correct way to start a mongod service on linux / OS X?在 linux / OS X 上启动 mongod 服务的正确方法是什么?
【发布时间】:2011-08-01 13:51:05
【问题描述】:

我已经安装了 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

标签: linux mongodb service initialization


【解决方案1】:

我在 Mac 端做了一些观察。您可能需要使用安装程序here,因为它看起来为您完成了所有设置,以便在 Mac OS 上自动启动。唯一的缺点是它看起来使用的是相当旧的 mongo 版本。

此链接here 还解释了如何设置 mongo 作为 Mac 上的后台服务自动启动。

【讨论】:

  • 链接不再可用。
  • 不确定是否完全相同,但修复了指向解释相同概念的文章的链接
【解决方案2】:

使用最近构建的 mongodb 社区版,这很简单。

当您通过 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是否需要通过window server显示信息;它需要成为 launch 代理 还是足以使其成为 launch daemon
  • 请注意 OSX 用户:我通过自制软件安装了 mongo,它包括 /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(并且已为我的安装正确配置)。只需将 homebrew.mxcl.mongodb.plist 复制到 LaunchAgents 中,然后按照这些说明的其余部分进行操作(将 homebrew.mxcl.mongodb 替换为 org.mongodb.mongod),效果很好。
  • 你最好向下滚动查看 Mario Alemi 的答案;)
  • /Library/LaunchAgents/homebrew.mxcl.mongodb.plist:没有这样的文件或目录
  • 首先:MongoDB 有它自己的官方 Homebrew Tap,你应该使用它来安装社区版。 $ brew tap mongodb/brew 然后使用 $ brew install mongodb-community 安装。至于服务,如果你运行$ brew services Homebrew 现在已经包含了 Tap,所以不需要做任何事情。另外,关于启动服务,如果你登录后只需要MongoDB(作为开发服务器而不是生产服务器),请使用~/Library/LaunchAgents/目录而不是系统/Library/LaunchDeamons,后者需要root权限。
【解决方案3】:

编辑:您现在应该使用 brew services start mongodb,就像 Gergo 的回答一样...

当你安装/升级 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 安装的。 Jacob 在接受的答案中的评论在我尝试时指向了一个未知文件。
  • 我更喜欢这个解决方案而不是接受的答案。在更新 mongo 时复制上面答案中的 plist 会使事情变得更加困难;您必须记住根据需要更新路径。但是,按照 homebrew 的建议使用符号链接可以为您解决这个问题。我使用了这种方法,以及上面答案中的别名(用 homebrew.mxcl.mongodb 替换 org.mongodb.mongod),效果很好
  • 我尝试了这个解决方案,我使用的数据库“消失了”!我相信这就是原因:自制软件提供的默认 plist 将 mongod 配置存储在 /usr/local/etc/mongod.conf 中。此配置将 dbpath 指定为 /usr/local/var/mongodb 而不是默认的 /data/db。只是想注意这一点,以防万一发生在其他人身上。为了让我的数据库再次出现,我必须卸载并删除符号链接。
  • 注意:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plisttmux 中有些奇怪
  • @ttemple 知道如何撤消所有这些吗?
【解决方案4】:

如果您想要一个简单的 gui 来解决这个问题(就像我一样),那么我可以推荐 mongodb pref-pane。描述:https://www.mongodb.com/blog/post/macosx-preferences-pane-for-mongodb

在github上:https://github.com/remysaissy/mongodb-macosx-prefspane

【讨论】:

    【解决方案5】:

    Homebrew 的 services tap 将公式与 launchctl 管理器集成在一起。添加很简单:

    brew tap homebrew/services
    

    然后您可以使用此命令启动 MongoDB(这也将在启动时启动 mongodb):

    brew services start mongodb
    

    您也可以使用stoprestart

    brew services stop mongodb
    brew services restart mongodb
    

    【讨论】:

    • 喜欢这个答案,但发现 brew 将来会删除服务。 brew services start mongodb 警告:brew services 不受支持,很快就会被删除。
    • 这是个不幸的消息。目前它刚刚被弃用,这意味着它会在某个时候被删除,但它仍然有效。希望有人会自愿维护它作为水龙头。当它被删除或点击可用时,我会更新我的答案。
    • 它已经被删除了,因为我在尝试这种方式时看到了Error: Unknown command: services
    • 感谢您的回答。 @iplus26 它仍然对我有用
    【解决方案6】:
    mongod --dbpath [path_to_data_directory]
    

    【讨论】:

    • OP 希望将其作为服务运行,而不是以交互方式运行。一个好的答案应该直接解决这个问题。
    【解决方案7】:

    刚刚通过 Homebrew 安装了 MongoDB。在安装控制台的最后,可以看到如下输出:

    启动 mongodb:

    brew services start mongodb
    

    或者,如果您不想要/不需要后台服务,您可以运行:

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

    所以,brew services start mongodb,成功地为我运行了 MongoDB 作为服务。

    【讨论】:

      【解决方案8】:

      第一步

      在你的linux机器上安装mongodb

      apt install mongodb-client && apt install mongodb-server

      第二步是

      如果需要,可以更改数据库路径而不是系统默认路径。
      请按照以下步骤自行更改。

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

      并在您的 Windows 机器上执行此操作,只需放置一个 --install 标志即可。 您必须收到一条成功的消息。

      最好的问候...

      【讨论】:

        【解决方案9】:

        在 macOS 10.13.6 和 MongoDB 4.0 上

        我无法从 mongo shell 连接到 localhost

        我开始使用 MongoDB:

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

        我发现 'mongod.conf' 有:

        bindIp: 127.0.0.1

        将我的 JavaScript 连接从 localhost 更改为 127.0.0.1,它运行良好。

        MongoDB Compass 也是如此。

        【讨论】:

          【解决方案10】:

          mongod 没有为我启动守护进程,但在我运行以下命令后,它开始工作:

          'mongod --fork --logpath /var/log/mongodb.log'
          

          (来自这里:https://docs.mongodb.com/manual/tutorial/manage-mongodb-processes/

          【讨论】:

            【解决方案11】:

            通过 brew 安装 mongodb 后,运行以下命令使其启动并运行:

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

            【讨论】:

            • 这与五年前@Rejeev-Divakaran 提供的答案相同。请务必在提交新答案之前检查现有答案。如果有人建议您采用相同的方法,则适当的行动是对其进行投票——我相信,您将在获得四个声望点后获得特权。
            猜你喜欢
            • 2012-01-19
            • 2010-12-06
            • 2010-11-24
            • 2013-04-03
            • 1970-01-01
            • 2012-01-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多