【问题标题】:Cannot Run Mongo as Service无法将 Mongo 作为服务运行
【发布时间】:2014-08-27 22:59:39
【问题描述】:

我的环境

  • CentOS(我不确定确切的版本,因为它在 iPage 的 VPS 服务器上。)

我的目标

将 mongod 作为服务启动:

sudo service mongod start

(一旦我得到这个工作,我想让 mongod 在服务器通过 chkconfig 重新启动时启动:

sudo /sbin/chkconfig --level 345 mongod on

)

会发生什么

它返回 [FAILED],我在日志中收到这条消息:

2014-08-27T03:17:40.126+0000 ***** SERVER RESTARTED *****
2014-08-27T03:17:40.132+0000 [initandlisten] MongoDB starting : pid=3950 port=27017    dbpath=/var/lib/mongo 64-bit host=162-144-108-42.ipage.com
2014-08-27T03:17:40.132+0000 [initandlisten] db version v2.6.4
2014-08-27T03:17:40.132+0000 [initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee910
2014-08-27T03:17:40.132+0000 [initandlisten] build info: Linux build7.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2014-08-27T03:17:40.132+0000 [initandlisten] allocator: tcmalloc
2014-08-27T03:17:40.132+0000 [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1" }, processManagement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" }, storage: { dbPath: "/var/lib/mongo" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2014-08-27T03:17:40.133+0000 [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
2014-08-27T03:17:40.133+0000 [initandlisten] dbexit: 
2014-08-27T03:17:40.133+0000 [initandlisten] shutdown: going to close listening sockets...
2014-08-27T03:17:40.133+0000 [initandlisten] shutdown: going to flush diaglog...
2014-08-27T03:17:40.133+0000 [initandlisten] shutdown: going to close sockets...
2014-08-27T03:17:40.133+0000 [initandlisten] shutdown: waiting for fs preallocator...
2014-08-27T03:17:40.133+0000 [initandlisten] shutdown: lock for final commit...
2014-08-27T03:17:40.133+0000 [initandlisten] shutdown: final commit...
2014-08-27T03:17:40.133+0000 [initandlisten] shutdown: closing all files...
2014-08-27T03:17:40.133+0000 [initandlisten] closeAllFiles() finished
2014-08-27T03:17:40.133+0000 [initandlisten] shutdown: removing fs lock...
2014-08-27T03:17:40.133+0000 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
2014-08-27T03:17:40.133+0000 [initandlisten] dbexit: really exiting now

我的尝试:

  • grepping当前进程没有找到任何mongod进程:

    ps 辅助 | grep mongod

  • 删除 mongod.lock 文件没有帮助:

    sudo rm mongod.lock

  • 更改数据库的所有者没有帮助:

    sudo chown -R my_username /var/lib/mongo

【问题讨论】:

    标签: linux mongodb service centos


    【解决方案1】:

    这看起来像是权限问题:

    2014-08-27T03:17:40.133+0000 [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
    

    假设您已经删除了 .lock 文件,请查看运行 mongo 的用户是否具有对该文件夹的写入权限。

    您使用 chown 和您的用户名,但似乎用户必须是 mongo,而不是您的用户名。服务尝试启动时检查所有者。

    【讨论】:

    • 澄清一下,你是说要做 sudo chown -R mongodb /var/lib/mongo 吗?
    • @NoBrainer 至少在 Fedora 中,mongodb 是用户。您可以在 /etc/init.d/ 中检查您的初始化脚本
    • 这是对我有用的确切命令:sudo chown -R mongod /var/lib/mongo
    【解决方案2】:

    我能够验证在我的 CentOS 系统上运行 sudo chown -R mongodb /var/lib/mongo 是否有效。我的 /etc/init.d/mongod 脚本以用户 mongod 身份运行 mongod 进程。当我执行 sudo chown -R root /var/lib/mongo 时,我收到了相同的 Permission denied 错误,但是当我将目录权限设置为运行 sudo service mongod start 的 mongod (sudo chown -R mongodb /var/lib/mongo) 时有效

    【讨论】:

      猜你喜欢
      • 2015-03-08
      • 2020-12-24
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 2018-12-09
      相关资源
      最近更新 更多