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