如何运行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 MongoDBStart-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)

这里有更多关于这个命令的信息

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

不同于其他答案这将..

系统重新启动/重启时自动启动服务

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”。

最简单的方法是,

  1. 创build文件夹C:\data\db
  2. 创build文件C:\data\db\log.txt
  3. 以“以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" 
  4. 启动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作为窗口服务的步骤

  1. 以pipe理员身份打开命令提示
  2. 键入cd C:\Program Files\MongoDB\Server\3.2\bin (正确检查path,因为您可能安装了不同的版本,而不是3.2)。
  3. 按回车
  4. 键入net start MongoDB
  5. 按回车
  6. 按Windows + R键入services.msc并检查Mongo是否作为服务运行。

这些是作为Windows服务安装MongoDB的步骤:

  1. 创build一个日志目录,例如C:\MongoDB\log

  2. 创build一个数据库目录,例如C:\MongoDB\db

  3. 用下面的行准备一个configuration文件

    dbpath=C:\MongoDB\db

    logpath=C:\MongoDB\log

    将名为mongod.cfg的configuration文件放在文件夹“C:\ MongoDB \”中

  4. 下面的命令将在您的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"

  5. 一旦你运行这个命令,你将会得到[SC] CreateService SUCCESS

  6. 在命令提示符下运行以下命令

    net start MongoDB