What is the correct way to start a mongod service on linux / OS X?

138,569

Solution 1

With recent builds of mongodb community edition, this is straightforward.

When you install via brew, it tells you what exactly to do. There is no need to create a new launch control file.

$ 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

Solution 2

Edit: you should now use brew services start mongodb, as in Gergo's answer...

When you install/upgrade mongodb, brew will tell you what to do:

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

It works perfectly.

Solution 3

Homebrew's services tap integrates formulas with the launchctl manager. Adding it is easy:

brew tap homebrew/services

You can then launch MongoDB with this command (this will also start mongodb on boot):

brew services start mongodb

You can also use stop or restart:

brew services stop mongodb
brew services restart mongodb

Solution 4

If you feel like having a simple gui to fix this (as I do), then I can recommend the mongodb pref-pane. Description: https://www.mongodb.com/blog/post/macosx-preferences-pane-for-mongodb

On github: https://github.com/remysaissy/mongodb-macosx-prefspane

Solution 5

Just installed MongoDB via Homebrew. At the end of the installation console, you can see an output as follows:

To start mongodb:

brew services start mongodb

Or, if you don't want/need a background service you can just run:

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

So, brew services start mongodb, managed to run MongoDB as a service for me.

Share:
138,569
Alex C
Author by

Alex C

Updated on June 08, 2020

Comments

  • Alex C
    Alex C almost 4 years

    I've installed mongodb and have been able to run it, work with it, do simple DB read / write type stuff. Now I'm trying to set up my Mac to run mongod as a service.

    I get "Command not found" in response to:

     init mongod start
    

    In response to:

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

    And if I try:

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

    So obviously I'm blundering around a bit. Next step seems to be typing in random characters until something works. The command which does work is: mongod --quiet & I'm not sure, maybe that is the way you're supposed to do it? Maybe I should just take off 'quiet mode' and add > /logs/mongo.log to the end of the command line?

    I'm building a development environment on a Mac with the intention of doing the same thing on a linux server. I'm just not sure of the Bash commands. All the other searches I do with trying to pull up the answer give me advice for windows machines.

    Perhaps someone knows the linux version of the commands?

    Thanks very much

  • Marius Butuc
    Marius Butuc about 11 years
    Does mongod need to display information through the window server; does it need to be a launch agent or is it enough to make it a launch daemon?
  • Jakob Jingleheimer
    Jakob Jingleheimer almost 11 years
    Heads up to OSX users: I installed mongo via homebrew and it included /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb‌​.plist (and was properly configured for my installation). Just copied homebrew.mxcl.mongodb.plist into LaunchAgents and followed the rest of these instructions (substituting homebrew.mxcl.mongodb for org.mongodb.mongod) and it works great.
  • Matt Fletcher
    Matt Fletcher over 10 years
    I hadn't seen that instruction! This works perfectly for me on Mac OSX 10.8.4, I think I installed it with Brew. Jacob's comment in the accepted answer pointed to an unknown file when I tried it.
  • verboze
    verboze about 10 years
    I prefer this solution over the accepted answer. Copying the plist in the answer above make things a little harder when updating mongo; you'll have to remember to update the paths as needed. Using a symlink as advised by homebrew however takes care of this for you. I used this approach, and the aliases from the answer above (replacing org.mongodb.mongod with homebrew.mxcl.mongodb), and things work great
  • smile2day
    smile2day over 9 years
    Liked the answer but found that brew will remove services in the future. brew services start mongodb Warning: brew services is unsupported and will be removed soon.
  • Gergo Erdosi
    Gergo Erdosi over 9 years
    That's sad news. For now it's just deprecated, which means it will be removed sometime, but it still works. Hopefully someone will volunteer to maintain it as a tap. I will update my answer when it gets removed, or when a tap becomes available.
  • Hoppo
    Hoppo over 9 years
    Link no longer available.
  • Scott
    Scott over 9 years
    not sure if it was the exact same, but fixed link to go to article explaining the same concept
  • Oxford212
    Oxford212 over 9 years
    You'd better scroll down for Mario Alemi's answer ;)
  • paulmelnikow
    paulmelnikow about 9 years
    OP wants to run it as a service, not interactively. A good answer should address this directly.
  • Igor Shubovych
    Igor Shubovych about 9 years
  • iplus26
    iplus26 over 8 years
    It has been removed already, since I see Error: Unknown command: services when I tried this way.
  • ttemple
    ttemple over 8 years
    I tried this solution and the database I was using "disappeared"! I believe this is the reason: the default plist provided by homebrew stores the mongod configuration at /usr/local/etc/mongod.conf. This configuration specifies the dbpath to be /usr/local/var/mongodb instead of the default /data/db. Just wanted to note this in the event it happens to someone else. To get my database to appear again, I had to unload and remove the symbolic link.
  • Gergo Erdosi
    Gergo Erdosi over 8 years
    Thanks, updated my answer with the new instructions.
  • the
    the over 8 years
    Note: There's some weirdness with launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist inside tmux
  • Timeless
    Timeless over 8 years
    @ttemple any idea how to undo all these?
  • Phil
    Phil almost 7 years
    Thanks for this answer. @iplus26 it still works for me
  • user269867
    user269867 almost 5 years
    /Library/LaunchAgents/homebrew.mxcl.mongodb.plist: No such file or directory
  • Jeremy Caney
    Jeremy Caney almost 4 years
    This is the same answer @Rejeev-Divakaran provided over five years ago. Please be sure to check existing answers before submitting a new one. If one exists that suggests your same approach, the appropriate action is to upvote it—a privilege you’ll earn after receiving four more reputation points, I believe.
  • C. Sederqvist
    C. Sederqvist almost 4 years
    You don't have to use brew tap homebrew/services any longer and haven't for quite some time. Think you'll get a deprecation message if you do that now. This tap is called automatically when you list brew services the first time.
  • C. Sederqvist
    C. Sederqvist almost 4 years
    First of all: MongoDB has it's own official Homebrew Tap you should use to install the community edition. $ brew tap mongodb/brew then install using $ brew install mongodb-community. As for the services, if you run $ brew services Homebrew now has that Tap included, so no need for doing anything. Also, about the startup services, if you just need MongoDB after you log in (as a dev server not a production server), use the ~/Library/LaunchAgents/ directory and not the system /Library/LaunchDeamons the latter requires root privileges .