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的设置如下所示:

 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

    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/mongodbtemp目录位置。 因此,以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