MongoDB 2.6无法在Ubuntu 15.04上启动


51

我在干净安装的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.

我怎样才能解决这个问题?

Answers:


65

我是从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 )


1
我尝试过启动,尝试启动mongod时找不到服务
Moshe Revah,2015年

2
确定要自动删除依赖项吗?我也知道,但是后来我意识到我还没有删除所有与mongodb相关的软件包。删除所有文件并从wheezy信息库安装后,它与systemd一起正常工作。
Dielson Sales 2015年

1
救了我很多头痛
Srivathsa Harish Venkataramana

1
谢谢。清除然后自动删除(几乎忘了它)可以解决问题。
Nenad Vukicevic,2015年

就我而言,在14.04上,但可能在15.04拖尾上/var/log/syslog/etc/init/mongodb.conf如果您使用的是非标准数据目录,日志目录或用户实例,则验证失败的尝试然后进行编辑也可能会有所帮助。
2015年

25

MongoDB团队表示,他们将不支持Ubuntu 15.04,而是计划支持16.04(请参阅https://jira.mongodb.org/browse/SERVER-17742)。

Ubuntu 15.04将默认的初始化系统从Upstart推进到systemd。使用systemd启动MongoDB 3.0我没有成功。

您可以通过安装切换回Upstart upstart-sysv

sudo apt-get install upstart-sysv

然后重新启动,MongoDB应该启动了。

我希望找到一种在Ubuntu 15.04上运行MongoDB的简单方法,而又不会及时切换。


2
目前,这是解决此问题的最佳方法。如果有人知道其他方法,请在这里分享。
费尔南多·科什

就我而言,安装upstart-sysv并重新启动只会崩溃。
Didac Montero

@DidacMontero 有关其他选择,请访问wiki.ubuntu.com/SystemdForUpstartUsers
Moshe Revah 2015年

在Ubuntu 15.04上为我工作,感谢您的解决方法!
Lil'Bits 2015年

这对我来说非常有效。
slimflem 2015年

4

您是从直接从mongodb.org发布的软件包中安装的。您应该从Ubuntu存储库中提供的软件包中进行安装。Debian / Ubuntu软件包已使用systemd服务单元进行了修补,以填补mongodb.org留下的漏洞。

mongodb.service在WWW上并不缺少单位文件。写一个也不难。我有。)

具体来说:在适用于Ubuntu版本15的mongodb-server版本2.6软件包中,您会找到这样的服务单元。因此,只需安装该软件包。

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

进一步阅读


但是,对于希望MongoDB> = 3.0的用户来说,这种方法无法解决问题
Dielson Sales 2015年

是的,它确实。您显然既没有阅读第二段也没有阅读进一步的内容。
JdeBP

4

我创建了一个似乎适用于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


1
这是最好的解决方案。
J. Bruni

链接不再有效
Hotbelgo

修复了链接。
benileo '16

当然,应将其标记为最佳解决方案。
Wédney尤里

1

这不是最好的答案吗?来自重复的问题:@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


1

使用“ mongodb”代替“ mongod”

sudo service mongodb start

sudo service mongodb stop

0

其中许多答案与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


0

问题是版本2.6。Unit mongod.service failed to load在版本3.0.6的Ubuntu 15.04中,我得到了完全相同的错误。最终使用与上面Dielson Sales提到的相同的仓库进行了解决。

并且在安装之后(按照@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的 TO DBPATH = /数据/ DB和保存文件。

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

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

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

现在终于可以开始使用mongo sudo service mongod start

和运行该服务的地方sudo systemctl status mongod -它应该显示类似于以下内容的消息

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

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

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


0

首先,下载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上工作:)

对不起,我英语不好,我住在巴西


0

经过数小时的搜索,解决方案是使用以下命令将我的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

第三步

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升级到16.04 ...”,目前尚无意义,因为16.04尚未发布。
clearkimura

1
@clearkimura是的。好吧,在Alpha中。无论如何,我的计算机上已经安装了Ubuntu 16.04的第二个每日构建版本,但我没有发现任何问题。
Star OS

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.