Quelle est la bonne façon de démarrer un service mongod sous Linux / OS X?

136

J'ai installé mongodb et j'ai pu l'exécuter, travailler avec, faire de simples trucs de type lecture / écriture de base de données. J'essaye maintenant de configurer mon Mac pour exécuter mongod en tant que service.

J'obtiens "Commande introuvable" en réponse à:

 init mongod start

En réponse à:

~: service mongod start
service: This command still works, but it is deprecated. Please use launchctl(8) instead.
service: failed to start the 'mongod' service

Et si j'essaye:

~: launchctl start mongod
launchctl start error: No such process

Donc, évidemment, je me trompe un peu. La prochaine étape semble être de taper des caractères aléatoires jusqu'à ce que quelque chose fonctionne. La commande qui fait le travail est: mongod --quiet &Je ne sais pas, peut - être qui est la façon dont vous êtes censé le faire? Peut-être que je devrais simplement supprimer le «mode silencieux» et ajouter > /logs/mongo.logà la fin de la ligne de commande?

Je construis un environnement de développement sur un Mac avec l'intention de faire la même chose sur un serveur Linux. Je ne suis tout simplement pas sûr des commandes Bash. Toutes les autres recherches que je fais en essayant de trouver la réponse me donnent des conseils pour les machines Windows.

Peut-être que quelqu'un connaît la version Linux des commandes?

Merci beaucoup

Alex C
la source
J'ai fait sur Windows avec ce lien ( stackoverflow.com/questions/2438055/… ), je ne sais pas si c'est la même chose sur Mac OS.
Scott
Merci Scott, non j'avais aussi vu et essayé les trucs de votre filerror command line: unknown option install
Alex C

Réponses:

129

Avec les versions récentes de l'édition de la communauté mongodb, c'est simple.

Lorsque vous installez via brew, cela vous indique exactement ce qu'il faut faire. Il n'est pas nécessaire de créer un nouveau fichier de contrôle de lancement.

$ brew install mongodb
==> Downloading https://homebrew.bintray.com/bottles/mongodb-3.0.6.yosemite.bottle.tar.gz ### 100.0%
==> Pouring mongodb-3.0.6.yosemite.bottle.tar.gz
==> Caveats
To have launchd start mongodb at login:
  ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents
Then to load mongodb now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Or, if you don't want/need launchctl, you can just run:
  mongod --config /usr/local/etc/mongod.conf
==> Summary
🍺  /usr/local/Cellar/mongodb/3.0.6: 17 files, 159M
Brendan W. McAdams
la source
Doit mongodafficher des informations via le serveur Windows; a-t-il besoin d'être un agent de lancement ou est-ce suffisant pour en faire un démon de lancement ?
Marius Butuc
23
Attention aux utilisateurs OSX: j'ai installé mongo via homebrew et il l'a inclus /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(et a été correctement configuré pour mon installation). Juste copié homebrew.mxcl.mongodb.plistdans LaunchAgents et suivi le reste de ces instructions (en remplacement homebrew.mxcl.mongodbde org.mongodb.mongod) et cela fonctionne très bien.
Jacob
5
Vous feriez mieux de faire défiler vers le bas pour la réponse de Mario Alemi;)
octave
/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: Aucun fichier ou répertoire de ce type
user269867
Tout d'abord: MongoDB a son propre Homebrew Tap officiel que vous devez utiliser pour installer l'édition communautaire. $ brew tap mongodb/brewpuis installez en utilisant $ brew install mongodb-community. En ce qui concerne les services, si vous exécutez $ brew services Homebrew a maintenant ce Tap inclus, donc pas besoin de faire quoi que ce soit. De plus, à propos des services de démarrage, si vous avez juste besoin de MongoDB après vous être connecté (en tant que serveur de développement et non en tant que serveur de production), utilisez le ~/Library/LaunchAgents/répertoire et non le système, /Library/LaunchDeamonsce dernier nécessite les privilèges root.
cseder
152

Edit: vous devriez maintenant utiliser brew services start mongodb, comme dans la réponse de Gergo ...

Lorsque vous installez / mettez à niveau mongodb, brew vous dira quoi faire:

Pour que launchd démarre mongodb à la connexion:

    ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

Ensuite, pour charger mongodb maintenant:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

Ou, si vous ne voulez / n'avez pas besoin de launchctl, vous pouvez simplement exécuter:

    mongod

Cela fonctionne parfaitement.

Mario Alemi
la source
Je n'avais pas vu cette instruction! Cela fonctionne parfaitement pour moi sur Mac OSX 10.8.4, je pense que je l'ai installé avec Brew. Le commentaire de Jacob dans la réponse acceptée indiquait un fichier inconnu lorsque je l'ai essayé.
Matt Fletcher
5
Je préfère cette solution à la réponse acceptée. Copier le plist dans la réponse ci-dessus complique un peu les choses lors de la mise à jour de mongo; vous devrez vous rappeler de mettre à jour les chemins si nécessaire. Cependant, l'utilisation d'un lien symbolique comme conseillé par homebrew s'en charge pour vous. J'ai utilisé cette approche et les alias de la réponse ci-dessus (en remplaçant org.mongodb.mongod par homebrew.mxcl.mongodb), et les choses fonctionnent très bien
verboze
2
J'ai essayé cette solution et la base de données que j'utilisais a "disparu"! Je crois que c'est la raison: le plist par défaut fourni par homebrew stocke la configuration de mongod dans /usr/local/etc/mongod.conf. Cette configuration spécifie que le dbpath est / usr / local / var / mongodb au lieu de la valeur par défaut / data / db. Je voulais juste le noter au cas où cela arriverait à quelqu'un d'autre. Pour faire réapparaître ma base de données, j'ai dû décharger et supprimer le lien symbolique.
ttemple
1
Remarque: il y a une certaine bizarrerie à l' launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistintérieurtmux
kqw
@ttemple une idée de comment annuler tout cela?
Intemporel
73

Le servicesrobinet de Homebrew intègre des formules avec le launchctlgestionnaire. L'ajouter est simple:

brew tap homebrew/services

Vous pouvez ensuite lancer MongoDB avec cette commande (cela lancera également mongodb au démarrage):

brew services start mongodb

Vous pouvez également utiliser stopou restart:

brew services stop mongodb
brew services restart mongodb
Gergo Erdosi
la source
4
J'ai aimé la réponse, mais j'ai constaté que le brew supprimera les services à l'avenir. brew services start mongodb Attention: les services de brassage ne sont pas pris en charge et seront bientôt supprimés.
smile2day
1
C'est une triste nouvelle. Pour l'instant, il est simplement obsolète, ce qui signifie qu'il sera supprimé un jour, mais cela fonctionne toujours. J'espère que quelqu'un se portera volontaire pour le maintenir comme un robinet. Je mettrai à jour ma réponse lorsqu'elle sera supprimée ou lorsqu'un robinet sera disponible.
Gergo Erdosi
1
robots.thoughtbot.com/...
Igor Shubovych
Il a déjà été supprimé, depuis que je vois Error: Unknown command: servicesquand j'ai essayé de cette façon.
iplus26 du
1
Merci pour cette réponse. @ iplus26 ça marche toujours pour moi
philip oghenerobo balogun
3

Je viens d'installer MongoDB via Homebrew. À la fin de la console d'installation, vous pouvez voir une sortie comme suit:

Pour démarrer mongodb:

brew services start mongodb

Ou, si vous ne voulez / n'avez pas besoin d'un service d'arrière-plan, vous pouvez simplement exécuter:

mongod --config /usr/local/etc/mongod.conf

Ainsi, les services de brassage démarrent mongodb , ont réussi à exécuter MongoDB en tant que service pour moi.

Ardi Bello
la source
2

J'ai regardé un peu du côté Mac. Vous voudrez peut-être utiliser le programme d'installation ici car il semble qu'il effectue toute la configuration pour que vous puissiez le lancer automatiquement sur Mac OS. Le seul inconvénient est qu'il semble utiliser une version assez ancienne de mongo.

Ce lien ici explique également la configuration pour obtenir automatiquement le lancement mongo en tant que service d'arrière - plan sur le Mac.

Scott
la source
1
Le lien n'est plus disponible.
Hoppo
1
Je ne sais pas si c'était exactement la même chose, mais lien fixe pour aller à l'article expliquant le même concept
Scott
0

Premier pas

installez mongodb sur votre machine Linux avec

apt install mongodb-client && apt install mongodb-server

la deuxième étape est

modifiez le chemin de la base de données au lieu du chemin par défaut de votre système si vous le souhaitez.
alors faites les étapes suivantes et changez-le vous-même.

mongod --directoryperdb --dbpath /var/lib/mongodb/data/db --logpath /var/lib/mongodb/log/mongodb.log --logappend --rest

et dans votre machine Windows, faites-le comme ça, il suffit de mettre un indicateur --install. vous devez recevoir un message réussi.

Meilleures salutations...

MehdiPRG
la source
0

Sur macOS 10.13.6 avec MongoDB 4.0

Je n'ai pas pu me connecter à localhost depuis le shell mongo

J'ai commencé MongoDB avec:

mongod --config /usr/local/etc/mongod.conf

J'ai trouvé que le 'mongod.conf' avait:

bindIp: 127.0.0.1

Changez ma connexion JavaScript de localhost à 127.0.0.1 et cela a bien fonctionné.

La même chose se produisait avec MongoDB Compass.

NOTiFY
la source
0

Après avoir installé mongodb via brew, exécutez ceci pour le faire fonctionner:

mongod --dbpath /usr/local/var/mongodb
user129916
la source
2
C'est la même réponse fournie par @ Rejeev-Divakaran il y a plus de cinq ans. Assurez-vous de vérifier les réponses existantes avant d'en soumettre une nouvelle. S'il en existe un qui suggère la même approche, l'action appropriée est de voter pour lui - un privilège que vous gagnerez après avoir reçu quatre points de réputation supplémentaires, je crois.
Jeremy Caney
0
mongod --dbpath [path_to_data_directory]
Rejeev Divakaran
la source
2
OP veut l'exécuter en tant que service, pas de manière interactive. Une bonne réponse devrait aborder cette question directement.
paulmelnikow