如何在Ubuntu 16.04 LTS上作为服务运行Mongodb? 几天前我将我的服务器升级到Ubuntu 16.04。我发现当我重新启动后,我的MongoDB服务没有启动。 尝试使用
sudo initctl start mongod
并不能解决问题。 有人有想法如何解决吗?
任何升级或安装Ubuntu 16.04(也称为Ubuntu Xenial Xerus)的人都会注意到一些旧服务停止运行了。这个问题从版本15.04就已经存在,但我将重点关注上述版本。
我的情况与MongoDB类似。简而言之,Ubuntu从upstart转向systemd。对于这些问题的一个常见解决方案是切换回upstart。我不认为这是一个真正的解决方案,特别是从长远来看。
问题的一个真正解决方案(在我看来)是编写一个systemd脚本来启动MongodDB。不幸的是,MongoDB的开发者尚未提供这样的脚本。
因此,我不得不从头开始编写一个。按照以下步骤创建自己的脚本:
sudo su
或在以下所有步骤中使用sudo。
创建一个服务脚本(在本例中服务名称为Mongodb)
nano /lib/systemd/system/mongodb.service
文件内容应为
[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
最新版本的MongoDB现在可以完成大部分工作,但目前还有一件事情无法实现。
在Ubuntu 16.04.x上安装MongoDB后,请按以下方式运行命令:
The latest version of MongoDB does most of things except one thing for now.
After installing the MongoDB
on Ubuntu 16.04.x
, run the commands as follows:
$ 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
就这些了...
我为此苦苦挣扎了一个小时。后来我找到了这个页面,安装只需要执行以下步骤:
sudo apt-get update
sudo apt-get install mongodb
然后检查一下是否一切正常:
sudo service mongodb status
如果这个方法能够运作,请告诉我!
mongod
而不是 mongodb
。 - chovy3.2+版本的软件包包含了upstart脚本。
首先按照官方安装说明进行安装:
# 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
工作(并启用和启动它)。我相信它被屏蔽是因为该软件包还包括upstart工作,因此您不希望两者同时启动。然而,在我们的情况下,这显然是我们想要的。
sudo systemctl unmask mongodb
sudo service mongod start
参考文献:
sudo systemctl unmask mongodb
是在 Ubuntu 16.04 上解决此问题的关键步骤。 - P1xtsudo service mongodb enable
命令时,经常会出现“mongodb:unrecognized service”错误。但提供的指令很有帮助,点赞。 - naXa stands with Ukrainesudo systemctl start mongod
这是在Ubuntu Linux 16.04上对我有效的方法
Failed to start mongodb.service: Unit mongodb.service is masked.
这是什么意思? :/ - IIllIIllsudo apt-get install --reinstall mongodb
,现在一切正常。感谢这位网友:http://ubuntuforums.org/showthread.php?t=2275509&p=13273670#post13273670 - IIllIIll