MongoDBをWindowsサービスとして実行するにはどうすればよいですか?


207

Windowsサービスとして実行できるようにMongoDBを設定するにはどうすればよいですか?


15
2015年以降にここに来る人は、おそらくドキュメントをチェックしてください: docs.mongodb.org/master/tutorial/install-mongodb-on-windows
jordanpg

うーん。これは、受け入れられた回答よりもかなり多くの作業です:
。– Kees de Kooter 2017年

回答:


118

あなたがそれを実行すると --installコマンドラインスイッチで Windowsサービスとしてインストールされる。

mongod --install

最初にこのスレッドを読む価値があるかもしれません。関連するレジストリキーが書き込まれるときに、相対パス/絶対パスにいくつかの問題があるようです。


7
私は最終的にこれを実行することでインストールに成功しました:mongod.exe --service
heisthedon

3
あなたが本当にする必要があるのは、コマンドラインでフルパスを入力することです:c:\> c:\ mongodb \ bin \ mongod.exe --service。ただし、コマンドウィンドウは必ず管理者として実行してください(特にWindowsサーバーでは)。そうしないと、UACによって妨害されます。
JCグラブス

2
この要点は、開発マシンのセットアップにかかる
Serdar

1
--installで実行した後は、次の作業が必要になりますnet start MongoDB
John

17
ログファイルパスが必要です。このmongod --dbpath = "c:\ data \ db" --logpath = "c:\ data \ db \ log.txt" --installのように、dbpathとログファイルパスを追加できます。これは、net start MongoDBを実行するために必要です。
sivaram636 2016年

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 MongoDBまたはStart-Service MongoDBPowerShell)からサービスを開始しようとすると、次のような応答が返されます。

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私にそれをお勧めします。)
Joe

1
これでうまくいきました。ログファイルへのパスが存在しない場合は、手動で作成する必要があります(この例では、mongoディレクトリ以外のパスを使用しました)。
dgundersen 2015

最初、Mongoはサービスとして開始されましたが、私のデータベースは空でした。パスに\ dataを追加することで、既存のデータベースのみを表示できました:mongod --dbpath = D:\ mongodb \ data
Jeremy Thille

「管理者としてコマンドプロンプトを実行するようにしてください」-それは仕事をしました!通常の権限で実行しても警告は表示されませんが、サービスは作成されません。許可、許可、許可!
Dzoukr 2015年

1
検証済みの回答である必要があります
Logan Wlv

63

だけでなく--install

また必要--dbpath--logpath

OSを再起動した後、手動で「mongod.lock」を削除する必要があります


4
mongod.lockファイルを削除するための+1。これは、64ビットで実行されている1.8.1の問題であるようです。
SethO

4
--configを指定して、そこにdbpath、logpathおよびその他のオプションを定義することもできます。
Oleg

3
このmongod.lockバグは私に修正されているようですWindows 8 x64
Jonathan Czitkovics 2013

50

他の回答とは異なり、これは..

システムの再起動時にサービスを自動的に開始/再起動

MongoDBインストール

ウィンドウズ

(1)MongoDBをインストールする

(2)パスにビンを追加

(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)サービスを開始します.. RUN AS ADMIN ..

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.6sc.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
パーフェクト!マイナーな注意、フォルダーが存在する必要があります(少なくともログ用のフォルダー)。
Diego Jancic 2017

サイドノートに関する軽微な質問:ファイルも存在する必要はありませんか?(空の)ファイル自体が存在しないことで問題が発生していることを漠然と覚えています。
Fariz Fakkel、2017年

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

使用を検討してください

mongod --install --rest --master

回答をルビーの回答で更新することを検討してください(あなたの回答は不完全です)
danielpopa

5

Mongo DBでの作業:3.6

(1)MongoDBをインストールする

(2)環境パス変数にビンを追加する

(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シェルが開いているかどうかを確認します。



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.execreate MongoDB binPath = "d:\ MongoDB \ bin \ mongod.exe --service --config = d:\ MongoDB \ bin \ mongod.config" displayname = "MongoDB 2.6標準 "start =" auto "
Akash5288

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

私はあなたが渡す必要があることを発見しました:インストールフラグを付けてmonpathにdbpath、config、logfile

例:

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 

2

以下は、MongoDBをWindowsサービスとしてインストールする手順です。

  1. ログディレクトリを作成します。 C:\MongoDB\log

  2. たとえば、dbディレクトリを作成します。 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. Enterキーを押します
  4. タイプ net start MongoDB
  5. Enterキーを押します
  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のサービスがある場合は、次のコマンドを実行して削除します。
    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インストールディレクトリ
    config:.cfgファイルアドレス
    DisplayName:Your Service Name

  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:

次に、2つのコマンドのいずれかを実行してサービスを作成します。

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

Plzは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の「セキュリティ」設定に「authorization:enabled」行を追加してセキュリティを試行しない限り、次に、Windowsが「サービスがタイムリーに開始されなかった」というエラーメッセージを報告します。ここで何が起こっているのでしょうか?
デビッドエドワーズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.