42

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

sudo initctl start mongod

没有做到这一点。任何人都知道如何解决这个问题?

4

5 回答 5

86

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

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

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

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

  1. 切换到root使用
    须藤
    

或使用 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
用户- mongod 进程的 uid。
Group - mongod 进程的 gid。请注意,用户和组是由安装创建的。

现在启动 mongodb:

sudo systemctl start mongodb

要停止 mongodb 服务,请使用:

sudo systemctl stop mongodb

在启动时启用 mongodb

sudo systemctl enable mongodb.service

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

 sudo systemctl daemon-reload
于 2016-05-03T20:59:35.157 回答
38

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

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

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


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

启动 mongod.service 失败:未找到单元 mongod.service。

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

$ sudo service mongod start
$ mongo

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

$ sudo systemctl start mongodb-mms.service

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

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

然后尝试启动服务:

$ sudo systemctl enable mongodb-mms.service

就这样...

于 2016-10-06T09:36:23.537 回答
26

对于想要全新安装的人

我已经为此苦苦挣扎了 1 个小时。然后我发现这个页面 安装就像做一样简单:

sudo apt-get update
sudo apt-get install mongodb

然后检查是否一切正常:

sudo service mongodb status

让我知道这是否适合您!

于 2016-07-05T01:44:13.690 回答
23

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

首先,按照官方说明安装

# 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

参考:

相关的 JIRA 问题

Ask Ubuntu 上的相关问题

于 2016-05-05T18:57:54.807 回答
0
sudo systemctl start mongod

在 Ubuntu Linux 16.04 上对我有用

于 2019-07-26T12:44:44.160 回答