Wie kann ich MongoDB so einrichten, dass es als Windows-Dienst ausgeführt werden kann?
Wie kann ich MongoDB so einrichten, dass es als Windows-Dienst ausgeführt werden kann?
Antworten:
Ich denke, wenn Sie es mit dem --install
Befehlszeilenschalter ausführen , wird es als Windows-Dienst installiert.
mongod --install
Es könnte sich jedoch lohnen, diesen Thread zuerst zu lesen . Es scheint einige Probleme mit relativen / absoluten Pfaden zu geben, wenn der entsprechende Registrierungsschlüssel geschrieben wird.
net start MongoDB
Nachdem ich es einige Stunden lang versucht hatte, tat ich es endlich.
Stellen Sie sicher, dass Sie das <MONGODB_PATH>\bin
Verzeichnis zur Systemvariablen hinzugefügt habenPATH
Zuerst habe ich diesen Befehl ausgeführt:
D:\mongodb\bin>mongod --remove
Dann habe ich diesen Befehl ausgeführt, nachdem ich die Eingabeaufforderung als Administrator geöffnet hatte:
D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install
Danach direkt dort in der Eingabeaufforderung ausführen:
services.msc
Suchen Sie nach dem MongoDB-Dienst und klicken Sie auf Start.
Wenn Sie dies nicht tun, enthält Ihre Protokolldatei ( D:\mongodb\log.txt
im obigen Beispiel) Zeilen wie die folgenden:
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)
Wenn Sie versuchen, den Dienst über eine Nicht-Administratorkonsole (dh net start MongoDB
oder Start-Service MongoDB
in PowerShell) zu starten , erhalten Sie eine Antwort wie folgt:
System error 5 has occurred.
Access is denied.
oder dieses:
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
anstelle von verwenden services.msc
. ( mongod
Empfahl mir das.)
nicht nur --install
,
brauche auch --dbpath
und--logpath
und nach dem Neustart des Betriebssystems müssen Sie "mongod.lock " manuell löschen
mongod.lock
Fehler auf meinemWindows 8 x64
Im Gegensatz zu anderen Antworten wird dies ..
Starten Sie den Service automatisch beim Neustart / Neustart des Systems
(1) Installieren Sie MongoDB
(2) Bin zum Pfad hinzufügen
(3) Erstellen Sie c: \ data \ db
(4) Erstellen Sie c: \ data \ log
(5) Erstellen Sie c: \ data \ mongod.cfg mit Inhalten.
systemLog:
destination: file
path: c:\data\log\mongod.log
storage:
dbPath: c:\data\db
(6) So erstellen Sie einen Dienst, der beim Neustart automatisch gestartet wird . 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) Starten Sie den Dienst. LAUFEN SIE ALS ADMIN.
net start MongoDB
WICHTIG: Auch wenn hier steht, dass der MongoDB-Dienst erfolgreich gestartet wurde, kann dies fehlschlagen
Um zu überprüfen, ob Systemsteuerung> Dienste geöffnet ist, stellen Sie sicher, dass der Status des MongoDB-Dienstes "Wird ausgeführt" lautet.
Wenn nicht, überprüfen Sie Ihre Protokolldatei unter C: \ data \ log \ mongod.log auf den Grund für den Fehler und beheben Sie ihn
(Starten Sie MongoDB nicht über Systemsteuerung> Dienste, verwenden Sie .. net start MongoDB)
(8) Starten Sie Ihren Computer schließlich neu, während MongoDB ausgeführt wird, und er wird beim Neustart weiterhin ausgeführt
Wenn du es jemals töten willst ..
net stop MongoDB
sc.exe delete MongoDB
3.4
zur 3.6
Version wechselnsc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
Die folgenden Schritte gelten für Windows.
Führen Sie unten in einer Verwaltung cmd
mongod --remove
Dadurch wird der vorhandene MongoDB-Dienst (falls vorhanden) entfernt.
mongod --dbpath "C:\data\db" --logpath "C:\Program Files\MongoDB\Server\3.4\bin\mongod.log" --install --serviceName "MongoDB"
Stellen Sie sicher, dass der C:\data\db
Ordner vorhanden ist
Offene Dienste mit:
services.msc
Suchen Sie MongoDB -> Rechtsklick -> Start
Sie können den folgenden Befehl verwenden, um mongodb als Windows-Dienst auszuführen
"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 Standardparametern verwenden, können Sie folgende Werte verwenden:
Weitere Informationen zu diesem Befehl finden Sie hier
Ich habe alle Antworten ausprobiert und es dann so gemacht, wie es https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/#configure-a-windows-service-for-mongodb-community-edition beschreibt .
Verwenden Sie eine Konfigurationsdatei ...
"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install
Dieses PowerShell-Skript lädt MongoDB als Windows-Dienst herunter und installiert es:
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
Dies war das einzige, was für mich funktioniert hat. Da musste alles ein absoluter Weg sein:
C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt
Ich musste es auch laufen lassen admin cmd
Der empfohlene Weg mongod --install
führt zu Fehlern:
2015-12-03T18:18:28.896+0100 I CONTROL --install has to be used with a log file for server output
Nachdem C:\mongodb
Sie mongodb installiert haben, müssen Sie einfach den Protokollpfad hinzufügen:
mongod --install --logpath C:\mongodb\logs\mongo.log
Der Pfad zur Protokolldatei muss vorhanden sein und ein absoluter Windows-Pfad sein. Anschließend starten Sie den MongoDB-Dienst, indem Sie Folgendes eingeben:
net start MongoDB
Arbeiten an Mongo DB: 3.6
(1) Installieren Sie MongoDB
(2) Fügen Sie der Umgebungspfadvariablen bin hinzu
(3) Erstellen c:\data\db
(4) Erstellen c:\data\mongod.log
(5) Führen Sie unter Befehl für bin
Ordner aus
. \ mongod.exe --install --logpath c: \ data \ mongod.log --logappend --bind_ip 12 7.0.0.1 --dbpath c: \ data \ db
(6) Mongo db als Dienst starten
Nettostart MongoDB
(7) Führen Sie schließlich die mongo
Befehlszeile aus, um zu überprüfen, ob die Mongo-Shell 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 hat bei mir funktioniert:
sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\bin\mongod.config" displayname= "MongoDB 2.6 Standard" start= "auto"
Das Entkommen aus dem binPath schlug für mich fehl, wie in der Mongo-Dokumentation beschrieben
Gescheitert:
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,
C:\data\db
C:\data\db\log.txt
Öffnen Sie die Eingabeaufforderung als "Als Administrator ausführen" und stellen Sie sicher, dass der Verzeichnispfad von mogodb bin korrekt ist, und schreiben Sie
C:\Program Files\MongoDB\Server\3.4\bin> mongod.exe --install mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt"
Starten Sie den Mongodb-Service:
net run MongoDB
Arbeiten an MongoDB 3.4 [Windows]
Erstellen Sie mit dieser Konfiguration eine Datei in 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
Führen Sie diesen Befehl in Powershell mit Administratorleistung aus, um MongoDb als Dienst zu installieren
mongod --config = "C: \ mongodb \ mongodb.config" --install --service
Öffnen Sie Services.msc, suchen Sie nach MongoDb und starten Sie es
Ich bin auf Version 2.4.9 und verwende eine Konfigurationsdatei. Der Dienst würde erst gestartet, wenn ich das Gleichheitszeichen in der Konfigurationsdatei mit Leerzeichen umgeben habe:
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 Sie bei der Installation des Dienstes einen absoluten Pfad für die Konfigurationsdatei verwenden müssen, z.
c:\mongodb\bin\>mongodb.exe C:\mongodb\bin\mongod.conf --install
Seien Sie nicht versucht, Anführungszeichen um einen Datenbankpfad mit Leerzeichen zu setzen. Der Dienst scheint zu starten, wenn Sie net start MongoDB ausführen , wird jedoch beendet. Überprüfen Sie die Protokolldateien auf Bestätigung, dass der Dienst wirklich gestartet wurde.
Ich fand, dass Sie: dbpath, config und logfile mit dem Installationsflag an mongod übergeben sollten
Beispiel:
mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install
Hinweis: Ich habe einen Mongod-Pfad in meiner Pfadvariablen.
Sie können den Dienst steuern mit:
net start mongodb
net stop mongodb
Dies sind die Schritte zum Installieren von MongoDB als Windows-Dienst:
Erstellen Sie ein Protokollverzeichnis, z C:\MongoDB\log
Erstellen Sie ein Datenbankverzeichnis, z C:\MongoDB\db
Bereiten Sie eine Konfigurationsdatei mit den folgenden Zeilen vor
dbpath=C:\MongoDB\db
logpath=C:\MongoDB\log
Legen Sie die Konfigurationsdatei mit dem Namen mongod.cfg im Ordner "C: \ MongoDB \" ab.
Mit dem folgenden Befehl wird der Windows-Dienst auf Ihrem Computer installiert
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"
Sobald Sie diesen Befehl ausführen, erhalten Sie die [SC] CreateService SUCCESS
Führen Sie den folgenden Befehl an der Eingabeaufforderung aus
net start MongoDB
Wenn Sie MongoDB 2.6.1 oder höher mithilfe des MSI-Downloads von einer Administrator-Eingabeaufforderung installieren , sollte automatisch eine Dienstdefinition für Sie erstellt werden.
In der MongoDB-Dokumentation finden Sie auch ein Lernprogramm, mit dem Sie bei Bedarf manuell eine Windows-Dienstdefinition erstellen können.
Diese Antwort richtet sich an Benutzer, die mongo DB bereits mit dem MSI-Installationsprogramm installiert haben.
Angenommen, Ihr standardmäßig installierter Speicherort ist "C: \ Programme \ MongoDB \ Server \ 3.2 \ bin".
Schritte zum Ausführen von Mongo als Fensterservice
cd C:\Program Files\MongoDB\Server\3.2\bin
(überprüfen Sie den Pfad ordnungsgemäß, da möglicherweise eine andere Version installiert ist und nicht 3.2).net start MongoDB
services.msc
und überprüfen Sie, ob Mongo als Dienst ausgeführt wird.System error 2 has occurred. The system cannot find the file specified.
mongod, mongodb auch versucht.
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
Überprüfen Sie die Windows-Dienste
Wenn Sie einen Dienst für Mongo haben, entfernen Sie ihn, indem Sie den folgenden Befehl ausführen
mongod --remove
Erstellen Sie die Datei mongo.cfg mit den folgenden Inhalten
systemLog:
Ziel: Dateipfad
: c: \ data \ log \ mongod.log
Speicher:
dbPath: c: \ data \ db
Pfad: Wo möchten Sie die Protokolldaten speichern
? dbPath: Ihr Datenbankverzeichnis
Führen Sie dann den folgenden Befehl aus
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 file address
Anzeigename: Ihr Dienstname
Dienst starten
net start MongoDB
Jetzt sind alle Dinge erledigt. Geniesse es
In meinem Fall erstelle ich die Datei mongod.cfg neben der Datei mongd.exe mit dem folgenden 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 führe ich einen der beiden Befehle aus, um 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>
Die folgenden Angaben sind nicht korrekt. Beachten Sie, dass die Anführungszeichen erforderlich sind.
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>
Bitte versuchen Sie 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