微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MongoDB服务在初始安装后不会启动

我正在运行Fedora 20,并根据官方文档中的Red Hat安装指南安装MongoDB。 我能够第一次运行mongod守护程序作为服务而没有错误,但是当我closures我的机器并返回时,服务由于某种故障而拒绝启动。

在我的日志中,成功运行后列出,我看到这个:

***** SERVER RESTARTED ***** ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: No such file or directory

如果我尝试手动启动mongod或运行mongod --repair ,则在启动失败时收到此消息:

ERROR: dbpath (/data/db) does not exist. Create this directory or give existing directory in --dbpath.

这很奇怪,考虑到在/etc/mongod.confconfiguration文件中,数据库path的设置如下所示:

无法在Linux上启动Android模拟器

如何在我的Android中运行BASH脚本?

我怎样才能find我使用的Fedora版本?

XMonad不会用mod4Mask产生任何东西

我如何削减开始和结束使用Bash节?

dbpath=/var/lib/mongo

最后,如果我运行这个命令:

mongod --dbpath /var/lib/mongo

守护进程启动就好了。 但是,我无法复制启动服务的无错误行为。

谁能告诉我什么是错的,我怎么可以开始运行mongod作为服务?

编辑

我得到这个消息,如果我运行mongod --config /etc/mongod.conf :

about to fork child process,waiting until server is ready for connections. forked process: 2702 ERROR: child process Failed,exited with error number 1

/var/run/mongodb目录不存在,所以我创build并将其分配给mongod用户。 不幸的是,这并没有太大的区别。

我的/var/log/mongodb/mongod.log显示这个消息:

[initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /var/lib/mongo/mongod.lock errno:13 Permission denied Is a mongod instance already running?,terminating

RPM包规格本地化

启用共享库

如何从/ proc的C代码提取信息

Bashdate命令无效date

如何编写init脚本

Fedora 20对我有用:我们需要在每次启动时创建临时目录,并由systemd-tmpfiles处理。 所以,创建一个文件/lib/tmpfiles.d/mongodb.conf并在其中放入一行:

d /var/run/mongodb 0755 mongod mongod

这似乎处理重新启动; 如果您不想马上重新启动,可以使用以下命令执行:

sudo systemd-tmpfiles --create mongodb.conf

(请参阅systemd-tmpfiles的手册页)

我有同样的问题,我暂时解决,禁用SELinux,重新启动机器,消除了mongod.lock:

#rm /var/lib/mongo/mongod.lock

通过创建文件/var/run/mongodb/mongo.pid(如配置文件/etc/mongod.conf中所述):

#mkdir /var/run/mongodb #touch /var/run/mongodb/mongod.pid

并给予777权限:

#chmod 777 /var/run/mongodb/mongod.pid

并开始mongo:

#service mongod start

但重新启动机器后问题仍然存在。 该文件夹和文件消失。

我花了一段时间来看这个,看起来pid文件夹和文件的权限不能用认的守护进程。

我遇到的最简单的解决方案是禁用pid文件,只需在配置文件的前面放一行#即可。

vi /etc/mongod.conf

找到说pidfilepath = / var / run / mongodb / mongod.pid的行并相应地更改它。

# pidfilepath=/var/run/mongodb/mongod.pid

有关评论它的信息在这里检查。 http://docs.mongodb.org/manual/reference/configuration-options/#processManagement.pidFilePath

如果您使用以下方式将mongod作为服务启动:

sudo服务mongod启动

确保mongod.conf中为logpath,dbpath和pidfilepath定义的目录存在,并且由mongod:mongod拥有。

我在OpenSuse 13.2上运行mongodb 3.0.4时遇到了同样的问题,我发现/ var / run下的mongod目录缺失。 如果我手动创建目录,它将在重新启动后消失。

我通过将下列行添加到我的/etc/init.d/mongod启动脚本中解决了这个问题:

mkdir -p /var/run/mongod chown $MONGO_USER:$MONGO_GROUP /var/run/mongod

我们需要创建由systemd-tmpfiles处理的pidfile /var/run/mongodb的temp目录位置。 因此,以root身份创建一个文件/lib/tmpfiles.d/mongodb.conf:

lnx#> sudo su

lnx#> cd /lib/tmpfiles.d

lnx#> echo“d / var / run / mongodb 0755 mongod mongod”> mongodb.conf

然后重新启动或运行此命令来激活该临时目录:

lnx#> sudo systemd-tmpfiles – 创建mongodb.conf

启动mongod服务:

lnx#> sudo systemctl启动mongod.service

参考书目: Fedora和Mongodb·l33tsource http://goo.gl/XzgSDd

我遇到了同样的问题,当我修改我的mongod.conf如下,问题解决

port=27017 dbpath=/usr/local/mongodb/data/db/ logpath=/usr/local/mongodb/logs fork = true

提示:logpath是日志文件而不是文件夹。

我只是在Ubuntu上遇到类似的问题。 遇到几乎每个ERROR提示,就像

child process Failed,exited with error number 1

或child process Failed,exited with error number 100

或[signalProcessingThread] got signal 2 (Interrupt: 2),will terminate after current cmd ends

很多时候,我删除了Mongodb,并尝试再次安装,但问题依然存在。

最后我是这样来的:首先备份你的数据,然后用Mongodb删除

#sudo apk-get autoremove mongodb-org

找出与mongodb相关的所有文件

/#find -name mongo*

用“rm”或“rmdir”删除它们,包括/ var / cache / …中的软件包和everthing。

然后重复第一次安装:

#echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list #sudo apt-get update #sudo apt-get install -y mongodb-org

它会再次运行。

在你的“mongo.conf”文件的下面注释。

pidfilepath =的/ var /运行/ mongodb的/ mongod.pid

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐