Running mongodb on ubuntu 16.04 LTS
Anyone who upgrade or installed Ubuntu 16.04 ( also known as Ubuntu Xenial xerus ) noticed that some of the old services stopped running. This issue is known from version 15.04 but I will focus on the above version.
Such was my case with MongoDB. To make a long story, short, Ubuntu shifted from upstart to systemd. One common solution, to these problems, is to switch back to upstart. I do not consider that option as a real solution, certainly not for the long run.
A real solution ( IMHO ) to the problem is to write systemd script that will start MongodDB. Unfortunately MongoDB guys had yet to supply one.
So I had to write one from scratch. To create one of your own follow these steps:
- switch to root using
sudo su
or use sudo for all the following steps.
create a service script (in this example the name of the service is Mongodb)
nano /lib/systemd/system/mongodb.service
File content should be
[Unit]Description=MongoDB Database ServiceWants=network.targetAfter=network.target[Service]ExecStart=/usr/bin/mongod --config /etc/mongod.confExecReload=/bin/kill -HUP $MAINPIDRestart=alwaysUser=mongodbGroup=mongodbStandardOutput=syslogStandardError=syslog[Install]WantedBy=multi-user.target
You can also download the file from here:mongodb.service
Here is a quick description of the important fields:
ExecStart - Is the command to run. Mongo installs itself under /usr/bin and the configuration file is written at /etc
User - The uid of the mongod process.
Group - The gid of the mongod process. Note that the user and group are created by the installation.
Now to start mongodb:
sudo systemctl start mongodb
To stop mongodb service use:
sudo systemctl stop mongodb
To enable mongodb on startup
sudo systemctl enable mongodb.service
If you need to refresh the services use:
sudo systemctl daemon-reload
The latest version of MongoDB does most of things except one thing for now.After installing the MongoDB
on Ubuntu 16.04.x
, run the commands as follows:
$ sudo systemctl enable mongod.service$ sudo systemctl daemon-reload
Now most likely mongod
starts on every boot automatically.
This solution also works in case of getting this error:
Failed to start mongod.service: Unit mongod.service not found.
After run the commands above, the commands below start to work:
$ sudo service mongod start$ mongo
Similarly, the all services installed must be enabled to run.For instance, after installation of Ops Manager (a.k.a MMS) the documentation says to run the commend below.
$ sudo systemctl start mongodb-mms.service
Most likely Ubuntu does not start the service. Because it is not enabled yet. To enable it just run the command below:
$ sudo systemctl enable mongodb-mms.service$ sudo systemctl daemon-reload
Then try to start the service:
$ sudo systemctl enable mongodb-mms.service
That's all...
For People That Want A Fresh Install
I have been struggling with this for 1 hour. Then I found this pageInstalling is as easy as doing:
sudo apt-get updatesudo apt-get install mongodb
Then to check if everything works:
sudo service mongodb status
Let me know if this works for you!