初始安装后MongoDB服务无法启动

Por*_*ori 14 linux fedora mongodb

我正在运行Fedora 20并根据官方文档中的Red Hat安装指南安装MongoDB .我能够运行mongod守护进程没有错误的第一次服务,但是当我关闭了我的机器和回来的时候,拒绝服务,由于一些失败的开始.

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

***** SERVER RESTARTED *****
ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

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

考虑到在我的配置文件中/etc/mongod.conf,数据库路径的设置如下:

dbpath=/var/lib/mongo
Run Code Online (Sandbox Code Playgroud)

最后,如果我运行此命令:

mongod --dbpath /var/lib/mongo
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以告诉我究竟是什么问题以及如何开始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目录不存在,因此我创建并将其分配给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

Way*_*yne 32

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

d /var/run/mongodb 0755 mongod mongod
Run Code Online (Sandbox Code Playgroud)

这似乎是在重启时处理的; 如果您不想立即重新启动,可以使用以下命令执行:

sudo systemd-tmpfiles --create mongodb.conf
Run Code Online (Sandbox Code Playgroud)

(参见systemd-tmpfiles的手册页)


Deo*_*eia 8

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

#rm /var/lib/mongo/mongod.lock
Run Code Online (Sandbox Code Playgroud)

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

#mkdir /var/run/mongodb
#touch /var/run/mongodb/mongod.pid
Run Code Online (Sandbox Code Playgroud)

并授予777权限:

#chmod 777 /var/run/mongodb/mongod.pid 
Run Code Online (Sandbox Code Playgroud)

并启动mongo:

#service mongod start
Run Code Online (Sandbox Code Playgroud)

但重启机器后问题仍然存在.文件夹和文件消失.

  • 这几乎是我初次安装时发生的事情.我觉得麻烦的是禁用SELinux是完成这项工作所必需的.我确信这是一个权限问题,但由于每个相关的文件/文件夹都被称为mongod,因此无法查明原点. (2认同)

vip*_*o07 7

我花了一些时间研究这个,看起来好像pid文件夹和文件权限不能与默认守护进程一起使用.

我遇到的最简单的解决方案是通过在配置文件中的行前放一个#来禁用pid文件.

vi /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)

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

# pidfilepath=/var/run/mongodb/mongod.pid
Run Code Online (Sandbox Code Playgroud)

有关评论的信息请点击此处查看. http://docs.mongodb.org/manual/reference/configuration-options/#processManagement.pidFilePath


the*_*row 5

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

sudo服务mongod开始

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