【问题标题】:Running mongodb on ubuntu 16.04 LTS在 ubuntu 16.04 LTS 上运行 mongodb
【发布时间】:2016-08-29 02:12:36
【问题描述】:

如何在 Ubuntu 16.04 LTS 上将 Mongodb 作为服务运行? 几天前,我将服务器升级到了 Ubuntu 16.04。我注意到我的 MongoDB 服务在我重新启动时没有启动。 尝试使用

sudo initctl start mongod

没有成功。 有人知道如何解决这个问题吗?

【问题讨论】:

    标签: mongodb ubuntu systemctl


    【解决方案1】:

    任何升级或安装 Ubuntu 16.04(也称为 Ubuntu Xenial xerus)的人都注意到一些旧服务停止运行。 这个问题从 15.04 版本就知道了,但我会重点关注上面的版本。

    这就是我对 MongoDB 的情况。长话短说,Ubuntu 从新贵转向了 systemd。对于这些问题,一种常见的解决方案是切换回新贵。我不认为该选项是真正的解决方案,从长远来看肯定不是。

    该问题的真正解决方案(恕我直言)是编写将启动 MongodDB 的 systemd 脚本。不幸的是,MongoDB 的人还没有提供一个。

    所以我不得不从头开始写一个。要创建您自己的一个,请按照以下步骤操作:

    1. 切换到根使用 须藤

    或使用 sudo 执行以下所有步骤。

    1. 创建一个服务脚本(在这个例子中服务的名字是Mongodb)

      纳米/lib/systemd/system/mongodb.service
    2. 文件内容应该是

      [单元] 描述=MongoDB 数据库服务 想要=network.target 之后=network.target [服务] ExecStart=/usr/bin/mongod --config /etc/mongod.conf ExecReload=/bin/kill -HUP $MAINPID 重启=总是 用户=mongodb 组=mongodb 标准输出=系统日志 标准错误=系统日志 [安装] WantedBy=多用户.target

    您也可以从这里下载文件: mongodb.service
    以下是重要字段的简要说明:
    ExecStart - 是要运行的命令。 Mongo自己安装在/usr/bin下,配置文件写在/etc
    User - mongod进程的uid。
    Group - gid mongod 进程。请注意,用户和组是由安装创建的。

    现在开始 mongodb:

    sudo systemctl start mongodb
    

    停止使用 mongodb 服务:

    sudo systemctl stop mongodb
    

    在启动时启用 mongodb

    sudo systemctl enable mongodb.service
    

    如果您需要刷新服务,请使用:

     sudo systemctl daemon-reload
    

    【讨论】:

    • 我一直看到这条消息:Failed to start mongodb.service: Unit mongodb.service is masked. 这是什么意思? ://
    • 更新:我做了一个sudo apt-get install --reinstall mongodb,现在一切都很好。感谢这个人:ubuntuforums.org/…
    • 嗨。当您第一次尝试运行 mongodb 时,使用 mongod,所有新生成的文件都具有 root 权限。这不好,因为 mongodb 使用自己的用户组运行。
    • 我不得不修改它以使用 /etc/mongodb.conf 而不是 /etc/mongod.conf - 但除此之外它运行良好。谢谢。
    【解决方案2】:

    最新版本的 MongoDB 目前做了大部分事情,除了一件事。 在Ubuntu 16.04.x上安装MongoDB后,运行如下命令:

    $ sudo systemctl enable mongod.service
    $ sudo systemctl daemon-reload
    

    现在mongod 很可能会在每次启动时自动启动。


    此解决方案也适用于出现此错误:

    无法启动 mongod.service:未找到单元 mongod.service。

    运行上面的命令后,下面的命令就开始工作了:

    $ sudo service mongod start
    $ mongo
    

    同样,安装的所有服务都必须启用才能运行。 例如,在安装 Ops Manager(a.k.a MMS)后,文档说要运行下面的命令。

    $ sudo systemctl start mongodb-mms.service

    很可能 Ubuntu 没有启动该服务。因为它还没有启用。要启用它,只需运行以下命令:

    $ sudo systemctl enable mongodb-mms.service
    $ sudo systemctl daemon-reload
    

    然后尝试启动服务:

    $ sudo systemctl enable mongodb-mms.service
    

    就是这样……

    【讨论】:

    • 谢谢兄弟,你救了我的一天
    • 其他建议的解决方案在我的 Ubuntu 16.04 和 MongoDB 3.4.1 上不起作用。这个做到了。
    • 谢谢,刚刚在 Ubuntu 16.04.3 LTS 上成功安装了 MongoDB 版本 3.4.10
    • sudo systemctl enable mongodb.service 在 Ubuntu 18 LTS 上为我工作
    • 这对我来说是最好的答案
    【解决方案3】:

    对于想要全新安装的用户

    我已经为此苦苦挣扎了 1 个小时。然后我找到this page 安装就这么简单:

    sudo apt-get update
    sudo apt-get install mongodb
    

    然后检查是否一切正常:

    sudo service mongodb status

    让我知道这是否适合你!

    【讨论】:

    • 这里是status 命令输出:mongodb.service | Loaded: not-found (Reason: No such file or directory) | Active: inactive (dead) 在 Ubuntu 16.04 上。
    • 是的,它在 Ubuntu 16.04(Xenial) 中运行。这是终端输出:- ● mongodb.service - 一个面向对象/文档的数据库 已加载:已加载(/lib/systemd/system/mongodb.service;已启用;供应商预设:已启用) 活动:自 2016 年星期五以来处于活动状态(运行)- 12-02 20:57:58 IST; 14 分钟前 Docs: man:mongod(1) Main PID: 9827 (mongod) CGroup: /system.slice/mongodb.service └─9827 /usr/bin/mongod --config /etc/mongodb.conf Dec 02 20:57 :58 bhabani-X550CC systemd[1]: 启动了一个面向对象/文档的数据库。
    • 我也收到非活动(死)消息。但它的工作。
    • 它的 mongod 不是 mongodb
    • @chovy 我不这么认为。你在说什么命令?
    【解决方案4】:

    3.2+ 的软件包包含新贵脚本。

    首先关注官方instructions to install

    # If you installed the ubuntu package, remove it, if not skip to key import
    sudo apt-get remove mongodb
    sudo apt-get autoremove
    # import key
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
    # add trusty repos
    echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
    # update apt
    sudo apt-get update
    # install the package
    sudo apt-get install -y mongodb-org
    

    然后取消屏蔽mongodb.service 作业(并启用并启动它)。我相信它被掩盖了,因为该软件包还包括一个新贵的工作,所以你不希望他们两个都开始。然而,在我们的例子中,这显然是我们想要的。

    sudo systemctl unmask mongodb
    sudo service mongod start
    

    参考资料:

    relevant JIRA issue

    related question on Ask Ubuntu

    【讨论】:

    • 我的问题是关于 MongoDb 的旧版本 (3.0.5)。但是感谢您的解释
    • sudo systemctl unmask mongodb 是在 ubuntu 16.04 上为我解决此问题的缺失部分
    • 在 Ubuntu 16.04 中,sudo service mongodb enable 总是出现 mongodb: unrecognized service 错误。但提供的说明很有帮助,请点赞。
    • 你如何让它在启动时启动呢?我正在使用这个版本,但是当我重新启动服务器时,mongod 没有出现。
    【解决方案5】:
    sudo systemctl start mongod
    

    在 Ubuntu Linux 16.04 上对我有用

    【讨论】:

    • 好吧,是时候修复它了。在发帖时,他们有存储库链接问题......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多