MongoDB: настройка службы Windows

Я только что установил MongoDB 2.6, и я пытаюсь запустить его как службу Windows в Windows 8, следуя инструкциям http://docs.mongodb.org/manual/tutorial/install-mongodb-on-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.conf и mongod.cfg...

Спасибо!

Ответы

Ответ 1

У меня была аналогичная проблема с 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).

Ответ 2

Известна проблема установки MongoDB 2.6.0 в качестве службы Windows с помощью команды --install - см. SERVER-13515. Исправлено исправление для выпуска MongoDB 2.6.1.

В качестве обходного решения, Я предоставил инструкции по установке службы вручную по этой проблеме SERVER.

Короткий вариант:

  • откройте приглашение администратора администратора
  • создавать каталоги для вашей базы данных и файлов журнала
  • создать файл конфигурации
  • создайте определение службы, похожее на:

    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 использует новый формат файла YAML, поддерживаемый MongoDB 2.6+, в то время как mongod.cfg использует более старый формат, поддерживаемый версиями 2.6, а также более ранние версии.

Я использовал более старый формат mongod.cfg в моем примере обхода, так как технически кто-то мог адаптировать эти инструкции, чтобы вручную создать определение сервиса для MongoDB 2.4.

Ответ 3

У меня такая же проблема не только при установке в качестве службы 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, который работает на сборке 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

Ответ 4

Я пробовал много вещей, в конце концов мне пришлось удалить конфигурационный файл и напрямую передать параметры dbpath и logpath. Следующая команда работала для меня: -

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

Ответ 5

В этой теме есть JIRA для последней версии MongoDB и обходной путь. Решение состоит в том, чтобы установить предыдущую версию, затем установить службу и повторно использовать последнюю версию драйвера. Надеюсь, это поможет!

Ответ 6

Ответ на

@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"

Ответ 7

Наблюдая за журналом ошибок, он пропускает два "вместо". Опустите один (отредактируйте содержимое файла конфигурации и удалите его), и вы должны быть хорошими.

Ответ 8

Иногда, когда у вас есть ошибка, например: "Ошибка глобальной инициализации: FileNotOpen Не удалось открыть... /mongodb.log", если у вас есть файл журнала, вы можете удалить его и повторить попытку.

Ответ 9

Остановите MongoDB от Windows Services, а затем повторите попытку. Это сработало для меня!