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

Fer*_*cci 12 upstart services mongodb systemd 15.10

MongoDB 仅支持 Ubuntu 长期支持 (LTS) 版本。最后一个是 Ubuntu 14.04 LTS,其中 init 进程由 Canonical 专有的 Upstart 管理。但是,我将 Ubuntu 15.10 与 Linux 标准 SystemD init 进程一起使用。所以我无法在启动时启动 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.
Run Code Online (Sandbox Code Playgroud)

我正在运行来自https://docs.mongodb.org/master/tutorial/install-mongodb-on-ubuntu/的官方 MongoDB 3.2 社区版 (mongodb-org),而不是来自 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
Run Code Online (Sandbox Code Playgroud)

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

Fer*_*cci 30

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

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

> sudo apt-get remove mongodb-org
> sudo apt-get install mongodb
Run Code Online (Sandbox Code Playgroud)

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

> 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
Run Code Online (Sandbox Code Playgroud)

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

> systemctl list-unit-files --type=service
...
mongodb.service             disabled
...
Run Code Online (Sandbox Code Playgroud)

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

> sudo systemctl enable mongodb.service
Run Code Online (Sandbox Code Playgroud)

再检查一遍:

> systemctl list-unit-files --type=service 
...
mongodb.service             enabled
...
Run Code Online (Sandbox Code Playgroud)

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

> systemctl status mongodb
> sudo systemctl stop mongodb
> sudo systemctl start mongodb
> sudo systemctl restart mongodb
Run Code Online (Sandbox Code Playgroud)

享受!


sta*_*ter 7

在从 MongoDB 存储库默认安装时,为了自动启动mongod服务,您需要做的就是启用 system.d 服务:

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

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