在 Ubuntu 15.10 上将 MongoDB 服务作为 SystemD 的守护进程运行

在 Ubuntu 15.10 上将 MongoDB 服务作为 SystemD 的守护进程运行

MongoDB 仅支持 Ubuntu 长期支持 (LTS) 版本。最后一个是 Ubuntu 14.04 LTS,其中 init 进程由 Canonical 专有的 Upstart 管理。但是我使用的是带有 Linux 标准 SystemD init 进程的 Ubuntu 15.10。所以我无法在启动时启动 MongoDB 服务。

当我读取服务状态或尝试启动它时,显示消息“加载失败”:

> systemctl status mongod
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
> sudo systemctl start mongod
Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.

我正在运行官方的 MongoDB 3.2 社区版(mongodb-org)https://docs.mongodb.org/master/tutorial/install-mongodb-on-ubuntu/不是来自 Ubuntu 存储库的 MongoDB 2.6 元包 (mongodb)。

> sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
> 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
> sudo apt-get update
> sudo apt-get install -y mongodb-org

有人知道如何使用 SystemD 启动 MongoDB 吗?

答案1

我设法在启动时使用 SystemD 启动 MongoDB 服务:

我卸载了官方元包 (mongodb-org) v3.2,然后从 Ubuntu 存储库安装了元包 (mongodb) v2.6:

> sudo apt-get remove mongodb-org
> sudo apt-get install mongodb

创建服务配置文件如下所示:

> cd /lib/systemd/system
> sudo touch mongodb.service
> sudo nano mongodb.service
[Unit]
Description=An object/document-oriented database
Documentation=man:mongod(1)
After=network.target

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb.conf

[Install]
WantedBy=multi-user.target

使用以下命令在列表中验证该服务是否已启用或禁用:

> systemctl list-unit-files --type=service
...
mongodb.service             disabled
...

如果它被禁用或不在列表中,请启用它:

> sudo systemctl enable mongodb.service

再检查一遍:

> systemctl list-unit-files --type=service 
...
mongodb.service             enabled
...

现在您可以在 SystemD init 进程上管理服务:

> systemctl status mongodb
> sudo systemctl stop mongodb
> sudo systemctl start mongodb
> sudo systemctl restart mongodb

享受!

答案2

默认从 MongoDB 存储库安装,以便自动启动蒙哥服务,您需要做的就是启用 system.d 服务:

systemctl enable mongod.service(注意 mongod服务名称,不是mongodb

注意:这在带有 systemd 的 Debian/GNU Jessie 8.x 和 Ubuntu Xerus 16.04 LTS 上都进行了测试。

相关内容