如何设置MongoDB,使其可以作为Windows服务运行?
如何设置MongoDB,使其可以作为Windows服务运行?
Answers:
我认为,如果您使用--install
命令行开关运行它,它将作为Windows服务安装。
mongod --install
不过,可能值得一读该线程。写入相关的注册表项时,相对/绝对路径似乎存在一些问题。
net start MongoDB
经过几个小时的尝试,我终于做到了。
确保已将<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
net start MongoDB
代替services.msc
。(mongod
向我推荐。)
不仅--install
,
还需要--dbpath
和--logpath
重新启动操作系统后,您需要手动删除“ mongod.lock ”
mongod.lock
错误已修正为我的问题Windows 8 x64
与其他答案不同的是..
在系统重新启动/重新启动时自动启动服务
(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)创建将在重新启动时自动启动的服务.. RUN AS ADMIN ..
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启动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。
在管理中运行以下 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与默认参数一起使用,则可以使用以下值:
这里有关于此命令的更多信息
我尝试了所有答案,然后按照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
在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是否打开。
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/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” --install --service
打开Services.msc并查找MongoDb,然后启动它
我使用的是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时,该服务似乎已启动,但它将终止。检查日志文件以确认服务已真正启动。
我发现您应该通过安装标志将dbpath,config和logfile传递给mongod
例如:
mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install
注意:我的path变量中有mongod path。
您可以使用以下方法控制服务:
net start mongodb
net stop mongodb
这些是将MongoDB安装为Windows Service的步骤:
创建一个日志目录,例如 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
此答案适用于已使用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
services.msc
并检查Mongo是否作为服务运行。System error 2 has occurred. The system cannot find the file specified.
尝试过mongod,mongodb。
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
检查Windows服务
如果您有mongo服务,请通过运行bellow命令将其删除
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安装目录
配置:.cfg文件地址
DisplayName:您的服务名称
开始服务
net start MongoDB
现在一切都完成了。享受那个
就我而言,我在mongd.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