linux - 初始设置后 MongoDB 服务不会启动

标签 linux mongodb fedora

我正在运行 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/

相关文章:

php - 是否有来自 php 的记录器函数,还是应该使用 exec 编写?

python - 文件作为 python netaddr 中的输入

arrays - 将字符串前缀连接到 MongoDb 数组中对象的字段

javascript - 在mongodb中将字符串转换为日期?

linux - Tomcat6 -> 如何将项目放入根文件夹?

c - 如何在linux上写命令

linux - 单声道返回代码 249 是什么意思?

node.js - 从同一 Mongodb 集合中的坐标数组创建 GeoJson

c++ - wxWidgets - 缺少 wx/setup.h

centos - 为什么 rpmbuild 需要这些 C++ 库,从而导致此错误?