Не удается запустить MongoDB как услугу - программирование

Не удается запустить 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

4b9b3361

Ответ 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

Структура будет выглядеть примерно так.

  1. Теперь откройте командную строку как администратор.

  2. измените путь к файлу и введите папку bin (в этом случае это будут c > программные файлы > MongoDB > bin > )

  3. Введите следующую команду: mongod --directoryperdb --dbpath "C:/Program Files\MongoDB\data" --logpath "C:\Program Files\MongoDB\log\mongo.log" --logappend --rest --install

  4. Это установит путь к журналу и базе данных. Наконец, запустите 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

Все, что мне нужно было сделать, это очистить место и снова запустить службу. Работал для меня. Итак, все, что вам нужно, это проверить файл журнала и решить проблему соответственно.