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 上都进行了测试。