Як я можу запустити MongoDB як службу Windows?


207

Як я можу налаштувати MongoDB, щоб він міг працювати як служба Windows?


15
Кожен, хто приїде сюди у 2015 році чи пізніше, мабуть, просто перегляне документи: docs.mongodb.org/master/tutorial/install-mongodb-on-windows
jordanpg

Хм. Це трохи більше роботи, ніж прийнята відповідь :-(.
Kees de Kooter

Відповіді:


118

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

mongod --install

Можливо, варто спочатку прочитати цю тему . Здається, є деякі проблеми щодо відносних / абсолютних шляхів, коли відповідний ключ реєстру буде записаний.


7
Нарешті мені вдалося встановити, виконавши це: mongod.exe --service
heisthedon

3
Здається, що вам дійсно потрібно зробити це ввести повний шлях у командному рядку: c: \> c: \ mongodb \ bin \ mongod.exe --service. Однак не забудьте запустити вікно команд як адміністратор (особливо на сервері Windows), інакше UAC буде зірваний.
JC Grubbs

2
цей суть може заощадити час на налаштуваннях верстатів для розробки gist.github.com/serdarb/5102848
Сердар,

1
А після запуску з --встановити, вам доведетьсяnet start MongoDB
Джон

17
Для нього потрібен шлях logfile, ви можете додати шлях dbpath та logfile, як цей mongod --dbpath = "c: \ data \ db" --logpath = "c: \ data \ db \ log.txt" --встановити, Після це вам потрібно для запуску чистого запуску MongoDB.
sivaram636

355

Пробуючи кілька годин, я нарешті це зробив.

Переконайтеся, що ви додали <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

10
Ви також можете почати його, net start MongoDBа не використовувати services.msc. ( mongodрекомендував це мені.)
Джо

1
Це працювало для мене. Шлях до файлу журналу повинен бути створений вручну, якщо він ще не існує (у прикладі я використовував шлях, відмінний від каталогу mongo).
dgundersen

Спочатку Монго почав працювати як сервіс, але моя база даних порожня. Я міг бачити мою раніше наявну базу даних, лише додавши \ дані в шлях: mongod --dbpath = D: \ mongodb \ data
Джеремі Тілль,

"Обов’язково запускайте командний рядок як адміністратор" - це зробило роботу! Запуск із звичайним дозволом не пише жодного попередження, але сервіс просто не створений. Дозволи, дозволи, дозволи!
Дзюкр

1
Має бути підтверджена відповідь
Логан Wlv

63

не тільки --install ,

також потрібно --dbpathі--logpath

і після перезавантаження ОС вам потрібно видалити "mongod.lock " вручну


4
+1 для видалення файлу mongod.lock. Це все ще залишається проблемою, коли 1.8.1 працює на 64-розрядному.
SethO

4
Краще навіть вказати --config та визначити там dbpath, logpath та інші параметри.
Олег

3
Здається, що ця mongod.lockпомилка зафіксована на моємуWindows 8 x64
Джонатан Читковікс

50

На відміну від інших відповідей, це буде ..

СТАРТУЙТЕ СЛУЖБУ АВТОМАТИЧНО НА СКАЧАННІ / РЕСТОРТАЦІЇ СИСТЕМИ

Установка 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) Створити сервіс, який автоматично запуститься при перезавантаженні .. ЗАВЕРШИТИ ЯК АДМІН ..

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 через Панель управління> Сервіси, використовуйте .. чистий запуск MongoDB)

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

Якщо ви коли-небудь захочете його вбити ..

net stop MongoDB

sc.exe delete MongoDB

спасибі він працював на мене, я просто повинен був змінити 3.4до 3.6версії в цій команді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"
guru_007

28

Наведені нижче дії стосуються 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 -> Клацніть правою кнопкою миші -> Пуск


1
Ідеально! Незначна примітка, папки повинні існувати (принаймні одна для журналів).
Дієго Янчич

Незначне запитання щодо sidenote: Чи теж файл не повинен існувати? Я нечітко пам'ятаю відсутність самого (порожнього) файлу, що створює мені проблеми.
Фаріз Факел

1
Ідеальне рішення.
sapatelbaps

21

Ви можете використовувати команду нижче для запуску 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 з параметрами за замовчуванням, ви можете використовувати ці значення:

  • ваша адреса: 127.0.0.1 або localhost
  • yourPortNumber: 27017 (порт за замовчуванням) або Dont put --port
  • serviceDisplayName: лише якщо ви запускаєте більше однієї служби (оскільки mongodb 1.8)

Більше інформації про цю команду тут

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



14

Цей сценарій 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

10

Це було єдине, що працювало на мене. Як все повинно було бути абсолютним шляхом:

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

Мені також довелося це запустити admin cmd


7

Рекомендований спосіб 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вам потрібно просто додати logpath:

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

Шлях до лог-файлу повинен існувати, і він повинен бути абсолютним шляхом Windows. Потім ви запускаєте службу MongoDB, ввівши:

net start MongoDB


5

Робота над DB DB: 3.6

(1) Встановіть MongoDB

(2) Додати бін до змінної шляху середовища

(3) Створіть c:\data\db

(4) Створіть c:\data\mongod.log

(5) Виконайте команду нижче binпапки « Команда»

. \ mongod.exe --встановити --logpath c: \ data \ mongod.log --logappend --bind_ip 12 7.0.0.1 --dbpath c: \ data \ db

(6) Запустити mongo db як сервіс

чистий старт MongoDB

(7) Нарешті запустіть mongoу командному рядку, щоб перевірити, чи оболонка монго відкрита чи ні.



4

Це для мене працювало:

sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\bin\mongod.config" displayname= "MongoDB 2.6 Standard" start= "auto"

уникнути binPath не вдалося мені, як описано в документації Mongo

Помилка:

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"

1
Запустіть cmd як адміністратор та запустіть цю команду: sc.exe створити MongoDB binPath = "d: \ MongoDB \ bin \ mongod.exe --service --config = d: \ MongoDB \ bin \ mongod.config" displayname = "MongoDB 2.6 Стандарт "start =" auto "
Akash5288

4

Найпростіший спосіб -

  1. Створити папку C:\data\db
  2. Створити файл C:\data\db\log.txt
  3. Відкрийте командний рядок як "Запустити як адміністратор" та переконайтесь, що шлях до каталогу каталогу mogodb правильний та запишіть

    C:\Program Files\MongoDB\Server\3.4\bin> mongod.exe --install mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt" 
  4. Запуск послуги mongodb:

    net run MongoDB

'C: \ Program' не розпізнається як внутрішня чи зовнішня команда, функціонуюча програма чи пакетний файл.
151291

4

Робота над MongoDB 3.4 [Windows]

  • Створіть dir C: / mongodb / data
  • Створіть файл у C: /mongodb/mongodb.config, використовуючи цю конфігурацію:

    storage:
        engine: wiredTiger
        dbPath: "C:/mongodb/data"
        directoryPerDB: true
        journal:
            enabled: true
    systemLog:
        destination: file
        path: "C:/mongodb/data/mongod.log"
        logAppend: true
        timeStampFormat: iso8601-utc
    net:
        bindIp: 127.0.0.1
        port: 27017
        wireObjectCheck : false
  • Щоб встановити MongoDb як службу, запустіть цю команду в powerhell з адмініструванням

    mongod --config = "C: \ mongodb \ mongodb.config" --встановити --service

  • Відкрийте Services.msc і знайдіть MongoDb, а потім запустіть його


3

Для версії 2.4.3 (поточна версія станом на дату публікації) створіть файл конфігурації та виконайте наступне:

C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service


3

Наразі (до версії 2.4.4), якщо будь-який шлях (dbpath / logpath / config) містить пробіли, служба не запуститься, і з’явиться помилка: "Служба не відповідає на функцію управління".


2

Я на версії 2.4.9 і використовую файл конфігурації. Служба не розпочнеться, поки я не оточую знак рівності у конфігураційному файлі пробілами:

dbpath = D:\Mongo data
logpath = C:\mongodb\logs\mongo.log 
logappend = true

Спочатку у мене були:

logpath=C:\mongodb\logs\mongo.log 

Я також виявив, що при встановленні служби ви повинні використовувати абсолютний шлях для файлу конфігурації, наприклад:

c:\mongodb\bin\>mongodb.exe C:\mongodb\bin\mongod.conf --install

Не спокушайтесь ставити перевернуті коми навколо пробілу з пробілами. Служба, як видається, запуститься, коли ви виконаєте чистий запуск MongoDB, але він припиниться. Перевірте файли журналу на підтвердження того, що сервіс дійсно запустився.


2

Запустіть "cmd.exe" як адміністратор, а потім запустіть "sc.exe", щоб додати нову службу Windows.

наприклад:

sc.exe create MongoDB binPath= "c:\program files\mongodb\server\3.2\bin\mongod.exe"

2

Я виявив, що вам слід передати: dbpath, config та logfile до mongod із прапором установки

приклад:

mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install 

Примітка. У моїй змінній шляху є шлях до монгода.

Ви можете керувати послугою за допомогою:

net start mongodb
net stop  mongodb 

2

Це кроки для встановлення MongoDB як служби Windows:

  1. Створіть каталог журналів, наприклад C:\MongoDB\log

  2. Створіть db-каталог, наприклад C:\MongoDB\db

  3. Підготуйте файл конфігурації з наступними рядками

    dbpath=C:\MongoDB\db

    logpath=C:\MongoDB\log

    Помістіть файл конфігурації з ім'ям mongod.cfg у папку "C: \ MongoDB \"

  4. Наступна команда встановить службу Windows на ваш sc.exe create MongoDB binPath= "\"C:\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\MongoDB\mongod.cfg\" DisplayName= "MongoDB 3.4" start= "auto"

  5. Після запуску цієї команди ви отримаєте [SC] CreateService SUCCESS

  6. Виконайте наступну команду в командному рядку

    net start MongoDB


1

Якщо ви встановите MongoDB 2.6.1 або новішу версію за допомогою завантаження MSI з командного рядка адміністратора версію , визначення служби повинно автоматично створюватися для вас.

Документація MongoDB також має підручник, який допоможе вам створити визначення служби Windows вручну, якщо це необхідно.


1

Ця відповідь призначена для тих, хто вже встановив DB DB, використовуючи інсталятор MSI.

Скажімо, ваше встановлене місце за замовчуванням - "C: \ Program Files \ MongoDB \ Server \ 3.2 \ bin"

Крок для запуску монго як віконної служби

  1. Відкрити командний рядок як адміністратор
  2. Тип cd C:\Program Files\MongoDB\Server\3.2\bin (перевірити шлях належним чином, оскільки у вас може бути інстальована інша версія, а не 3.2).
  3. Натисніть Enter
  4. Тип net start MongoDB
  5. Натисніть Enter
  6. Натисніть Windows + R, введіть services.mscі перевірте, чи працює Mongo як послуга.

Правильний шлях, але помилка отримання: System error 2 has occurred. The system cannot find the file specified.спробував mongod, а також mongodb.
151291


0
  1. перевірити послуги Windows

    якщо у вас є служба для mongo, видаліть її за допомогою команди run нижче
    mongod --remove

  2. створити файл mongo.cfg з наведеним нижче вмістом

    systemLog:
    призначення:
    шлях до файлу : c: \ data \ log \ mongod.log
    зберігання:
    dbPath: c: \ data \ db

    шлях: куди потрібно зберігати дані журналу
    dbPath: каталог вашої бази даних

  3. потім запустіть команду нижче

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

    binPath:
    конфігураційний каталог установки mongodb : .cfg адреса файлу
    DisplayName: Ваше ім'я служби

  4. почати службу

    net start MongoDB

тепер все робиться. насолоджуйтесь цим


0

У моєму випадку я створюю mongod.cfg поруч із mongd.exe із наступним вмістом.

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: D:\apps\MongoDB\Server\4.0\data
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  D:\apps\MongoDB\Server\4.0\log\mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0


#processManagement:

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

Потім я запускаю або дві команди, щоб створити службу.

D:\apps\MongoDB\Server\4.0\bin>mongod --config D:\apps\MongoDB\Server\4.0\bin\mongod.cfg --install

D:\apps\MongoDB\Server\4.0\bin>net stop mongodb
The MongoDB service is stopping.
The MongoDB service was stopped successfully.


D:\apps\MongoDB\Server\4.0\bin>mongod --remove
2019-04-10T09:39:29.305+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-04-10T09:39:29.309+0800 I CONTROL  [main] Trying to remove Windows service 'MongoDB'
2019-04-10T09:39:29.310+0800 I CONTROL  [main] Service 'MongoDB' removed

D:\apps\MongoDB\Server\4.0\bin>
D:\apps\MongoDB\Server\4.0\bin>sc.exe create MongoDB binPath= "\"D:\apps\MongoDB\Server\4.0\bin\mongod.exe\" --service --config=\"D:\apps\MongoDB\Server\4.0\bin\mongod.cfg\""
[SC] CreateService SUCCESS

D:\apps\MongoDB\Server\4.0\bin>net start mongodb
The MongoDB service is starting..
The MongoDB service was started successfully.

D:\apps\MongoDB\Server\4.0\bin>

Нижче наведено невірно, зауважте, що необхідні цитати потрібні.

D:\apps\MongoDB\Server\4.0\bin>sc.exe create MongoDB binPath= "D:\apps\MongoDB\Server\4.0\bin\mongod --config D:\apps\MongoDB\Server\4.0\bin\mongod.cfg"
[SC] CreateService SUCCESS

D:\apps\MongoDB\Server\4.0\bin>net start mongodb
The service is not responding to the control function.

More help is available by typing NET HELPMSG 2186.


D:\apps\MongoDB\Server\4.0\bin>

-1

Спробуйте виконати кроки в БД Mongo: 3.6 та Windows 10

  1. mongod --remove
  2. mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --service
  3. mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --install
  4. net start MongoDB

MongoDB 4.0 працює добре в 64-розрядному Windows ... ПІДНЕ ви намагаєтеся захистити його, додавши рядок "авторизація: увімкнено" до параметра "Безпека" в mongod.cfg. Тоді це призводить до того, що Windows повідомляє про повідомлення про помилку "сервіс не запустився вчасно". Будь-яка ідея, що тут відбувається?
Девід Едвардс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.