Не удается запустить MongoDB как услугу
Я уже несколько месяцев разрабатываю для MongoDB и хочу установить его как сервис на моей машине Windows 7 Enterprise. Ниже приведена команда, которую я выполнил для создания службы:
"D:\Milvia Systems\Development\MongoDB\mongod.exe" --logpath "D:\Milvia Systems\Development\MongoDB\logs\DBLog.log" --logappend --dbpath "D:\Milvia Systems\Development\MongoDB\db" -vvv --reinstall
Однако, когда я использую net start "MongoDB" или панель управления сервисом, я получаю следующую ошибку:
Ошибка 1053: служба не ответила на запуск или управление запросить своевременно.
Окружающая среда: Windows 7 Enterprise 64bit
MongoDB: 1.6.3 версия pdfile 4.5
Ответы
Ответ 1
Вы проверили, что вы регистрируетесь, чтобы увидеть настоящую проблему?
Я предлагаю извлечь установку Mongo на c:\mongodb
.
Создайте каталоги c:\mongodb\logs
и c:\mongodb\data\db
.
Затем просмотрите каталог c:\mongodb\bin
и запустите следующую команду, чтобы удалить эту службу (если вы ее установили!):
mongod --remove
Затем установите службу, указав каталоги журналов и данных:
mongod --logpath c:\mongodb\logs\mongo.log --dbpath c:\mongodb\data\db --directoryperdb --install
Затем, если возникает проблема с запуском службы, вы должны увидеть причину в указанном файле журнала.
Подробнее здесь.
Ответ 2
Если вы не указали абсолютные пути к файлу для каталога данных или каталога журнала, вы получите ту же ошибку Windows, но не файл журнала.
Я использовал информацию из "Установить службу MongoDB в Windows 7" , нажав на Webiyo, чтобы исправить зарегистрированные аргументы службы:
- Загрузите MongoDB и извлеките его на диск C: \.
- Добавьте подкаталоги "данные" и "журналы" в каталог "C:\mongodb165".
- Добавить имя файла журнала "mongolog.txt" в "C:\mongodb165\logs\mongolog.txt".
- Измените каталог на "C:\mongodb165\bin".
-
Выполните следующую команду:
mongod --install --rest –master –logpath=C:\mongodb165\logs\mongolog.txt
-
Откройте редактор реестра (regedit.exe), перейдите в HKEY_LOCAL_MACHINE → СИСТЕМА → CurrentControlSet → Услуги.
-
Найдите ключ MongoDB и установите для параметра "ImagePath" значение:
C:\mongodb165\bin\mongod --service --rest --master --logpath=C:\mongodb165\logs\mongolog.txt --dbpath=C:\mongodb165\data
-
Сохраните изменения в реестре и выйдите из редактора реестра.
- Откройте ComponentServices, нажмите "Сервисы (локальные)" и найдите службу MongoDB. Запустите его.
- Проверьте URL http://localhost:28017/, чтобы проверить, что MongoDB возвращает статистику.
Ответ 3
Я столкнулся с той же проблемой на моем компьютере с Windows 7. Я выполнил указания в документах MongoDBs для установки, но это не позволило мне выполнить "net start MongoDB", если я не был в "C: \". Я не хотел возвращаться и переустанавливать MongoDB, чтобы следовать инструкциям, включенным в ссылку Webiyo, указанную выше. Если вы уже установили MongoDB в соответствии со своими документами и хотите иметь возможность запускать "net start MongoDB", где бы ни находился каталог проекта:
Перейдите в HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > MongoDB
Дважды щелкните ImagePath под столбцом Name
Вставить в следующий ImagePath (отредактировать каталог папки и имена в соответствии с вашими потребностями):
C:\mongodb\bin\mongod.exe --service --rest --master --logpath=C:\mongodb\log\mongolog.txt --dbpath=C:\mongodb\data\db --config C:\mongodb\mongod.cfg
Обратите внимание: если вы скопируете это значение ImagePath, а ваша папка "data" находится в каталоге mongodb вместо C:\добавьте следующую строку в файл "mongod.cfg": dbpath=C:\mongodb\data\db
После этого, когда я запускаю "net stop MongoDB", я получаю сообщение "Ошибка системы 109. Труба закончилась". Вы можете это увидеть. Это сообщение было подробно обсуждено на jira.mongodb.org.
Чтобы сэкономить время на чтение всей дискуссии взад и вперед, пост Тада Маршалса подводит итог этой проблеме:
"... он отлично работал в версии 2.1.0, а позже изменения снова разбили его. Но да, вы получите это сообщение об ошибке в текущем коде.
Объяснение заключается в том, что mongod.exe выходит из потока обратного вызова, созданного диспетчером управления Windows, когда он вызывает нас из-за "net stop mongodb", и это прерывает канал RPC, который он использовал для создания потока обратного вызова. Нам нужно реорганизовать нашу логику выхода, чтобы избежать этого.
Сообщение об ошибке является единственным реальным эффектом этой проблемы; мы выходим из команды, чистым образом и сообщаем диспетчеру управления Windows, что мы остановлены, но затем команда "net" отображает сообщение об ошибке, потому что мы не возвращались из вызова RPC так, как ожидали нас ".
Ответ 4
Другим, у кого может быть такая же проблема на Windows Server 2012:
У меня только та же проблема с Mongo 3.0.3 на Windows Server 2012. Я не системный администратор, поэтому я не знаю, что они изменили для sc.exe. Я должен использовать
sc.exe create MongoDB binPath= "C:\mongodb\bin\mongod.exe --service --config=C:\mongodb\mongod.cfg" DisplayName= "MongoDB" start= "auto"
Это без \ "\" для двоичных и конфигурационных путей файлов по сравнению с тем, что находится на их веб-сайте.
Ответ 5
Я выполнил эту команду:
C:\MongoDB\Server\3.4\bin>net start MongoDB
И получил это сообщение:
Служба не отвечает на функцию управления. Дополнительная помощь доступный путем ввода NET HELPMSG 2186.
После некоторых проб и ошибок я заметил, что, следуя руководству, он попросил меня назвать мой файл mongod.conf, но команда пыталась обратиться к mongod.cfg.
Как только я исправил это имя и перезапустил команды,
C:\MongoDB\Server\3.4\bin>sc.exe delete MongoDB
[SC] DeleteService SUCCESS
C:\MongoDB\Server\3.4\bin>sc.exe create MongoDB binPath= "\"C:\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
[SC] CreateService SUCCESS
C:\MongoDB\Server\3.4\bin>net start MongoDB
The MongoDB service is starting....
The MongoDB service was started successfully.
Служба начала работать нормально.
Ответ 6
Это шаги, которые я выполнил для установки mongoDB в Windows 7
-
загрузите файл .msi с сайта mongodb → https://www.mongodb.com/download-center?jmp=nav#community и запустите его
-
Где бы вы загрузили ваш mondoDb (обычно в папке Program Files с диска c), перейдите в эту папку, и где бы вы ни находились в папке bin в этой же папке, создайте папку данных и ваш папка журнала
3. Внутри папки данных создайте папку db
Структура будет выглядеть примерно так.
-
Теперь откройте командную строку как администратор.
-
измените путь к файлу и введите папку bin (в этом случае это будут c > программные файлы > MongoDB > bin > )
-
Введите следующую команду: mongod --directoryperdb --dbpath "C:/Program Files\MongoDB\data" --logpath "C:\Program Files\MongoDB\log\mongo.log" --logappend --rest --install
-
Это установит путь к журналу и базе данных. Наконец, запустите net start MongoDB. Надеюсь, это поможет.
Ответ 7
Мой файл mongod.cfg содержал следующие две последние строки:
#snmp:
mp:
Я понятия не имею, почему там MP: там. Но когда я вручную выполнил путь к изображению
C:\mongodb\bin\mongod.exe --config "C:\mongodb\bin\mongod.cfg" --service
на
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MongoDB
Я получил
c:\mongodb\bin>mongod /?C:\mongodb\bin\mongod.exe --config "C:\mongodb\bin\mongod.cfg" --service
Unrecognized option: mp
try 'mongod --help' for more information
Итак, я прокомментировал это, и затем служба запустилась без проблем.
Ответ 8
Для mongoDB 3.0 вам нужно будет установить в конфигурационном файле следующее.
logpath=E:\mongoDBdata\log\mongoDB.log
dbpath=E:\mongoDBdata\db
путь к журналу должен заканчиваться файлом, а не папкой.
Ответ 9
Проверьте, есть ли в вашем файле mongod.cfg вкладки. Удаление вкладок разрешило это для меня!
Ответ 10
Следующие работы с MongoDB 3.6.0
Убедитесь, что у вас есть следующие папки:
-
C:\MongoDB \
- данные C:\MongoDB\Data\дб
Тогда все, что вам нужно, это следующие команды:
-
mongod --directoryperdb -dbpath C:\mongodb\data\db --logpath C:\mongodb\log\mongo.log --logappend --service --install
- чистый старт MongoDB
- монго
Ответ 11
Еще один способ, которым это может быть неудачно, заключается в том, что учетная запись, на которой запущена служба, не имеет права на запись в каталог данных.
В этом случае служба не сможет создать файл блокировки.
Служба mongod ведет себя плохо в этой ситуации и переходит в цикл, запускающий процесс, который немедленно бросает необработанное исключение, сбой и т.д. файл журнала воссоздается каждый раз, когда процесс запускается, поэтому вам нужно быстро его схватить если вы хотите увидеть ошибку.
пользователем по умолчанию для служб Windows будет localhost\system. поэтому исправление заключается в том, чтобы этот пользователь мог записывать в ваш каталог db или запускать службу в качестве другого пользователя, который может.
Ответ 12
Для версии 2.6 вы должны создать папки/data/db/и/log/, на которые указывает mongo.cfg. MongoDB не будет делать этого сам и будет отбрасывать эту ошибку в ответ, когда запускается как служба.
Ответ 13
убедитесь, что вы открыли командную строку с правами "запускать как администратора" в правом щелчке, прежде чем вводить все вещи mongod.
Ответ 14
Потратьте полчаса на отладку... Наконец я обнаружил, что перед атрибутом "отдых" есть одиночная тире.
![mongodb as service]()
Ответ 15
Просто попробуйте запустить mongod.exe локально в командной строке, вы можете получить здесь исключение, которое вызовет mongod и попытается его решить. В моем случае это было небольшое свободное место на локальном диске, поэтому я просто меняю расположение каталогов и меняю файл Mongocofig, и теперь он работает нормально.
Ответ 16
Если вы посмотрите в подробностях службы, вы увидите, что команда запуска службы - это что-то вроде:
"C:\Program Files\MongoDB\bin\mongod" --config C:\Program Files\MongoDB\mongod.cfg --service
Команда MongoDB забыла добавить "
вокруг опции --config
. Поэтому просто отредактируйте реестр, чтобы исправить его, и он будет работать.
Ответ 17
У меня была такая же проблема на Windows 8.1
Решение, которое работало для меня, это правильно указать путь к файлу конфигурации.
Переход к HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > MongoDB > imagePath
означает следующее:
"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe" --config mongod.cfg --service
Затем просто я исправил путь к файлу конфигурации, чтобы соответствовать моему фактическому пути:
"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe" --config "d:\mongodb\mongod.cfg" --service
Ответ 18
Не забудьте создать базу данных перед запуском службы
C:\>"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --dbpath d:\MONGODB\DB
2016-10-13T18:18:23.135+0200 I CONTROL [main] Hotfix KB2731284 or later update is installed, no need to zero-out data files
2016-10-13T18:18:23.147+0200 I CONTROL [initandlisten] MongoDB starting : pid=4024 port=27017 dbpath=d:\MONGODB\DB 64-bit host=mongosvr
2016-10-13T18:18:23.148+0200 I CONTROL [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2016-10-13T18:18:23.149+0200 I CONTROL [initandlisten] db version v3.2.8
2016-10-13T18:18:23.149+0200 I CONTROL [initandlisten] git version: ed70e33130c977bda0024c125b56d159573dbaf0
2016-10-13T18:18:23.150+0200 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1p-fips 9 Jul 2015
2016-10-13T18:18:23.151+0200 I CONTROL [initandlisten] allocator: tcmalloc
2016-10-13T18:18:23.151+0200 I CONTROL [initandlisten] modules: none
2016-10-13T18:18:23.152+0200 I CONTROL [initandlisten] build environment:
2016-10-13T18:18:23.152+0200 I CONTROL [initandlisten] distmod: 2008plus-ssl
2016-10-13T18:18:23.153+0200 I CONTROL [initandlisten] distarch: x86_64
2016-10-13T18:18:23.153+0200 I CONTROL [initandlisten] target_arch: x86_64
2016-10-13T18:18:23.154+0200 I CONTROL [initandlisten] options: { storage: { dbPath: "d:\MONGODB\DB" } }
2016-10-13T18:18:23.166+0200 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=8G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-10-13T18:18:23.722+0200 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-10-13T18:18:23.723+0200 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory 'd:/MONGODB/DB/diagnostic.data'
2016-10-13T18:18:23.895+0200 I NETWORK [initandlisten] waiting for connections on port 27017
Затем вы можете остановить процесс Control-C
2016-10-13T18:18:44.787+0200 I CONTROL [thread1] Ctrl-C signal
2016-10-13T18:18:44.788+0200 I CONTROL [consoleTerminate] got CTRL_C_EVENT, will terminate after current cmd ends
2016-10-13T18:18:44.789+0200 I FTDC [consoleTerminate] Shutting down full-time diagnostic data capture
2016-10-13T18:18:44.792+0200 I CONTROL [consoleTerminate] now exiting
2016-10-13T18:18:44.792+0200 I NETWORK [consoleTerminate] shutdown: going to close listening sockets...
2016-10-13T18:18:44.793+0200 I NETWORK [consoleTerminate] closing listening socket: 380
2016-10-13T18:18:44.793+0200 I NETWORK [consoleTerminate] shutdown: going to flush diaglog...
2016-10-13T18:18:44.793+0200 I NETWORK [consoleTerminate] shutdown: going to close sockets...
2016-10-13T18:18:44.795+0200 I STORAGE [consoleTerminate] WiredTigerKVEngine shutting down
2016-10-13T18:18:45.116+0200 I STORAGE [consoleTerminate] shutdown: removing fs lock...
2016-10-13T18:18:45.117+0200 I CONTROL [consoleTerminate] dbexit: rc: 12
Теперь ваша база данных подготовлена, и вы можете запустить службу, используя
C:\>net start MongoDB
The MongoDB service is starting.
The MongoDB service was started successfully.
Ответ 19
Проверьте, запущен ли уже экземпляр процесса mongod
. Если да, эта служба не запускается, потому что C:\data\db\mongod.lock
будет использоваться ею.
И чтобы запустить MongoDB как службу, этот файл не должен использоваться каким-либо процессом.
Ответ 20
Для меня проблема была неправильной. Убедитесь, что вы скопировали каталог из своего проводника файлов и не допустили, что каталог, указанный на странице документации, правильный.
Ответ 21
Если вы получили сообщение об ошибке:
неверное имя службы
при запуске net start mongodb вам нужно будет выполнить следующую команду из шага 4 в разделе "Создание службы Windows для редактирования сообщества MongoDB вручную":
sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
Ответ 22
Я сделал несколько изменений в файле запуска Config, что вызвало эту проблему. Когда я посмотрел в файле mongo.log, он сказал
"Не удалось запустить сервер. Обнаружены файлы данных в E:\Mongo\data\db, созданные механизмом хранения 'wiredTiger'. Сконфигурированный механизм хранения: 'mmapv1'., Завершение"
Сброс механизма хранения обратно на "wiredTiger" решил проблему для меня. Надеюсь, что это помогает другим.
Ответ 23
Я начал следовать учебному курсу в блоге, который требовал MongoDB. В нем были инструкции по загрузке и настройке службы. Но по какой-то причине команда для запуска службы Windows в этом учебнике не работала. Поэтому я пошел в документы MongoDB и попробовал запустить эту команду, как указано на mongodb.org -
Команда strting mongodb service-
sc.exe создать MongoDB binPath = "\" C:\MongoDB\bin\mongod.exe\ "--service --config = \" C:\MongoDB\bin\mongodb\mongod.cfg\ "DisplayName =" MongoDB "start =" авто "
Я получил это сообщение: [SC] CreateService SUCCESS
Тогда я запустил это:
net start MongoDB
И получил это сообщение:
The service is not responding to the control function.
More help is available by typing NET HELPMSG 2186.
Я создаю файл с именем 'mongod.cfg' в 'C:\MongoDB\bin\mongodb \'
Как только я добавил этот файл и перезапустил команду "net start MongoDB", служба начала работать нормально.
Надеюсь, что это поможет.
Ответ 24
В моем случае у меня было небольшое дисковое пространство на моем диске, где у меня есть файлы данных MongoDB. Я проверил файл журнала MongoDB, в котором указано следующее
2015-11-11T21: 53: 54.717 + 0500 E JOURNAL [initandlisten] Недостаточно свободного места для файлов журнала 2015-11-11T21: 53: 54.717 + 0500 я ЖУРНАЛ [initandlisten] Пожалуйста, сделайте не менее 3379 МБ в C:\wamp\bin\mongodb\data\db\journal или использовать --smallfiles
Все, что мне нужно было сделать, это очистить место и снова запустить службу. Работал для меня. Итак, все, что вам нужно, это проверить файл журнала и решить проблему соответственно.