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