Wie kann ich MongoDB als Windows-Dienst?
-
19-09-2019 - |
Frage
Wie kann ich MongoDB so kann es als Windows-Dienst ausgeführt?
Lösung
Ich denke, wenn man es mit der --install
Befehlszeilenoption ausgeführt, installiert er es als Windows-Dienst.
mongod --install
Es könnte lesenswert sein dieses Themas zuerst obwohl. Es scheint einige Probleme mit relativen / absoluten Pfaden zu sein, wenn der entsprechende Registrierungsschlüssel geschrieben wird.
Andere Tipps
Nach mehreren Stunden versucht, ich habe es schließlich tat.
Stellen Sie sicher, dass Sie das <MONGODB_PATH>\bin
Verzeichnis der Systemvariablen PATH
hinzugefügt
Zuerst habe ich ausgeführt, um diesen Befehl ein:
D:\mongodb\bin>mongod --remove
Dann ausgeführt ich diesen Befehl nach dem Öffnen Eingabeaufforderung als Administrator:
D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install
Nach diesem Recht in der Eingabeaufforderung dort ausführen:
services.msc
Und Look für MongoDB-Dienst und klicken Sie auf Start.
. Hinweis: Stellen Sie sicher, Eingabeaufforderung als Administrator ausführen
Wenn Sie dies nicht tun, Ihre Log-Datei ( 'D: \ mongodb \ log.txt' in dem obigen Beispiel) enthält Zeilen wie diese:
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)
und wenn Sie versuchen, den Dienst von einer Nicht-Admin-Konsole zu starten, (d net start MongoDB
oder Start-Service MongoDB
in Powershell), erhalten Sie eine Antwort wie diese:
System error 5 has occurred.
Access is denied.
oder folgt aus:
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
nicht nur --install
,
müssen auch --dbpath
und --logpath
und nach dem Neustart O müssen Sie löschen "mongod.lock " manuell
Im Gegensatz zu anderen Antworten dieses Willen ..
ANFANG DER SERVICE AUTOMATISCH SYSTEM REBOOT / RESTART
MongoDB Installieren
Fenster
(1) Installieren Sie MongoDB
In(2) ist auf Pfad
(3) Erstellen Sie c: \ data \ db
(4) Erstellen Sie c: \ data \ log
(5) Erstellen Sie c: \ data \ mongod.cfg mit Inhalt ..
systemLog:
destination: file
path: c:\data\log\mongod.log
storage:
dbPath: c:\data\db
(6) Dienst zu erstellen, wird Autostart beim Neustart .. 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"
Starten (7) den Dienst .. RUN AS ADMIN ..
net start MongoDB
WICHTIG: Auch wenn dieser sagt: ‚Der MongoDB-Dienst wurde erfolgreich gestartet‘ es kann fehlschlagen
Um überprüfen öffnen die Systemsteuerung> Dienste sicher, dass der Status des MongoDB-Dienst ‚Running‘
Wenn nicht, überprüfen Sie die Protokolldatei unter C: \ data \ log \ mongod.log der Grund für das Scheitern und beheben
(Do starten MongoDB nicht über Systemsteuerung> Dienste, Einsatz .. net start MongoDB)
(8) Schließlich starten Sie Ihre Maschine mit MongoDB läuft und es wird noch läuft beim Neustart
Wenn Sie jemals wollen, es zu töten ..
net stop MongoDB
sc.exe delete MongoDB
Die folgenden Schritte gelten für Windows.
Ausführen unten in einem administrativen cmd
mongod --remove
Dies entfernt den vorhandenen MongoDB-Dienst (falls vorhanden).
mongod --dbpath "C:\data\db" --logpath "C:\Program Files\MongoDB\Server\3.4\bin\mongod.log" --install --serviceName "MongoDB"
Stellen Sie sicher, dass C:\data\db
Ordner vorhanden
Öffnen Dienste mit:
services.msc
Finden MongoDB -> Rechtsklick -> Start
Sie können unter den Befehl mongodb als Windows-Dienst für die Ausführung von
"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
Wenn Sie mongodb mit Standardparameter verwenden, können Sie diese Werte verwenden:
- yourIPadress: 127.0.0.1 oder localhost
- yourPortNumber: 27017 (Standard-Port) oder tun sie nicht put --port
- SERVICE: nur, wenn Sie laufen mehr als ein Dienst (seit mongodb 1.8)
Es gibt mehr Informationen zu diesem Befehl hier
Das Powershell-Skript heruntergeladen und installiert MongoDB als Windows-Dienst:
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
Ich habe versucht, alle Antworten und dann tat es den Weg https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/#configure-a-windows-service-for-mongodb-community- Ausgabe beschreibt.
Verwenden Sie eine Konfigurationsdatei ...
"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install
Das war das einzige, was für mich gearbeitet. Wie alles, was ein absoluter Pfad sein mußte:
C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt
Ich hatte auch sie von admin cmd
laufen
Die empfohlene Methode mongod --install
Ergebnisse in Fehler:
2015-12-03T18:18:28.896+0100 I CONTROL --install has to be used with a log file for server output
Nach der Installation mongodb in C:\mongodb
mit müssen Sie einfach die logpath hinzufügen:
mongod --install --logpath C:\mongodb\logs\mongo.log
Der Pfad zum Logfile muss vorhanden sein und es muss ein absoluter Windows-Pfad sein. Dann sind Sie den MongoDB-Dienst durch Eingabe beginnen:
net start MongoDB
Betrachten Sie mit
mongod --install --rest --master
Arbeiten an Mongo DB: 3.6
(1) Installieren Sie MongoDB
In(2) ist auf Umgebungspfad Variable
(3) Erstellen Sie c:\data\db
(4) Erstellen Sie c:\data\mongod.log
(5) Run unter Befehl auf bin
Ordner
\ mongod.exe --install --logpath c. \ Data \ mongod.log --logappend --bind_ip 12 7.0.0.1 --dbpath c: \ data \ db
(6) starten Mongo db als Service
net start MongoDB
(7) Schließlich mongo
in Befehlszeile ausgeführt zu überprüfen mongo Schale geöffnet ist oder nicht.
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
Das ist was für mich gearbeitet:
sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\bin\mongod.config" displayname= "MongoDB 2.6 Standard" start= "auto"
Escaping the binPath für mich versagt, wie in der Mongo-Dokumentation
fehlgeschlagen:
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"
Der einfachste Weg ist,
- Ordner erstellen
C:\data\db
- Erstellen Datei
C:\data\db\log.txt
-
Öffnen Sie die Eingabeaufforderung als „Ausführen als Administrator“ und stellen Sie sicher, dass das mogodb bin Verzeichnispfad korrekt ist und Schreib
C:\Program Files\MongoDB\Server\3.4\bin> mongod.exe --install mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt"
-
Start mongodb Service:
net run MongoDB
Arbeiten auf MongoDB 3.4 [Windows]
- Erstelle dir C:/mongodb/data
Erstellen Sie eine Datei in C:/mongodb/mongodb.config mit dieser Konfiguration:
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
Installieren von MongoDb als Dienst ausführen dieses Befehls in powershell mit admin-power
mongod --config="C:\mongodb\mongodb.config" --install-service
Öffnen Sie Dienste.msc und suchen Sie nach MongoDb, dann starten Sie es
Für die Version 2.4.3 (aktuelle Version ab Buchungsdatum), eine Konfigurationsdatei erstellen und dann die folgenden ausführen:
C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service
Zur Zeit (bis Version 2.4.4), wenn jeder Pfad (dbpath / logpath / config) Leerzeichen enthält, dann wird der Dienst nicht gestartet, und zeigen Sie den Fehler: „Der Dienst reagiert auf die Kontrollfunktion“ .
Ich bin auf Version 2.4.9 und unter Verwendung einer Konfigurationsdatei. Der Dienst würde nicht starten, bis ich das Gleichheitszeichen in der Konfigurationsdatei mit Leerzeichen umgeben:
dbpath = D:\Mongo data
logpath = C:\mongodb\logs\mongo.log
logappend = true
Ursprünglich hatte ich:
logpath=C:\mongodb\logs\mongo.log
Ich habe auch festgestellt, dass bei der Installation des Service, dass Sie einen absoluten Pfad für die Konfigurationsdatei zB verwenden:
c:\mongodb\bin\>mongodb.exe C:\mongodb\bin\mongod.conf --install
Do Anführungszeichen nicht versucht sein, zu setzen um ein dbpath mit Leerzeichen. Der Dienst wird erscheinen zu starten, wenn Sie ausführen net start MongoDB , aber es wird beendet. Überprüfen Sie die Protokolldateien für die Bestätigung, dass der Dienst wirklich begonnen.
Ausführen "cmd.exe" als Administrator an und führen Sie dann "sc.exe" einen neuen Windows-Dienst hinzuzufügen.
Beispiel:
sc.exe create MongoDB binPath= "c:\program files\mongodb\server\3.2\bin\mongod.exe"
fand ich, dass Sie passieren sollte: dbpath, config und Logfile mongod mit der Flagge installieren
Beispiel:
mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install
Anmerkung: Ich habe mongod Weg in meinen Pfadvariablen.
Sie können den Dienst steuern mit:
net start mongodb
net stop mongodb
Dies sind die Schritte MongoDB als Windows-Dienst zu installieren:
-
Erstellen Sie ein Log-Verzeichnis, zum Beispiel
C:\MongoDB\log
-
Erstellen Sie ein Verzeichnis db, z.B.
C:\MongoDB\db
-
Bereiten Sie eine Konfigurationsdatei mit folgenden Zeilen
dbpath=C:\MongoDB\db
logpath=C:\MongoDB\log
Legen Sie die Konfigurationsdatei mit dem Namen mongod.cfg im Verzeichnis "C: \ MongoDB \"
-
Nach dem Befehl des Windows-Dienst auf Ihrem installieren
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"
-
Wenn Sie diesen Befehl ausführen, werden Sie die
[SC] CreateService SUCCESS
bekommen -
Ausführen folgender Befehl auf Eingabeaufforderung
net start MongoDB
Wenn Sie installieren MongoDB 2.6.1 oder neuer mit dem MSI herunterladen von einem Administrator-Eingabeaufforderung , eine Service-Definition automatisch für Sie erstellt werden soll.
Die MongoDB Dokumentation hat auch eine Anleitung zu Hilfe, die Sie Manuelles erstellen eines Windows-Dienstes Definition, wenn nötig.
Diese Antwort ist für diejenigen, die bereits Mongo DB mit MSI-Installer installiert haben.
Nehmen wir an, Ihr Standard-Installationsort ist "C: \ Programme \ MongoDB \ Server \ 3.2 \ bin"
Schritte Mongo als Fenster-Dienst ausführen
- Öffnen Sie die Eingabeaufforderung als Administrator
- Typ
cd C:\Program Files\MongoDB\Server\3.2\bin
(Kontrollpfad richtig, wie Sie eine andere Version installiert haben, und nicht 3.2). - Drücken Sie die Eingabetaste
- Typ
net start MongoDB
- Drücken Sie die Eingabetaste
- Drücken von Windows + R, Typ
services.msc
und prüfen, ob Mongo wird als Dienst ausgeführt wird.
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
-
Prüffenster Dienste
Wenn Sie Service für Mongo es entfernen, indem Sie laufen unten Befehl
mongod --remove
-
mongo.cfg Datei mit Balg Inhalt erstellen
systemlog:
Ziel: Datei
Pfad: c: \ data \ log \ mongod.log
Lagerung:
DBPATH: c: \ data \ db
Pfad: wo Sie speichern Log-Daten aufrufen wollen
DBPATH: Ihr Datenbankverzeichnis
-
dann brüllt Befehl ausführen
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 Installationsverzeichnis
config: CFG-Datei Adresse
Displayname: Ihr Service Name
-
starten Service
net start MongoDB
Jetzt sind alle Dinge zu erledigen. genießen, dass
In meinem Fall erstelle ich die mongod.cfg neben dem mongd.exe mit folgendem Inhalt.
# 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:
Dann laufe ich entweder den zwei Befehl, den Dienst zu erstellen.
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>
Im Folgenden sind nicht korrekt, man beachte die Anführungszeichen entgangen sind erforderlich.
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>
Plz versuchen, die Schritte in 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