【发布时间】:2019-02-21 22:04:22
【问题描述】:
我正在运行 Fedora 20 并按照官方文档中的 Red Hat installation guide 安装了 MongoDB。我第一次能够将mongod 守护程序作为服务运行而没有错误,但是当我关闭我的机器并返回时,该服务由于某些故障而拒绝启动。
在成功运行后列出的日志中,我看到:
***** 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.conf 的配置文件中,数据库路径的设置如下:
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 目录不存在,所以我创建并分配给 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
【问题讨论】:
-
您需要指定配置文件才能让 mongod 读取它。试试
mongod --config /etc/mongod.conf。对于最初的问题,/var/run/mongodb目录是否存在?如果不是(我假设是这样),请尝试使用权限 666(或 644 并将其 chown 给守护程序用户)创建它,然后尝试重新启动它? -
Permission denied表示您搞砸了权限。尝试将每个相关的目录/文件返回给 mongod 用户。 -
原来
/etc/mongod.conf归根所有。我改变了它,但仍然没有继续配置。 -
所以,有两件事要检查: 1.
ps aux|grep mongo确保没有运行 mongod 实例。如果没有,2.检查目录/var/lib/mongo的权限 -
没有mongod进程,
/var/lib/mongo/有666 chmod权限。