如何在Ubuntu 16.04 LTS上运行Mongodb作为服务? 几天前我将服务器升级到Ubuntu 16.04。我注意到我重启时我的MongoDB服务没有启动。 试图使用
sudo initctl start mongod
没有做到这一点。 任何人都知道如何解决这个问题?
答案 0 :(得分:73)
任何升级或安装Ubuntu 16.04(也称为Ubuntu Xenial xerus)的人都注意到一些旧服务停止运行。 此问题在15.04版中已知,但我将重点关注上述版本。
这是MongoDB的情况。简而言之,Ubuntu从新贵转移到了systemd。解决这些问题的一个常见解决方案是切换回新贵。我不认为这个选项是一个真正的解决方案,当然不是长期的。
该问题的真正解决方案(IMHO)是编写将启动MongodDB的systemd脚本。不幸的是,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
用户 - 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
参考文献:
答案 4 :(得分:0)
sudo systemctl start mongod
在Ubuntu Linux 16.04上对我有用的是