Je voudrais faire tourner mongod en arrière-plan, comme une sorte de présence permanente. Quelle serait la meilleure façon de le faire ? Un peu comme je peux lancer MySQL au démarrage et qu'il est toujours là, en arrière-plan. Peut-être que c'est juste quelques bash scripts, mais il serait agréable d'entendre s'il existe une meilleure façon. Si c'est juste bash - à quoi cela ressemblerait-il ? Merci.
Réponses
Trop de publicités?Le démon MongoDB (mongod) possède une option de ligne de commande permettant d'exécuter le serveur en arrière-plan...
--fork
Cette option de ligne de commande nécessite que vous spécifiiez également un fichier dans lequel enregistrer les messages (car elle ne peut pas utiliser la console actuelle). Un exemple de cette commande ressemble à ceci
mongod --fork --logpath /var/log/mongod.log
Vous pourriez mettre cela dans un fichier /etc/init.d/mongod bash script. Et ensuite, pour que le service soit exécuté au démarrage, créez les liens symboliques standard (S## & K##) à l'intérieur de /etc/rc#.d/. Voici un tutoriel qui explique ce processus plus en détail. Faites défiler la page jusqu'à la section intitulée "Init script Activation". Ceci a aussi l'avantage supplémentaire de pouvoir exécuter des commandes comme...
service mongod status
service mongod start
service mongod stop
Puisque vous êtes sur un Mac, vous devriez utiliser Homebrew pour installer MongoDB (vous devrez installer Homebrew si vous ne l'avez pas encore fait) :
brew install mongodb
Disons que la version qui a été installée s'appelle 2.0.6-x86_64
. Ajoutez ensuite le fichier plist de LaunchAgent qu'il génère pour vous :
mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/mongodb/2.0.6-x86_64/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Cela lancera mongod
en arrière-plan maintenant et à chaque fois que vous redémarrez votre ordinateur.
Classiquement, pour fonctionner en arrière-plan, il suffit de commencer par
nohup some_command -to launch &
Donc c'est nohup &, mettez la commande que vous voulez exécuter en arrière plan entre nohup et &. Elle s'exécutera en même temps que vous, et continuera à fonctionner après que vous ayez fermé le terminal ou que vous vous soyez déconnecté. Vous pouvez le lancer sous un autre utilisateur via sudo. Pour le faire fonctionner au démarrage, ajoutez-le au remplacement de init scripts (je ne sais pas comment ils l'appellent). Il écrira toute sortie dans un fichier où vous l'avez démarré appelé nohup.out.
La meilleure façon de faire en sorte qu'un programme s'exécute au démarrage sous OS X est de créer un LaunchDaemon (cf. Documents d'Apple et jetez un coup d'oeil à certains des démons fournis par Apple dans /System/Library/LaunchDaemons) et installez-le dans /Library/LaunchDaemons. Lingon peut vous aider à créer le fichier .plist.