在Linux/OS X上启动mongod服务的正确方法是什么?

141

我已经安装了MongoDB,并且可以运行它,使用它,进行简单的数据库读写操作。现在我想在我的Mac上将mongod设置为服务。

当我输入以下命令时,出现"Command not found":

 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上使用此链接完成了操作(https://dev59.com/A3E95IYBdhLWcg3wI6jt),不确定在Mac OS上是否相同。 - Scott
谢谢Scott,不过我也看到并尝试了你的线程中的内容,“error command line: unknown option install”。 - Alex C
11个回答

152

编辑:现在你应该使用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在被接受的答案中的评论指向了一个未知的文件。 - Matt Fletcher
5
我更喜欢这个方案,而不是被接受的答案。复制上面答案中的 plist,在更新mongo时会使事情变得稍微困难一些;你必须记住根据需要更新路径。然而,使用homebrew建议的符号链接可以为您解决此问题。我采用了这种方法,并使用了上面答案中的别名(将org.mongodb.mongod替换为homebrew.mxcl.mongodb),现在一切运作良好。 - verboze
2
我尝试了这个解决方案,但我使用的数据库“消失”了!我相信原因是:Homebrew提供的默认plist将mongod配置存储在/usr/local/etc/mongod.conf。此配置将dbpath指定为/usr/local/var/mongodb,而不是默认值/data/db。只是想在发生类似问题时提醒其他人注意。为了让我的数据库再次出现,我必须卸载并删除符号链接。 - ttemple
1
注意:在tmux中使用launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist可能会出现一些问题。 - the
@ttemple,你有没有想过如何撤销所有这些操作? - Timeless

129

最近的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需要通过窗口服务器显示信息吗?它需要成为一个“launch agent”,还是将其作为“launch daemon”足够了? - Marius Butuc
23
提醒使用OSX的用户:我通过homebrew安装了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),它就能很好地工作。 - Jakob Jingleheimer
5
你最好向下滚动查看Mario Alemi的答案 ;) - octavian
/Library/LaunchAgents/homebrew.mxcl.mongodb.plist:没有这个文件或目录。 - user269867
首先:MongoDB有自己的官方Homebrew Tap,您应该使用它来安装社区版。 $ brew tap mongodb/brew 然后使用 $ brew install mongodb-community 进行安装。至于服务方面,如果您运行 $ brew services,Homebrew现在已经包含了该Tap,因此无需进行任何操作。 另外,关于启动服务,如果您只需要在登录后使用MongoDB(作为开发服务器而非生产服务器),请使用 ~/Library/LaunchAgents/ 目录而不是系统 /Library/LaunchDeamons,后者需要root权限。 - C. Sederqvist

75

Homebrew的services tap将公式与launchctl管理器集成。添加它很容易:

brew tap homebrew/services
您可以使用以下命令启动MongoDB(这也会在启动时启动MongoDB):
brew services start mongodb

你也可以使用 stoprestart

brew services stop mongodb
brew services restart mongodb

4
喜欢这个答案,但发现Brew将会在未来删除服务。使用 "brew services start mongodb" 命令会出现警告:Brew services 不受支持,不久将被删除。 - smile2day
1
这是个令人遗憾的消息。目前它只是被弃用了,这意味着它将在某个时候被移除,但它仍然可以使用。希望有人能自愿维护它作为一个tap。当它被移除或者有一个tap可用时,我会更新我的答案。 - Gergo Erdosi
1
https://robots.thoughtbot.com/starting-and-stopping-background-services-with-homebrew - Igor Shubovych
谢谢,我已经更新了我的答案并附上了新的说明。 - Gergo Erdosi
1
谢谢你的回答。@iplus26,它对我仍然有效。 - Phil
显示剩余2条评论

14

3

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

启动MongoDB:

brew services start mongodb

或者,如果您不需要后台服务,只需运行以下命令:

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

因此,brew services start mongodb成功地将MongoDB作为服务运行。

2
我在Mac端进行了一些调查。你可能想使用这里的安装程序,因为它看起来可以为您完成所有设置,自动在Mac OS上启动。唯一的缺点是它似乎使用的是相当古老的mongo版本。
此链接here还解释了如何设置在Mac上将mongo自动启动为后台服务。

1
链接不再可用。 - Hoppo
1
不确定是否完全相同,但已修复链接以便转到解释相同概念的文章。 - Scott

1

第一步

在你的Linux机器上安装MongoDB

使用以下命令安装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标志就可以这样做。您必须获得一个成功的消息。

最好的问候...


0

在macOS 10.13.6上使用MongoDB 4.0

我无法从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

-1
mongod --dbpath [path_to_data_directory]

2
OP想要将其作为服务运行,而不是交互式地运行。一个好的答案应该直接解决这个问题。 - paulmelnikow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接