在 linux / OS X 上启动 mongod 服务的正确方法是啥?
Posted
技术标签:
【中文标题】在 linux / OS X 上启动 mongod 服务的正确方法是啥?【英文标题】: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 上使用此链接 (***.com/questions/2438055/…) 完成,不确定在 Mac OS 上是否相同。 谢谢 Scott,不,我也看过并尝试过你的帖子error command line: unknown option install
【参考方案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.plist
在 tmux
中有些奇怪
@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
您也可以使用stop
或restart
:
brew services stop mongodb
brew services restart mongodb
【讨论】:
喜欢这个答案,但发现 brew 将来会删除服务。 brew services start mongodb 警告:brew services 不受支持,很快就会被删除。 这是个不幸的消息。目前它刚刚被弃用,这意味着它会在某个时候被删除,但它仍然有效。希望有人会自愿维护它作为水龙头。当它被删除或点击可用时,我会更新我的答案。 robots.thoughtbot.com/… 它已经被删除了,因为我在尝试这种方式时看到了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 提供的答案相同。请务必在提交新答案之前检查现有答案。如果有人建议您采用相同的方法,则适当的行动是对其进行投票——我相信,您将在获得四个声望点后获得特权。以上是关于在 linux / OS X 上启动 mongod 服务的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 Mac OS X 上使用 Eclipse CDT 调试远程 Linux 应用程序
linux下service mongod start启动报错