如何在 Ubuntu 16.04 LTS 上将 Mongodb 作为服务运行?几天前,我将服务器升级到了 Ubuntu 16.04。我注意到我的 MongoDB 服务在我重新启动时没有启动。尝试使用
sudo initctl start mongod
没有做到这一点。任何人都知道如何解决这个问题?
任何升级或安装 Ubuntu 16.04(也称为 Ubuntu Xenial xerus)的人都注意到一些旧服务停止运行。这个问题从 15.04 版本就知道了,但我将重点关注上面的版本。
这就是我对 MongoDB 的情况。长话短说,Ubuntu 从新贵转向了 systemd。对于这些问题,一种常见的解决方案是切换回新贵。我不认为该选项是真正的解决方案,从长远来看肯定不是。
该问题的真正解决方案(恕我直言)是编写将启动 MongodDB 的 systemd 脚本。不幸的是,MongoDB 的人还没有提供一个。
所以我不得不从头写一个。要创建您自己的一个,请按照下列步骤操作:
须藤
或使用 sudo 执行以下所有步骤。
创建一个服务脚本(在这个例子中,服务的名称是 Mongodb)
纳米/lib/systemd/system/mongodb.service
文件内容应该是
[单元] 描述=MongoDB 数据库服务 想要=network.target 之后=network.target [服务] ExecStart=/usr/bin/mongod --config /etc/mongod.conf ExecReload=/bin/kill -HUP $MAINPID 重启=总是 用户=mongodb 组=mongodb 标准输出=系统日志 标准错误=系统日志 [安装] WantedBy=多用户.target
您也可以从这里下载文件:
mongodb.service
这里是重要字段的简要说明:
ExecStart - 是要运行的命令。Mongo 自己安装在 /usr/bin 下,配置文件写在 /etc
用户- 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 做了大部分的事情,除了一件事。安装MongoDB
on后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(又名 MMS)之后,文档说要运行下面的命令。
$ sudo systemctl start mongodb-mms.service
很可能 Ubuntu 没有启动该服务。因为它还没有启用。要启用它,只需运行以下命令:
$ sudo systemctl enable mongodb-mms.service
$ sudo systemctl daemon-reload
然后尝试启动服务:
$ sudo systemctl enable mongodb-mms.service
就这样...
我已经为此苦苦挣扎了 1 个小时。然后我发现这个页面 安装就像做一样简单:
sudo apt-get update
sudo apt-get install mongodb
然后检查是否一切正常:
sudo service mongodb status
让我知道这是否适合您!
3.2+ 的软件包包含新贵脚本。
首先,按照官方说明安装:
# 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
参考:
sudo systemctl start mongod
在 Ubuntu Linux 16.04 上对我有用