MongoDB:设置Windows服务

时间:2014-04-15 22:40:35

标签: mongodb

我刚刚安装了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 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:3)

使用--install命令将MongoDB 2.6.0安装为Windows服务存在一个已知问题 - 请参阅SERVER-13515。已经为MongoDB 2.6.1版本提交了修复程序。

作为一种解决方法, 我在该SERVER问题上提供了instructions on how to install the service manually

简短版本是:

  • 打开管理员cmd提示
  • 为您的数据库和日志文件制作目录
  • 创建配置文件
  • 创建服务定义,类似于:

    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"
    
  • 启动MongoDB服务

    net start MongoDB
    

有关完整说明,请参阅SERVER-13515

  

我对mongo.conf和mongod.cfg之间的区别感到非常困惑

MongoDB服务器并不关心您使用--config指定的文件的名称/扩展名(只要可以读取该文件)。您对格式的混淆是因为mongo.conf示例使用MongoDB 2.6+支持的新YAML config file format,而mongod.cfg使用2.6及早期版本支持的旧格式。

我在解决方法示例中使用了较旧的mongod.cfg格式,因为从技术上讲,有人可以调整这些指令来手动为MongoDB 2.4创建服务定义。

答案 2 :(得分:2)

我不仅在安装Windows服务时,而且在运行“mongodb.exe”文件时遇到了同样的问题。我试图删除双引号(“)字符,但错误仍然存​​在:

2014-08-16T14:14:49.166Z严重:全局初始化失败:FileNotOpen无法打开“D:\ MongoDB \ log \ mongo.log”

请注意我使用的是新的YAML格式的配置文件。使用旧格式时我没有问题。我在新的YAML配置文件上尝试了几种方法,最后我发现它不接受绝对路径。只需改为相对路径,就像魅力一样!

My folder structure is:
MongoDB\
   bin\
   data\
   log\

这是我的YAML配置文件,适用于构建MongoDB 2.6.4 - Windows 64位版本,安装在我的Windows 7 - Professional x64上:

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

答案 3 :(得分:1)

我尝试了很多东西,最后我不得不删除配置文件并直接传递dbpath和logpath设置。以下命令对我有用: -

C:> mongod --dbpath d:\ mongodb \ data --logpath d:\ mongodb \ logs \ mongo.log --instal l --serviceName MongoDB --serviceDisplayName MongoDB

答案 4 :(得分:0)

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

答案 5 :(得分:0)

@Snnie的答案,以及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"

答案 6 :(得分:0)

观察您的错误日志,它会传递两个而不是一个。省略一个(编辑你的配置文件内容并删除" s)你应该很好。

答案 7 :(得分:0)

有时当您遇到错误时:"全局初始化失败:FileNotOpen无法打开... / mongodb.log",如果您有日志文件,则可以将其删除并重试。

答案 8 :(得分:0)

init_window停止MongoDB,然后重试。它对我有用!

答案 9 :(得分:0)

我以前的logpath=c:\programfiles\...... 替代方法是logpath="c:\program files\......" 它有效

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