【问题标题】:how do I start mongodb via /etc/init.d/mongodb with a config file?如何通过 /etc/init.d/mongodb 使用配置文件启动 mongodb?
【发布时间】:2012-02-24 22:06:51
【问题描述】:

我有一个指定备用端口的 mongo 配置文件:

deploy@ip-xxx-xxx-22-107 ~/app $ tail /etc/mongodb.conf
port = 27033

不是很复杂。我正在尝试使用基于文件的配置而不是命令行,这似乎是一个更好的主意。我在 Ubuntu 11 上。文档说:

在 MongoDB 的一些打包安装中(例如 Ubuntu 和 Debian), 默认文件可以在 /etc/mongodb.conf 中找到,即 从服务启动和停止 MongoDB 时自动使用

我绝对可以用 sudo /etc/init.d/mongodb restart 启动 mongo,但它从错误的端口 27017 开始:

deploy@ip-xxx-xxx-22-107 ~/app $ sudo lsof -iTCP | grep mongo
mongod     3594   mongodb    5u  IPv4 260392       TCP localhost:27017 (LISTEN)
mongod     3594   mongodb    7u  IPv4 260395       TCP localhost:28017 (LISTEN)

所以有 mongo,但不是正确的端口。每当我尝试将配置文件传递给 mongodb 命令时,都会出现错误:

 sudo /etc/init.d/mongodb -f /etc/mongodb.conf restart
 * ERROR: wrong args ( -f )

我怀疑/etc/init.d/mongodb 命令在启动 mongo 时没有传递我的配置请求。但是默认情况下应该根据文档读取配置文件。我的 Ubuntu 安装有问题吗(它在 PaaS 主机上)?使用/etc/init.d/mongodb 没有优势,所以我应该忽略它吗?我可以让它通过mongod -f /etc/mongodb.conf 读取配置文件,但我的文档说使用/etc/init.d/mongodb

【问题讨论】:

  • 你试过--config吗?相关:mongodb.org/display/DOCS/Command+Line+Parameters
  • @mindandmedia 是试过 -f 和 --config 相同的结果。
  • 应该读得更好,为时已晚。文件权限好吗?
  • @mindandmedia 我是这么认为的:-rw-r--r-- 1 root root 1MB Feb 24 22:18 mongodb.conf——这意味着 sudo 有读写权限,对吧?
  • 是的,确实如此。 (root 有权限,sudo 是一个命令)

标签: mongodb ubuntu-11.10


【解决方案1】:

你是从哪里安装 mongo 包的?如果您是从默认存储库安装的,那么您可能有一个非常旧的版本 - 我刚刚在 11.04 上尝试过(手边没有 11.10,抱歉),我得到了非常旧的 1.6.4(截至撰写本文时的当前稳定版本是 2.0.2)。

您应该删除您拥有的版本,然后从 10gen/MongoDB 存储库中添加一个。这样做的说明在这里:

http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages

这将为您提供最新的 mongod 版本,并可能解决您的问题,因为您似乎做事正确。

一旦你启动了 mongod,然后连接到它并尝试运行这个:

use admin
db.runCommand({getCmdLineOpts: 1})

这应该为您提供所有传递和解析的选项。 Docs page for the command 上显示了一个示例输出。它应该允许您查看 mongod 指向配置文件的位置以及从中解析的内容。

【讨论】:

  • > version() version: 2.0.2
  • 如果这很重要,我会在引擎场上托管。通过这篇博文安装了 2.02 二进制文件:blog.proudcloud.net/2010/09/…
  • 我已经修改了说明以深入挖掘。您可能想查看 /etc/init/mongod.conf 以了解作业是如何启动的(这是 Ubuntu 上默认的 upstart 文件位置)。
  • 我用sudo /etc/init.d/mongodb restart 启动了mongo,然后检查了命令行选项。那里没有配置文件(应该在 argv 数组中看到一个 .conf)。
  • 抱歉,我错过了这条评论 - 这里的结果是什么?我认为您基本上遇到了问题,即您没有从 init 脚本中引用配置文件。如果您使用官方软件包(请确保为 ubuntu 使用适当的选项),则会完成此操作。我刚刚在 11.04、11.10 上进行了测试,并且没有问题。例如,当您添加 10gen 存储库时,您是否安装了 mongodb-10gen?
猜你喜欢
  • 1970-01-01
  • 2018-05-24
  • 2015-01-24
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 2015-07-26
相关资源
最近更新 更多