MongoDB:设置Windows服务

17
我刚刚安装了MongoDB 2.6,并尝试按照 http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/ 上的说明在Windows 8上将其作为Windows服务运行。
这是我的C盘目录结构:
- MongoDB (MongoDB安装) - bin - Project - DB - Log - mongo.conf - mongod.cfg mongo.conf的内容如下:
storage:
   dbPath: "C:\Project\DB"

而 mongod.cfg 文件的内容如下:

logpath="C:\Project\Log\mongo.log" 

按照教程指示,在命令行(管理员模式下)中输入以下命令:

"C:\MongoDB\bin\mongod.exe" --config "C:\Project\mongod.cfg" --install

然而,我收到了一个错误消息:

SEVERE: Failed global initialization: FileNotOpen Failed to open ""C:\MongoDB\bin\Project\Log\mongo.log""

请问有人能解释一下我做错了什么吗?我已经按照教程的指示操作了(只是改了一些目录名)。

同时,我也很困惑 mongo.confmongod.cfg 之间的区别是什么...

谢谢!

10个回答

27

我在使用Mongo 2.6.3时遇到了类似的问题。我试图将日志路径设置为C:\Users\Public\Public Databases\Mongo\log\mongo.log,但服务安装程序却一直响应Failed to open ""C:\Program Files\MongoDB 2.6 Standard\bin\Users\Public\Public Databases\Mongo\log\mongo.log""

当我不再在配置文件中引用日志路径时,它开始对我起作用。(例如,我将logpath="C:\Users\Public\Public Databases\Mongo\log\mongo.log"更改为logpath=C:\Users\Public\Public Databases\Mongo\log\mongo.log)。


重要的是确保使用管理员权限运行命令提示符。这对我起到了修复作用。我使用的是Mongo 3.4版本。 - Komoo

3

安装MongoDB 2.6.0作为Windows服务使用--install命令时存在已知问题-请参见SERVER-13515。修复已提交至MongoDB 2.6.1版本。

作为解决方法,我提供了在该服务器问题上手动安装服务的说明

简单来说:

  • open an Administrator cmd prompt
  • make directories for your database and log files
  • create a configuration file
  • create the service definition, similar to:

    sc create MongoDB binPath= "\"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB 2.6 Standard\mongod.cfg\"" DisplayName= "MongoDB 2.6 Standard" start= "auto"
    
  • start the MongoDB service

    net start MongoDB
    
请参考SERVER-13515获取完整指令。
MongoDB服务器不关心你使用--config指定的文件名/扩展名(只要该文件可以被读取)。您对格式的困惑是因为mongo.conf示例使用了MongoDB 2.6+支持的新的YAML配置文件格式,而mongod.cfg使用了2.6以及早期版本支持的旧格式。
在我的解决方案示例中,我使用了旧的mongod.cfg格式,因为从技术上讲,有人可以将这些说明适应于手动创建MongoDB 2.4服务定义。

2
我不仅在安装为Windows服务时遇到了同样的问题,而且在运行“mongodb.exe”文件时也遇到了相同的问题。我试图删除双引号(“)字符,但错误仍然存在:
2014-08-16T14:14:49.166Z SEVERE:全局初始化失败:FileNotOpen 无法打开“D:\MongoDB\log\mongo.log”
请注意,我正在使用新的YAML格式配置文件。当我使用旧格式时没有问题。我尝试了几种方法来修改新的YAML配置文件,最终发现它不接受绝对路径。只需更改为相对路径即可解决问题!
My folder structure is:
MongoDB\
   bin\
   data\
   log\

这是我的YAML配置文件,适用于安装在Windows 7 - Professional x64上的MongoDB 2.6.4 - Windows 64位版本构建。
systemLog:
   timeStampFormat: iso8601-utc
   destination: file
   path: ..\log\mongo.log
   quiet: false
   logAppend: true
net:
   bindIp: 127.0.0.1
   port: 27017
storage:
   dbPath: ..\data
   directoryPerDB: true
   journal:
      enabled: true

仅供记录:虽然使用“..”或以“\”开头的路径在命令提示符下可用,但在作为服务运行时却会出现问题。由于此错误未被记录(发现错误的方法是手动运行“mongod.exe --config c:\mongodb\mongodb.conf --service”),因此调试花费了一些时间。 - Lucas Soares

1
我尝试了很多方法,最终不得不删除配置文件并直接传递dbpath和logpath设置。以下命令对我有效:-
C:> mongod --dbpath d:\mongodb\data --logpath d:\mongodb\logs\mongo.log --instal l --serviceName MongoDB --serviceDisplayName MongoDB

1
C:>mongod --dbpath d:\mongodb\data --logpath d:\mongodb\logs\mongo.log --install --serviceName MongoDB --serviceDisplayName MongoDB - Umer Chohan

0
有时候当你遇到像这样的错误:"Failed global initialization: FileNotOpen Failed to open .../mongodb.log",如果你有日志文件,你可以将其删除并重试。

0
根据您的错误日志观察,它传递了两个引号而不是一个。省略一个(编辑您的配置文件内容并删除引号),然后应该就可以了。

0

@Stennie的回答以及mongoDB网站上的手动服务安装说明对我来说都足够了。需要注意的一点是,指令中的引用项需要双反斜杠(\\)才能正常工作。这对大多数开发人员来说可能很明显,但我却忘记了,导致错误响应只是服务无法启动。此外,请注意等号后面的空格。

sc.exe create MongoDB binPath= "\"C:\\Program Files\\MongoDB 2.6 Standard\\bin\\mongod.exe\" --service --config=\"C:\\Program Files\\MongoDB 2.6 Standard\\mongod.cfg\"" DisplayName= "MongoDB 2.6 Standard" start= "auto"

0

关于MongoDB的最新版本,有一个关于此主题的JIRA和一个解决方法。解决方案是安装先前的版本,然后安装服务并重新使用驱动程序的最新版本。 希望这可以帮助!


你能链接到 Jira 任务吗? - Underverse

0
停止 MongoDB 的 Windows 服务,然后再尝试一次。这对我很有用!

0

我的之前的logpath=c:\programfiles\......,另一种选择是logpath="c:\program files\......",这个可以工作。

我认为原因是系统必须通过c:\program files\......访问日志文件,但是当我写logpath=c:\program files\......时会出现错误,因为program和files之间有一个空格。然后我添加了"",它就可以工作了。希望能对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接