运行 mongodb ubuntu 16.04 LTS

Running mongodb on ubuntu 16.04 LTS

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

sudo initctl start mongod

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

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

MongoDB 就是我的情况。长话短说,Ubuntu 从 upstart 转向 systemd。对于这些问题,一种常见的解决方案是切换回新贵。我不认为该选项是真正的解决方案,当然不会长久 运行。

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

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

  1. 切换到root使用
    sudo su
    

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

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

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

    [Unit]
    Description=MongoDB Database Service
    Wants=network.target
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/mongod --config /etc/mongod.conf
    ExecReload=/bin/kill -HUP $MAINPID
    Restart=always
    User=mongodb
    Group=mongodb
    StandardOutput=syslog
    StandardError=syslog
    
    [Install]
    WantedBy=multi-user.target
    

您也可以从这里下载文件: mongodb.service
以下是重要字段的简要说明:
ExecStart - 是 运行 的命令。 Mongo 安装在 /usr/bin 下,配置文件写在 /etc
User - 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

3.2+ 的软件包包含 upstart 脚本。

首先关注官方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

对于想要全新安装的人

我为此苦苦挣扎了 1 小时。然后我发现this page 安装就像做一样简单:

sudo apt-get update
sudo apt-get install mongodb

然后检查是否一切正常:

sudo service mongodb status

让我知道这是否适合您!

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 (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

就这些了...

sudo systemctl start mongod

对我有用 Ubuntu Linux 16.04