如何设置 MongoDB 使其可以作为 Windows 服务运行?
经过几个小时的尝试,我终于做到了。
确保:
您将
脚步:
第1步:执行此命令:
D:\mongodb\bin>mongod --remove
步骤2:以管理员身份打开命令提示符后执行此命令:
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
我认为如果您使用 --install
命令行开关运行它,它会将其安装为 Windows 服务。
mongod --install
不过,可能值得先阅读 this thread。写入相关注册表项时,相对/绝对路径似乎存在一些问题。
net start MongoDB
不仅--install
,
还需要 --dbpath
和 --logpath
重新启动操作系统后,您需要手动删除“mongod.lock”
mongod.lock
错误已在我的 Windows 8 x64
上修复
与其他答案不同,这将..
在系统重启/重启时自动启动服务
MongoDB 安装
视窗
(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.4\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
以下步骤适用于 Windows。
在 administrative 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,你可以使用这些值:
yourIPadress : 127.0.0.1 或 localhost
yourPortNumber : 27017 (默认端口) 或者不要放 --port
serviceDisplayName :仅当您运行多个服务时(从 mongodb 1.8 开始)
这里有关于这个命令的更多信息
http://www.mongodb.org/display/DOCS/Windows+Service
我尝试了所有答案,然后按照 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
我还必须从 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
在 C:\mongodb
中安装 mongodb 后,您只需添加日志路径:
mongod --install --logpath C:\mongodb\logs\mongo.log
日志文件的路径必须存在,并且必须是 Windows 绝对路径。然后通过键入以下内容启动 MongoDB 服务:
net start MongoDB
在 Mongo DB 上工作:3.6
(1) 安装 MongoDB
(2) 将bin添加到环境路径变量
(3) 创建c:\data\db
(4) 创建c:\data\mongod.log
(5) 在 bin
文件夹上运行以下命令
.\mongod.exe --install --logpath c:\data\mongod.log --logappend --bind_ip 12 7.0.0.1 --dbpath c:\data\db
(6) 启动 mongo db 作为服务
网络启动 MongoDB
(7) 最后在命令行中运行 mongo
来检查 mongo shell 是否打开。
F CONTROL [main] Failed global initialization: FileNotOpen: Failed to open "C:\ProgramData\MongoDB\log\mongod.log"
只需删除 mongod.log
文件
考虑使用
mongod --install --rest --master
对于版本 2.4.3(截至发布日期的当前版本),创建一个配置文件,然后执行以下命令:
C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service
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"
最简单的方法是,
创建文件夹 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 中使用 admin power mongod --config="C:\mongodb\mongodb.config" --install --service 运行此命令
打开 Services.msc 并查找 MongoDb,然后启动它
目前(直到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 周围放置逗号。当您执行 net start MongoDB 时,该服务似乎已启动,但它会终止。检查日志文件以确认服务已真正启动。
以管理员身份运行“cmd.exe”,然后运行“sc.exe”以添加新的 Windows 服务。
例如:
sc.exe create MongoDB binPath= "c:\program files\mongodb\server\3.2\bin\mongod.exe"
我发现您应该使用 install 标志将 : dbpath 、 config 和 logfile 传递给 mongod
例子 :
mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install
注意:我的路径变量中有 mongod 路径。
您可以通过以下方式控制服务:
net start mongodb
net stop mongodb
这些是将 MongoDB 安装为 Windows 服务的步骤:
创建一个日志目录,例如 C:\MongoDB\log 创建一个 db 目录,例如 C:\MongoDB\db 准备一个配置文件 dbpath=C:\MongoDB\db logpath=C:\MongoDB\log 放置配置文件夹“C:\MongoDB\”中名为 mongod.cfg 的文件 以下命令将在您的 sc.exe 上安装 Windows 服务 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
如果您使用 Administrator Command Prompt 中的 MSI download 安装 MongoDB 2.6.1 或更高版本,则应自动为您创建服务定义。
如果需要,MongoDB 文档还有一个教程可以帮助您进行定义。Manually Create a Windows Service
这个答案适用于那些已经使用 MSI 安装程序安装了 mongo DB 的人。
假设您的默认安装位置是“C:\Program Files\MongoDB\Server\3.2\bin”
将 mongo 作为窗口服务运行的步骤
以管理员身份打开命令提示符键入 cd C:\Program Files\MongoDB\Server\3.2\bin (正确检查路径,因为您可能安装了不同的版本,而不是 3.2)。按回车 键入 net start MongoDB 按回车 按 Windows + R,键入 services.msc 并检查 Mongo 是否作为服务运行。
System error 2 has occurred. The system cannot find the file specified.
也尝试了 mongod 、 mongodb 。
在 Windows 机器上编辑配置文件后,我只需要重新启动 MongoDB (v4.4) 服务。这是我所做的:
按 Win+R 打开运行面板 输入“services.msc”并按 Enter 搜索“MongoDB” - 您可以按“m”跳转到它。右键单击 - 选择“重新启动”
而已!
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
如果您有 mongo 服务,请检查 Windows 服务,通过运行以下命令将其删除 mongod --remove 创建具有以下内容的 mongo.cfg 文件 systemLog:目标:文件路径: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" binPath : mongodb 安装目录 config: .cfg 文件地址 DisplayName :你的服务名称 start service net start MongoDB
现在每件事都完成了。享受那个
就我而言,我使用以下内容在 mongod.exe 旁边创建 mongod.cfg。
# 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
net start MongoDB
而不是使用services.msc
来启动它。 (mongod
向我推荐了这个。)