Как я могу запустить MongoDB как службу Windows?
-
19-09-2019 - |
Вопрос
Как я могу настроить MongoDB, чтобы он мог работать как служба Windows?
Решение
Я думаю, что если вы запустите его с помощью --install
переключатель командной строки устанавливает его как службу Windows.
mongod --install
Возможно, это стоит прочитать этот поток но сначала.Похоже, при записи соответствующего раздела реестра возникают некоторые проблемы с относительными / абсолютными путями.
Другие советы
После нескольких часов попыток у меня наконец получилось.
Убедитесь, что вы добавили <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
не только --install
,
также нужно --dbpath
и --logpath
и после перезагрузки ОС вам нужно удалить "монгод.запри" вручную
В отличие от других ответов , этот сработает ..
ЗАПУСКАЙТЕ СЛУЖБУ АВТОМАТИЧЕСКИ ПРИ ПЕРЕЗАГРУЗКЕ СИСТЕМЫ
Установка MongoDB
Windows
(1) Установите MongoDB
(2) Добавить ячейку в path
(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.зарегистрируйте причину сбоя и исправьте ее
(Не запускайте MongoDB через Панель управления> Службы, используйте ..чистый запуск MongoDB)
(8) Наконец, перезагрузите свой компьютер с запущенным MongoDB, и он по-прежнему будет работать при перезапуске
Если ты когда - нибудь захочешь его убить ..
net stop MongoDB
sc.exe delete MongoDB
Приведенные ниже шаги применимы к 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 -> Щелкните правой кнопкой мыши -> Пуск
Вы можете использовать приведенную ниже команду для запуска 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
- Номер вашего порта :27017 (порт по умолчанию) или не ставьте --port
- serviceDisplayName Имя сервисного дисплея :только если вы запускаете более одного сервиса (начиная с mongodb 1.8)
Здесь есть более подробная информация об этой команде
Этот скрипт 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
Я перепробовал все ответы, а затем сделал это следующим образом 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
Это было единственное, что у меня сработало.Поскольку все должно было быть абсолютным путем:
C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt
Мне также пришлось запустить его из admin cmd
Рекомендуемый способ 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
Рассмотрите возможность использования
mongod --install --rest --master
Работа с базой данных Mongo:3.6
(1) Установите MongoDB
(2) Добавьте bin в переменную пути к среде
(3) Создавать c:\data\db
(4) Создавать c:\data\mongod.log
(5) Выполните приведенную ниже команду на bin
папка
.\mongod.exe --установить --путь к журналу c:\data\mongod.log --logappend --bind_ip 12 7.0.0.1 --dbpath c:\data\db
(6) Запустить mongo db как службу
чистый запуск MongoDB
(7) Наконец-то запустите mongo
в командной строке проверьте, открыта оболочка mongo или нет.
1) echo logpath=F:\mongodb\log\mongo.log > F:\mongodb\mongod.cfg
2) dbpath=F:\mongodb\data\db [add this to the next line in mongod.cfg]
C:\>F:\mongodb\bin\mongod.exe –config F:\mongodb\mongod.cfg –install
Это то, что сработало у меня:
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"
Самый простой способ - это,
- Создать папку
C:\data\db
- Создать файл
C:\data\db\log.txt
Откройте командную строку как "Запуск от имени администратора" и убедитесь, что путь к каталогу mogodb bin указан правильно, и напишите
C:\Program Files\MongoDB\Server\3.4\bin> mongod.exe --install mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt"
Запустить службу mongodb:
net run MongoDB
Работа с MongoDB 3.4 [Windows]
- Создать каталог 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 как службу, запустите эту команду в powershell с правами администратора
mongod --config="C:\mongodb\mongodb.config" --установить --сервис
Откройте Services.msc и найдите MongoDB, затем запустите его
Для версии 2.4.3 (текущая версия на дату публикации) создайте конфигурационный файл, а затем выполните следующее:
C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service
В настоящее время (до версии 2.4.4), если какой-либо путь (dbpath / logpath /config) содержит пробелы, то служба не запустится и отобразит ошибку:"Служба не отвечает на функцию управления".
Я нахожусь на версии 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
Не поддавайтесь искушению поставить кавычки вокруг dbpath ( путь к базе данных ) с пробелами.Появится сообщение о запуске службы при выполнении вами чистый запуск MongoDB но это прекратится.Проверьте файлы журнала на предмет подтверждения того, что служба действительно запущена.
Запустите "cmd.exe" от имени администратора, а затем запустите "sc.exe", чтобы добавить новую службу Windows.
например:
sc.exe create MongoDB binPath= "c:\program files\mongodb\server\3.2\bin\mongod.exe"
Я обнаружил, что ты должен пройти :dbpath , config и файл журнала для mongod с флагом установки
пример :
mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install
примечание :У меня есть mongod path в моей переменной path .
Вы можете управлять сервисом с помощью :
net start mongodb
net stop mongodb
Ниже приведены шаги по установке MongoDB в качестве службы Windows :
Создайте каталог журналов, например
C:\MongoDB\log
Создайте каталог базы данных, например
C:\MongoDB\db
Подготовьте файл конфигурации со следующими строками
dbpath=C:\MongoDB\db
logpath=C:\MongoDB\log
Поместите файл конфигурации с именем mongod.cfg в папку "C:\MongoDB\".
Следующая команда установит службу 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"
Как только вы запустите эту команду, вы получите
[SC] CreateService SUCCESS
Запустите следующую команду в командной строке
net start MongoDB
Если вы устанавливаете MongoDB 2.6.1 или новее с помощью MSI скачать из Командная строка администратора, Таким образом, для вас должно быть автоматически создано определение сервиса.
В документации MongoDB также есть руководство, которое поможет вам Создайте службу Windows вручную определение, если необходимо.
Этот ответ предназначен для тех, кто уже установил mongo DB с помощью MSI installer.
Допустим, ваше установленное местоположение по умолчанию - "C:\Program Files \MongoDB\Server\3.2 \bin".
Шаги по запуску mongo как оконной службы
- Откройте командную строку от имени администратора
- Тип
cd C:\Program Files\MongoDB\Server\3.2\bin
(проверьте путь должным образом, так как у вас может быть установлена другая версия, а не 3.2). - Нажмите enter
- Тип
net start MongoDB
- Нажмите enter
- Нажмите Windows + R, введите
services.msc
и проверьте, запущен ли Mongo как сервис.
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
проверьте службы Windows
если у вас есть сервис для mongo, удалите его, выполнив следующую команду
mongod --remove
создайте файл mongo.cfg с приведенным ниже содержимым
Системный журнал:
пункт назначения:файл
путь:c:\data\log\mongod.log
Хранение:
dbPath ( путь к базе данных ):c:\data\dbпуть:где вы хотите хранить данные журнала
dbPath ( путь к базе данных ):каталог вашей базы данныхзатем выполните следующую команду
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"
Бинпат :каталог установки mongodb
конфигурация:адрес файла .cfg
DisplayName: Имя вашей службы.
начать обслуживание
net start MongoDB
теперь все сделано .наслаждайся этим
В моем случае я создаю файл 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>
Пожалуйста, попробуйте выполнить действия в Mongo DB:3.6 и Windows 10
mongod --remove
mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --service
mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --install
net start MongoDB