在ubuntu 16.04 LTS上运行mongodb

时间:2016-05-03 20:55:11

标签: mongodb ubuntu systemctl

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

sudo initctl start mongod

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

5 个答案:

答案 0 :(得分:73)

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

这是MongoDB的情况。简而言之,Ubuntu从新贵转移到了systemd。解决这些问题的一个常见解决方案是切换回新贵。我不认为这个选项是一个真正的解决方案,当然不是长期的。

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

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

  1. 使用切换到root
    sudo su
    
  2. 或者使用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
      
    3. 您也可以从这里下载文件: mongodb.service
      以下是重要字段的简要说明:
      ExecStart - 是否要运行命令。 Mongo将自己安装在/ usr / bin下,配置文件写在/ etc
      用户 - mongod进程的uid - mongod进程的gid。请注意,用户和组是由安装创建的。

      现在开始mongodb:

      sudo systemctl start mongodb
      

      停止使用mongodb服务:

      sudo systemctl stop mongodb
      

      在启动时启用mongodb

      sudo systemctl enable mongodb.service
      

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

       sudo systemctl daemon-reload
      

答案 1 :(得分:34)

最新版本的MongoDB除了现在的一件事之外还做了很多事情。 在MongoDB上安装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(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

全部......

答案 2 :(得分:22)

对于想要全新安装的人

我一直在努力奋斗1小时。然后我找到了this page 安装就像这样简单:

sudo apt-get update
sudo apt-get install mongodb

然后检查一切是否有效:

sudo service mongodb status

请告诉我这是否适合您!

答案 3 :(得分:20)

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 mongodb enable
sudo service mongodb start

参考文献:

relevant JIRA issue

related question on Ask Ubuntu

答案 4 :(得分:0)

sudo systemctl start mongod

在Ubuntu Linux 16.04上对我有用的是