问题描述
宝塔面板安装MongoDB 数据库时
提示安装 启动失败,pid文件不存在
启动失败,pid文件不存在:/www/server/mongodb/log/configsvr.pid
查找原因
宝塔面板-软件商店进入MongoDB设置,查看日志
提示
{"t":{"$date":"2024-12-20T12:02:55.049+08:00"},"s":"E", "c":"NETWORK", "id":23024, "ctx":"initandlisten","msg":"Failed to unlink socket file","attr":{"path":"/tmp/mongodb-27017.sock","error":"Operation not permitted"}}
{"t":{"$date":"2024-12-20T12:02:55.049+08:00"},"s":"F", "c":"ASSERT", "id":23091, "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":40486,"file":"src/mongo/transport/asio/asio_transport_layer.cpp","line":1202}}
{"t":{"$date":"2024-12-20T12:02:55.049+08:00"},"s":"F", "c":"ASSERT", "id":23092, "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"}
从日志信息来看,MongoDB 在启动过程中遇到了一些问题。根据日志,关键错误信息如下:
-
Failed to unlink socket file
错误信息显示,MongoDB 在尝试删除/tmp/mongodb-27017.sock
这个 socket 文件时失败,错误是 Operation not permitted(操作不允许)。这通常是权限问题,可能是 MongoDB 进程没有足够的权限来删除或创建该文件。 -
Fatal assertion
MongoDB 在尝试启动时发生了致命的断言错误,日志中提到fassert()
失败,这意味着 MongoDB 在运行时遇到一个无法恢复的错误并中止了进程。
解决方案:
-
检查权限
确保 MongoDB 进程有权限访问/tmp
目录,并能够删除或创建该 socket 文件。尝试以下命令,确保 MongoDB 的运行用户(例如mongod
用户)具有足够的权限:
在宝塔面板-终端中直接输入sudo chown -R mongod:mongod /tmp/mongodb-27017.sock sudo chmod 777 /tmp
-
清理旧的 Socket 文件
如果之前的 MongoDB 实例未正常关闭,可能遗留了旧的 socket 文件。尝试手动删除该文件,然后重新启动 MongoDB:
在宝塔面板-终端中直接输入sudo rm -f /tmp/mongodb-27017.sock
结果
尝试宝塔面板-软件商店进入MongoDB,点击启动
发现正常启动 ,问题解决