我该如何设置MongoDB以便它可以作为Windows服务运行?
我该如何设置MongoDB以便它可以作为Windows服务运行?
经过几个小时的尝试,我终于做到了。
<MONGODB_PATH>\bin
目录添加到系统变量PATH
中步骤 1: 执行此命令:
D:\mongodb\bin>mongod --remove
第二步:以管理员身份打开命令提示符后执行此命令:
D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install
注意:在上面的命令后,您还可以添加--serviceName MongoDB
。
services.msc
// OR
net start MongoDB
查找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)
如果您尝试从非管理员控制台启动服务(例如在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
net start MongoDB
来启动它,而不是使用services.msc
。(mongod
建议我这样做。) - Joe我认为如果你使用 --install
命令行开关运行它,它会将其安装为 Windows 服务。
mongod --install
然而,首先阅读 这篇帖子可能是值得的。当相关注册表键被写入时,似乎存在相对/绝对路径的一些问题。
net start MongoDB
。 - John不仅需要--install
,
还需要--dbpath
和--logpath
在重启操作系统后,您需要手动删除"mongod.lock"
mongod.lock
й”ҷиҜҜе·Із»Ҹиў«дҝ®еӨҚдәҶгҖӮ - Jonathan Czitkovics与其他答案不同,这个答案将会...
在系统重启/重新启动时自动启动服务
(1) 安装MongoDB
(2) 将bin添加到路径中
(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,请使用 .. net start 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.6\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
。 - guru_007cmd
窗口中运行以下命令。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 -> 右键单击 -> 启动
"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,则可以使用以下值:
我尝试了所有答案,最终按照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
这个 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
这是唯一对我有效的方法,因为所有内容都必须是绝对路径:
C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt
我也必须从 管理员命令提示符
运行它。
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