MongoDB 2.6无法在Ubuntu 15.04上启动

我在干净安装的Ubuntu 15.04上安装了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存储库安装,它工作正常。

首先确保删除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单元文件。也不难写一个。我有。)

具体来说:你会在Ubuntu 15版的mongodb-server 2.6版包中找到这样的服务单元 。 所以只需安装该软件包。

(请注意,Debian / Ubuntu提供的服务单元不应用mongo推荐的systemd服务单元指令 。)

进一步阅读

我创建了一个似乎适用于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设置数据目录

这不是最好的答案吗? 来自重复的问题:@sclausen的https://askubuntu.com/a/694226/255468


这只是缺少systemd的服务文件。 无需像Kartik那样回到新贵,或者使用与https://docs.mongodb.org/manual/installation/中描述的不同的存储库。

使用以下内容创建文件/lib/systemd/system/mongodb.service:

 [Unit] Description=High-performance, schema-free document-oriented database After=network.target [Service] User=mongodb ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb.conf [Install] WantedBy=multi-user.target 

https://jira.mongodb.org/browse/SERVER-17742

似乎在Ubuntu 16.04之前,这可能不会完全修复> 2.6.3,除非有强烈抗议。

所以我的解决方案是发布:

 sudo apt-get install --reinstall mongodb 

用“mongodb”代替“mongod”

 sudo service mongodb start sudo service mongodb stop 

其中许多答案都与Mongo 3.0有关,而问题则特别针对2.6。

我使用10gen的Debian存储库成功安装了2.6。 这似乎与Ubuntu 15.04完美配合。

 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list sudo apt-get update sudo apt-get install mongodb-org 

来源: 如何在Ubuntu 14.10,14.04和12.04 LTS上安装MongoDB 2.6

问题是版本2.6。 我得到完全相同的错误Unit mongod.service failed to load我的Ubuntu 15.04 3.0.6版。 最终解决使用上面Dielson Sales提到的相同的wheezy存储库。

安装后(按照@Dielson Sales详细介绍的步骤)遇到上述错误。 这是我最终解决的方式。

A)将MongoDB的默认数据存储文件从/ var / lib / mongodb更改为/ data / db

  • 首先创建新的/ data / db目录sudo mkdir -p /data/db

  • 打开mongod.conf文件sudo gedit /etc/mongod.conf并更改“dbpath”行,如下所示

  • dbpath = / var / lib / mongodb替换 dbpath = / data / db并保存文件。

  • 然后删除旧的默认/ var / lib / mongodb

  • 现在我们必须使mongod用户拥有所有目录/文件

B)所以运行sudo chown -R mongodb:mongodb /data/db

现在终于可以用sudo service mongod start启动mongo了

并且chcek服务正在运行sudo systemctl status mongod – 它应该显示类似于下面的消息

Loaded: loaded (/etc/init.d/mongod)

Active: active (running) since Thu 2015-09-03 04:57:49 IST; 7s ago

在我的博客文章中详细介绍了我的步骤

首先,下载mongodb:

 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 

提取下载:

 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz 

使用-dbpath属性运行mongod(mongodb-linux-x86_64-3.0.6.tgz / bin / mongod):

 sudo ./mongod --dbpath /path/of/the/directory 

它可以是任何您选择的空目录

最后,运行mongo(mongodb-linux-x86_64-3.0.6.tgz / bin / mongo)

 ./mongo 

在我的ubuntu 15上工作:)

抱歉我的英语不好,我住在巴西

在搜索数小时后,解决方案是使用以下命令将我的ubuntu从15.04升级到16.04:

步骤1

 sudo do-release-upgrade -d 

它需要几分钟,所以不要惊慌,因为你必须删除mongodb:

第2步

 sudo apt-get purge mongodb-org sudo apt-get autoremove` rm /etc/apt/sources.list.d/mongodb-org-3.0.list` 

现在,安装mongodb但使用此源:

 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 

第3步

 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 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 mongodb-org sudo service mongod status 

就是这样。

注意:如果您在第一行收到类似’E:类型’deb’的错误。 。 。 在文件mongodb-org-3.0.list中

您所要做的就是使用gedit获取此文件并删除句子的开头和结尾处的’。

Ubuntu 15.04+使用systemd而不是upstart 。 从MongoDB的官方安装指南开始 。 然后使用他们的官方mongod.service

 [Unit] Description=High-performance, schema-free document-oriented database [Service] User=mongod Group=mongod Environment="OPTIONS=--quiet -f /etc/mongod.conf" ExecStart=/usr/local/bin/mongod $OPTIONS run PIDFile=/var/run/mongodb/mongod.pid [Install] WantedBy=multi-user.target 

下载,修补,安装服务和设置目录+权限

 $ curl -OL https://raw.githubusercontent.com/mongodb/mongo/1663f45b4e33e058a0203a81f50574a870882c34/rpm/mongod.service $ sed -i 's/\/usr\/local/\/usr/g' mongod.service $ sed -i '/Desc/a After=network.target' mongod.service $ sudo sed -i '0,/\/var\/lib\/mongodb/s//\/data\/db/' /etc/mongod.conf $ sudo cp mongod.service /lib/systemd/system/mongo.service $ sudo mkdir -p /data/db $ sudo chown -R mongodb:mongodb /data $ sudo systemctl daemon-reload $ sudo systemctl enable mongod 

开始服务

 $ sudo systemctl start mongod 

检查服务状态

 $ sudo systemctl status mongod 

你在命令中犯了错字。

尝试使用它: sudo service mongodb start