如何运行MongoDB作为Windows服务?
如何设置MongoDB,使其可以作为Windows服务运行?
我想如果使用--install
命令行开关运行它,它会将其安装为Windows服务。
mongod --install
可能首先阅读这个线程 。 在写入相关的registry项时,似乎存在相对/绝对path的一些问题。
试了几个小时后,我终于做到了。
确保你添加了/ bin目录到你的系统variablesPATH
首先我执行这个命令:
D:\mongodb\bin>mongod --remove
首先我以pipe理员身份打开命令提示符后执行此命令:
D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install
之后,在命令提示符下执行:
services.msc
并寻找MongoDB服务,然后点击开始。
注:请确保以pipe理员身份运行命令提示符。
如果你没有你的日志文件(在上面的例子中是'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)
如果您尝试从非pipe理控制台Start-Service MongoDB
在PowerShell中net start MongoDB
或Start-Service MongoDB
),您将得到如下响应:
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
并重新启动操作系统后,你需要手动删除“mongod.lock ”
您可以使用下面的命令将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,您可以使用这些值:
- yourIPadress:127.0.0.1或localhost
- yourPortNumber:27017(默认端口)或不要把–port
- serviceDisplayName:只有当你运行多个服务(因为mongodb 1.8)
这里有更多关于这个命令的信息
不同于其他答案这将..
系统重新启动/重启时自动启动服务
MongoDB安装
视窗
(1)安装MongoDB
(2)将bin添加到path
(3)创buildc:\ data \ db
(4)创buildc:\ data \ log
(5)用内容创buildc:\ data \ mongod.cfg ..
systemLog: destination: file path: c:\data\log\mongod.log storage: dbPath: c:\data\db
(6)创build将在重新启动时自动启动的服务。以pipe理员身份运行 ..
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)启动服务..以pipe理员身份运行..
net start MongoDB
重要:即使这说'MongoDB服务已经成功启动',它可能会失败
要打开“控制面板”>“服务”,请确保MongoDB服务的状态为“正在运行”
如果没有,请检查C:\ data \ log \ mongod.log中的日志文件,查找失败的原因并解决
(不要通过控制面板>服务启动MongoDB,使用.. net start MongoDB)
(8)最后,在MongoDB运行的情况下重新启动你的机器,它将在重新启动的时候继续运行
如果你想杀了它..
net stop MongoDB sc.exe delete MongoDB
我尝试了所有的答案,然后按照https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/#configure-a-windows-service-for-mongodb-community-edition描述。;
使用configuration文件…
"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install
这个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
这是我唯一的工作。 因为一切都必须是绝对的path:
C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt
我也必须从admin cmd
运行它
以下步骤适用于Windows。
在pipe理员 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
findMongoDB – >右键单击 – >开始
考虑使用
mongod --install --rest --master
推荐的方法mongod --install
结果错误:
2015-12-03T18:18:28.896+0100 I CONTROL --install has to be used with a log file for server output
在C:\mongodb
中安装了mongodb之后,您只需简单地添加logpath即可:
mongod --install --logpath C:\mongodb\logs\mongo.log
日志文件的path必须存在,并且必须是绝对的Windowspath。 然后通过键入以下命令启动MongoDB服务:
net start MongoDB
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"
如Mongo文档中所述,转义binPath失败了
失败:
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"
对于版本2.4.3(发布date的当前版本),创build一个configuration文件,然后执行以下操作:
C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service
目前(最高版本2.4.4),如果任何path(dbpath / logpath / config)包含空格,则服务将不会启动,并显示错误:“该服务没有响应控制function”。
最简单的方法是,
- 创build文件夹
C:\data\db
- 创build文件
C:\data\db\log.txt
-
以“以pipe理员身份运行”打开命令提示符并确保mogodb bin目录path正确并写入
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
我在版本2.4.9和使用configuration文件。 该服务将不会启动,直到我用空格在configuration文件中包围等号:
dbpath = D:\Mongo data logpath = C:\mongodb\logs\mongo.log logappend = true
本来我有:
logpath=C:\mongodb\logs\mongo.log
我还发现,在安装服务时,您必须使用configuration文件的绝对path,例如:
c:\mongodb\bin\>mongodb.exe C:\mongodb\bin\mongod.conf --install
不要试图用空格在dbpath周围放置逗号。 当你执行net start MongoDB时,服务似乎会开始,但是会终止。 检查日志文件以确认服务已经真正开始。
以pipe理员身份运行“cmd.exe”,然后运行“sc.exe”以添加新的Windows服务。
例如:
sc.exe create MongoDB binPath= "c:\program files\mongodb\server\3.2\bin\mongod.exe"
在MongoDB 3.4上工作[Windows]
- 创build目录C:/ mongodb / data
-
在C:/mongodb/mongodb.config中使用此configuration创build一个文件:
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作为服务安装,请使用admin权限在powershell中运行此命令
mongod –config =“C:\ mongodb \ mongodb.config”–install –service
-
打开Services.msc并查找MongoDb,然后启动它
如果您使用pipe理员命令提示符下的MSI下载来安装MongoDB 2.6.1或更高版本,则应自动为您创build服务定义。
MongoDB文档还有一个教程,可以帮助您手动创buildWindows服务定义(如果需要)。
我发现你应该通过:dbpath,config和logfile来使用安装标志mongod
例如:
mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install
注意:我的pathvariables中有mongodpath。
您可以通过以下方式控制服务:
net start mongodb net stop mongodb
这个答案适用于已经使用MSI安装程序安装了mongo DB的用户。
假设您的默认安装位置是“C:\ Program Files \ MongoDB \ Server \ 3.2 \ bin”
运行mongo作为窗口服务的步骤
- 以pipe理员身份打开命令提示
- 键入
cd C:\Program Files\MongoDB\Server\3.2\bin
(正确检查path,因为您可能安装了不同的版本,而不是3.2)。 - 按回车
- 键入
net start MongoDB
- 按回车
- 按Windows + R键入
services.msc
并检查Mongo是否作为服务运行。
这些是作为Windows服务安装MongoDB的步骤:
-
创build一个日志目录,例如
C:\MongoDB\log
-
创build一个数据库目录,例如
C:\MongoDB\db
-
用下面的行准备一个configuration文件
dbpath=C:\MongoDB\db
logpath=C:\MongoDB\log
将名为mongod.cfg的configuration文件放在文件夹“C:\ MongoDB \”中
-
下面的命令将在您的
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"
上安装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