问题描述
我在清洁安装的Ubuntu 15.04上运行installed MongoDB 2.6:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
sudo apt-get install -y mongodb-org
它完成没有任何问题。但是,当我尝试启动它时,我收到以下错误:
$ sudo service mongod start
Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.
我怎样才能解决这个问题?
最佳解决思路
我从debian wheeze repository安装,它工作正常。
首先确保删除mongodb-org包及其所有依赖项:
sudo apt-get purge mongodb-org
sudo apt-get autoremove
删除您创建的旧mongodb.list:
sudo rm /etc/apt/sources.list.d/mongodb.list
请改用Debian存储库:
echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
再次更新并安装:
sudo apt-get update
sudo apt-get install -y mongodb-org
之后,您可以成功启动服务器:
sudo service mongod start
要么
systemctl start mongod
(正如Ernie Hershey在回答Roman Gaufman的评论时所澄清的那样:https://jira.mongodb.org/browse/SERVER-17742)
次佳解决思路
MongoDB团队表示他们不支持Ubuntu 15.04并计划支持16.04(参见https://jira.mongodb.org/browse/SERVER-17742)。
Ubuntu 15.04将默认的init系统从Upstart推进到systemd。我没有成功使用systemd启动MongoDB 3.0。
您可以通过安装upstart-sysv
切换回Upstart:
sudo apt-get install upstart-sysv
然后重新启动,MongoDB应该启动。
我希望找到一种在Ubuntu 15.04上运行MongoDB的简单方法,而无需及时切换。
第三种解决思路
您是从直接从mongodb.org发布的软件包安装的。您应该从Ubuntu存储库中提供的软件包进行安装。 Debian /Ubuntu软件包已经使用systemd服务单元进行修补,以填补mongodb.org留下的漏洞。
(在WWW上不乏mongodb.service
单元文件。也不难写一个。我有。)
具体来说:你会在the mongodb-server version 2.6 package for Ubuntu version 15中找到such a service unit。所以只需安装该软件包。
(请注意,Debian /Ubuntu-supplied服务单元不适用于the mongo-recommended systemd service unit directives。)
进一步阅读
第四种思路
我创建了一个似乎适用于Ubuntu 15.04+和Mongo 3.0+的Systemd脚本:
[Unit]
Description=High-performance, schema-free document-oriented database
Documentation=man:mongod(1)
After=network.target
[Service]
Type=forking
User=mongodb
Group=mongodb
RuntimeDirectory=mongod
PIDFile=/var/run/mongod/mongod.pid
ExecStart=/usr/bin/mongod -f /etc/mongod.conf --pidfilepath /var/run/mongod/mongod.pid --fork
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
https://gist.github.com/benileo/ada486d73f58dd93a0ee
确保在/etc/mongod.conf
中设置数据目录