Как запустить MongoDB в качестве службы Windows? - PullRequest
196 голосов
/ 13 марта 2010

Как настроить MongoDB, чтобы он мог работать как служба Windows?

Ответы [ 28 ]

336 голосов
/ 26 октября 2011

Пытаясь несколько часов, я наконец сделал это.

Убедитесь, что вы добавили каталог <MONGODB_PATH>\bin в системную переменную PATH

Сначала я выполнил эту команду:

D:\mongodb\bin>mongod --remove

Затем я выполнил эту команду после открытия командной строки от имени администратора:

D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install

После этого прямо в командной строке выполните:

services.msc

И найдите службу MongoDB и нажмите «Пуск».


ПРИМЕЧАНИЕ. Обязательно запустите командную строку от имени администратора.

Если вы этого не сделаете, ваш файл журнала ('D: \ mongodb \ log.txt' в приведенном выше примере) будет содержать такие строки:

2016-11-11T15:24:54.618-0800 I CONTROL  [main] Trying to install Windows service 'MongoDB'
2016-11-11T15:24:54.618-0800 I CONTROL  [main] Error connecting to the Service Control Manager: Access is denied. (5)

и если вы попытаетесь запустить службу с консоли без прав администратора (например, net start MongoDB или Start-Service MongoDB в PowerShell), вы получите ответ, подобный этому:

System error 5 has occurred.
Access is denied.

или это:

Start-Service : Service 'MongoDB (MongoDB)' cannot be started due to the following error: Cannot open MongoDB service
on computer '.'.
At line:1 char:1
+ Start-Service MongoDB
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
   ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceComman
106 голосов
/ 13 марта 2010

Я думаю, что если вы запустите его с параметром командной строки --install, он будет установлен как служба Windows.

mongod --install

Возможно, стоит сначала прочитать эту тему . Кажется, есть некоторые проблемы с относительными / абсолютными путями, когда пишется соответствующий раздел реестра.

63 голосов
/ 02 марта 2011

не только --install,

также необходимо --dbpath и --logpath

и после перезагрузки ОС необходимо вручную удалить "mongod.lock "

40 голосов
/ 10 декабря 2016

В отличие от других ответов это будет ..

ЗАПУСК СЕРВИСА АВТОМАТИЧЕСКИ НА ПЕРЕЗАГРУЗКЕ / ПЕРЕЗАПУСКЕ СИСТЕМЫ

MongoDB Установить

Windows

(1) Установить MongoDB

(2) Добавить корзину к пути

(3) Создать c: \ data \ db

(4) Создать c: \ data \ log

(5) Создать c: \ data \ mongod.cfg с содержимым ..

systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db

(6) Чтобы создать службу, которая будет автоматически запускаться при перезагрузке .. RUN AS ADMIN ..

sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

(7) Запустить службу .. ЗАПУСТИТЬ КАК АДМИНИСТРА ..

net start MongoDB

ВАЖНО: даже если это говорит о том, что служба MongoDB была успешно запущена, она может дать сбой

Чтобы дважды проверить, откройте Панель управления> Службы, убедитесь, что служба MongoDB имеет статус «Работает»

Если нет, проверьте файл журнала в C: \ data \ log \ mongod.log на предмет причины сбоя и исправьте его

(Не запускать MongoDB через Панель управления> Службы, используйте .. net start MongoDB)

(8) Наконец, перезагрузите компьютер с запущенной MongoDB, и он все еще будет работать при перезагрузке

Если вы когда-нибудь захотите его убить ..

net stop MongoDB

sc.exe delete MongoDB
26 голосов
/ 18 апреля 2017

Следующие шаги относятся к Windows.

Запустите ниже в административном cmd

mongod --remove

Это удалит существующую службу MongoDB (если есть).

mongod --dbpath "C:\data\db" --logpath "C:\Program Files\MongoDB\Server\3.4\bin\mongod.log" --install --serviceName "MongoDB"

Убедитесь, что папка C:\data\db существует

Открытые услуги с:

services.msc

Найти MongoDB -> Щелкните правой кнопкой мыши -> Пуск

19 голосов
/ 29 июня 2011

Вы можете использовать команду ниже для запуска mongodb в качестве службы Windows

"C:\mongodb\bin\mongod" --bind_ip  yourIPadress  --logpath  "C:\data\dbConf\mongodb.log"  --logappend  --dbpath  "C:\data\db"  --port yourPortNumber --serviceName "YourServiceName" --serviceDisplayName "YourServiceName" --install 

Если вы используете mongodb с параметрами по умолчанию, вы можете использовать эти значения:

  • ваш IP-адрес: 127.0.0.1 или localhost
  • yourPortNumber: 27017 (порт по умолчанию) или не указывайте --port
  • serviceDisplayName: только если вы запускаете более одного сервиса (начиная с mongodb 1.8)

Подробнее об этой команде можно прочитать здесь

http://www.mongodb.org/display/DOCS/Windows+Service

14 голосов
/ 24 апреля 2013

Этот скрипт PowerShell загружает и устанавливает MongoDB в качестве службы Windows:

Set-ExecutionPolicy RemoteSigned

$mongoDbPath = "C:\MongoDB" 
$mongoDbConfigPath = "$mongoDbPath\mongod.cfg"
$url = "http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.4.9.zip" 
$zipFile = "$mongoDbPath\mongo.zip" 
$unzippedFolderContent ="$mongoDbPath\mongodb-win32-x86_64-2008plus-2.4.9"

if ((Test-Path -path $mongoDbPath) -eq $True) 
{ 
  write-host "Seems you already installed MongoDB"
    exit 
}

md $mongoDbPath 
md "$mongoDbPath\log" 
md "$mongoDbPath\data" 
md "$mongoDbPath\data\db"

[System.IO.File]::AppendAllText("$mongoDbConfigPath", "dbpath=C:\MongoDB\data\db`r`n")
[System.IO.File]::AppendAllText("$mongoDbConfigPath", "logpath=C:\MongoDB\log\mongo.log`r`n")
[System.IO.File]::AppendAllText("$mongoDbConfigPath", "smallfiles=true`r`n")
[System.IO.File]::AppendAllText("$mongoDbConfigPath", "noprealloc=true`r`n")

$webClient = New-Object System.Net.WebClient 
$webClient.DownloadFile($url,$zipFile)

$shellApp = New-Object -com shell.application 
$destination = $shellApp.namespace($mongoDbPath) 
$destination.Copyhere($shellApp.namespace($zipFile).items())

Copy-Item "$unzippedFolderContent\*" $mongoDbPath -recurse

Remove-Item $unzippedFolderContent -recurse -force 
Remove-Item $zipFile -recurse -force

& $mongoDBPath\bin\mongod.exe --config $mongoDbConfigPath --install

& net start mongodb
14 голосов
/ 19 марта 2016

Я перепробовал все ответы, а затем сделал так, как описывает https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/#configure-a-windows-service-for-mongodb-community-edition.

Использовать файл конфигурации ...

"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install

10 голосов
/ 11 сентября 2016

Это было единственное, что сработало для меня. Поскольку все должно было быть абсолютным путем:

C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt

Мне также пришлось запустить его с admin cmd

6 голосов
/ 03 декабря 2015

Рекомендуемый способ mongod --install приводит к ошибке:

2015-12-03T18:18:28.896+0100 I CONTROL  --install has to be used with a log file for server output

После установки mongodb в C:\mongodb вам нужно просто добавить лог-путь:

mongod --install --logpath C:\mongodb\logs\mongo.log

Путь к файлу журнала должен существовать, и это должен быть абсолютный путь Windows. Затем вы запускаете сервис MongoDB, набрав:

net start MongoDB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...