当前位置: 首页>>技术教程>>正文


在Ubuntu 16.04 LTS上运行mongodb

, ,

问题描述

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

sudo initctl start mongod

没有做到绝招。有人知道如何解决这个问题吗?

最佳办法

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

我在MongoDB上就是这种情况。简而言之,Ubuntu从新贵转向了systemd。解决这些问题的一种常见解决方案是切换回新贵。我不认为该选项是真正的解决方案,从长远来看,当然不是。

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

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

  1. 使用sudo su切换到root

或将sudo用于以下所有步骤。

  1. 创建服务脚本(在此示例中,服务名称为Mongodb)nano /lib/systemd/system/mongodb.service

  2. 文件内容应为[Unit]描述= MongoDB数据库服务Wants = network.target之后= network.target [Service] ExecStart = /usr /bin /mongod –config /etc/mongod.conf ExecReload = /bin /kill -HUP $ MAINPID重新启动=始终用户= mongodb组= mongodb StandardOutput = syslog StandardError = syslog [安装] WantedBy = multi-user.target

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

现在启动mongodb:

sudo systemctl start mongodb

要停止mongodb服务,请使用:

sudo systemctl stop mongodb

在启动时启用mongodb

sudo systemctl enable mongodb.service

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

 sudo systemctl daemon-reload

次佳办法

最新版本的MongoDB可以执行大部分操作,但目前只执行一项操作。在Ubuntu 16.04.x上安装MongoDB之后,请运行以下命令:

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

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


如果出现此错误,此解决方案也适用:

Failed to start mongod.service: Unit mongod.service not found.

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

$ 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

就这样…

第三种办法

对于想要全新安装的人

我已经为此苦苦挣扎了一个小时。然后,我发现this page的安装过程非常简单:

sudo apt-get update
sudo apt-get install mongodb

然后检查是否一切正常:

sudo service mongodb status

让我知道这是否适合您!

第四种办法

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10298.html,未经允许,请勿转载。