如何将MongoDB作为Windows服务运行?


Answers:


118

我认为,如果您使用--install命令行开关运行它,它将作为Windows服务安装。

mongod --install

不过,可能值得一读该线程。写入相关的注册表项时,相对/绝对路径似乎存在一些问题。


7
我终于设法通过执行以下命令进行安装:mongod.exe --service
heisthedon 2010年

3
似乎您真正需要做的是在命令行中输入完整路径:c:\> c:\ mongodb \ bin \ mongod.exe --service。但是,请确保以管理员身份运行命令窗口(尤其是在Windows服务器上),否则UAC会让您受挫。
JC Grubbs 2010年

2
这个要点可以节省开发机器的时间gist.github.com/serdarb/5102848
Serdar

1
在使用--install运行之后,您必须net start MongoDB
约翰·

17
它需要一个日志文件路径,您可以添加dbpath和日志文件路径,例如mongod --dbpath =“ c:\ data \ db” --logpath =“ c:\ data \ db \ log.txt” --install,之后这需要运行net start MongoDB。
sivaram636

355

经过几个小时的尝试,我终于做到了。

确保已将<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 MongoDBStart-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

10
您也可以使用net start MongoDB代替services.msc。(mongod向我推荐。)

1
这对我有用。如果尚不存在日志文件的路径,则必须手动创建该路径(在示例中,我使用mongo目录以外的路径)。
dgundersen

最初,Mongo作为服务开始,但是我的数据库为空。我只能通过在路径中添加\ data来查看以前存在的数据库:mongod --dbpath = D:\ mongodb \ data
Jeremy Thille,2015年

“确保以管理员身份运行命令提示符”-它完成了工作!以正常权限运行不会写任何警告,但不会创建服务。权限,权限,权限!
Dzoukr

1
应该是经过验证的答案
Logan Wlv

63

不仅--install

还需要--dbpath--logpath

重新启动操作系统后,您需要手动删除“ mongod.lock


4
+1用于删除mongod.lock文件。对于在64位上运行的1.8.1来说,这似乎仍然是一个问题。
SethO 2011年

4
甚至指定--config并在那里定义dbpath,logpath和其他选项更好。
奥列格(Oleg)2012年

3
看来此mongod.lock错误已修正为我的问题Windows 8 x64
Jonathan Czitkovics 2013年

50

与其他答案不同的是..

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

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)创建将在重新启动自动启动的服务.. 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.43.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"
guru_007

28

以下步骤适用于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- >右键单击->开始


1
完善!注意,文件夹必须存在(至少一个用于日志)。
迭戈·扬西奇

关于旁注的次要问题:文件也不需要存在吗?我可以隐约记得没有空文件本身给我带来的问题。
Fariz Fakkel

1
完美的解决方案。
sapatelbaps

21

您可以使用以下命令将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



14

此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

10

这是唯一对我有用的东西。由于一切都必须走绝对路径:

C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt

我还必须从 admin cmd


7

推荐的方法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您只需添加日志路径:

mongod --install --logpath C:\mongodb\logs\mongo.log

日志文件的路径必须存在,并且必须是Windows的绝对路径。然后,通过键入以下内容来启动MongoDB服务:

net start MongoDB


5

在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是否打开。



4

这对我有用:

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"

1
以管理员身份运行cmd并运行以下命令:sc.exe create MongoDB binPath =“” d:\ MongoDB \ bin \ mongod.exe --service --config = d:\ MongoDB \ bin \ mongod.config“ displayname =” MongoDB 2.6标准”开始=“自动”
Akash5288'9

4

最简单的方法是

  1. 创建文件夹 C:\data\db
  2. 建立档案 C:\data\db\log.txt
  3. 以“以管理员身份运行”打开命令提示符,并确保mogodb bin目录路径正确并写入

    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

无法将“ C:\ Program”识别为内部或外部命令,可操作程序或批处理文件。
151291

4

在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中运行此命令

    mongod --config =“ C:\ mongodb \ mongodb.config” --install --service

  • 打开Services.msc并查找MongoDb,然后启动它


3

对于2.4.3版(截至发布日期的当前版本),创建一个配置文件,然后执行以下操作:

C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service


3

当前(最高版本2.4.4),如果任何路径(dbpath / logpath / config)包含空格,则该服务将无法启动,并显示错误:“该服务未响应控制功能”。


2

我使用的是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时,该服务似乎已启动,但它将终止。检查日志文件以确认服务已真正启动。


2

以管理员身份运行“ cmd.exe”,然后运行“ sc.exe”以添加新的Windows服务。

例如:

sc.exe create MongoDB binPath= "c:\program files\mongodb\server\3.2\bin\mongod.exe"

2

我发现您应该通过安装标志将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 

2

这些是将MongoDB安装为Windows Service的步骤:

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

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

  3. 用以下几行准备配置文件

    dbpath=C:\MongoDB\db

    logpath=C:\MongoDB\log

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

  4. 以下命令将在您的计算机上安装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



1

此答案适用于已使用MSI安装程序安装mongo DB的用户。

假设您的默认安装位置为“ C:\ Program Files \ MongoDB \ Server \ 3.2 \ bin”

将mongo作为窗口服务运行的步骤

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

有正确的路径,但会出错:也System error 2 has occurred. The system cannot find the file specified.尝试过mongod,mongodb。
151291


0
  1. 检查Windows服务

    如果您有mongo服务,请通过运行bellow命令将其删除
    mongod --remove

  2. 创建具有以下内容的mongo.cfg文件

    systemLog:
    目标位置:文件
    路径:c:\ data \ log \ mongod.log
    存储:
    dbPath:c:\ data \ db

    路径:要将日志数据存储到的位置
    dbPath:数据库目录

  3. 然后运行波纹管命令

    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:您的服务名称

  4. 开始服务

    net start MongoDB

现在一切都完成了。享受那个


0

就我而言,我在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>

-1

请尝试Mongo DB:3.6和Windows 10中的步骤

  1. mongod --remove
  2. mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --service
  3. mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --install
  4. net start MongoDB

MongoDB 4.0在Windows 64位系统上运行良好。除非您尝试通过在mongod.cfg中的“安全性”设置中添加“授权:已启用”行来确保其安全。然后,它导致Windows报告错误消息“服务未及时启动”。知道这里发生了什么吗?
David Edwards
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.