我正在运行 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
,我会收到此消息:
即将派生子进程,等待服务器准备好连接。 fork 进程:2702 错误:子进程失败,以错误号 1 退出
/var/run/mongodb
目录不存在,所以我创建并分配给mongod用户。不幸的是,这并没有太大的不同。
我的 /var/log/mongodb/mongod.log
显示此消息:
[initandlisten] initAndListen 中的异常:10309 无法创建/打开锁定文件:/var/lib/mongo/mongod.lock errno:13 Permission denied mongod 实例是否已经在运行?,终止
最佳答案
在 Fedora 20 上对我有用的是:我们需要在每次启动时创建临时目录,这由 systemd-tmpfiles 处理。因此,创建一个文件/lib/tmpfiles.d/mongodb.conf 并在其中放入一行:
d /var/run/mongodb 0755 mongod mongod
这似乎在重新启动时处理它;如果您不想立即重新启动,可以使用以下命令执行:
sudo systemd-tmpfiles --create mongodb.conf
(查看 systemd-tmpfiles 的手册页)
关于linux - 初始设置后 MongoDB 服务不会启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086655/