问题描述
如何在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的人还没有提供一个。
所以我不得不从头开始写一个。要创建自己的一个,请按照下列步骤操作:
-
使用sudo su切换到root
或将sudo用于以下所有步骤。
-
创建服务脚本(在此示例中,服务名称为Mongodb)nano /lib/systemd/system/mongodb.service
-
文件内容应为[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
参考文献:
related question on Ask Ubuntu