In this guide, we will cover the steps to install the latest release of MongoDB community edition on your CentOS 7 server. MongoDB is an open source NoSQL database system written in C++ designed to ensure scalability, high performance, and availability.
MongoDB common use case is storage and management of Big Data-sized collections of literal documents like text documents, email messages, XML documents, and many others.
How to Install MongoDB 4 on CentOS 7
MongoDB 4 is installed on CentOS 7 using the upstream repository. Add the repository to your CentOS 7 server by running below commands:
# cat >/etc/yum.repos.d/mongodb-org-4.0.repo<<EOF [mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc EOF
Once the repo has been added, install mongodb-org
 package
sudo yum install mongodb-org
The installation of the above package will install the following dependency packages:
mongodb-org-server – This provides MongoDB daemon mongod
mongodb-org-mongos – This is a MongoDB Shard daemon
mongodb-org-shell – This provides a shell to MongoDB
mongodb-org-tools – MongoDB tools used for export, dump, import e.t.c
Configure MongoDB on CentOS 7
When the packages are installed, you can start customizing and configuring MongoDB before starting the service.
Label MongoDB port
If you have SELinux in enforcing mode, you may need to label port 27017
sudo semanage port -a -t mongod_port_t -p tcp 27017
Open port on the firewall
If you have firewalld running on your server and would like MongoDB service to be accessible over the network, open it on the firewall:
sudo firewall-cmd --add-port=27017/tcp --permanent sudo firewall-cmd --reload
You can also limit access based on source address
sudo firewall-cmd --permanent --add-rich-rule "rule family="ipv4" \ source address="10.1.2.0/24" port protocol="tcp" port="27017" accept"
Use secondary disk for MongoDB data
You can always use a dedicated disk / virtual disk to store MongoDB data. This can be configured like below
Step 1: Partition secondary disk for MongoDB data:
# lsblk | grep vdb vdb 252:16 0 50G 0 disk
Step 2: Create a GPT partition table for the secondary disk, it can be more than onde disk
parted -s -a optimal -- /dev/vdb mklabel gpt parted -s -a optimal -- /dev/vdb mkpart primary 0% 100% parted -s -- /dev/vdb align-check optimal 1
Step 3: Create LVM volume, this will make it easy to extend the partition
# pvcreate /dev/vdb1 Physical volume "/dev/vdb1" successfully created. # vgcreate vg11 /dev/vdb1 Volume group "vg11" successfully created # lvcreate -n data -l 100%FREE vg11 Logical volume "data" created
Step 4: Create XFS
 filesystem on the Logical Volume created
# mkfs.xfs /dev/mapper/vg11-data meta-data=/dev/mapper/vg11-data isize=512 agcount=4, agsize=6553344 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=26213376, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=12799, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Step 5: Create a mount point and mount the partition
echo "/dev/mapper/vg11-data /data xfs defaults 0 0" >> /etc/fstab mkdir /data mount -a
Step 6:Â Create a folder for MongoDB data
mkdir /data/mongo chown -R mongod:mongod /data/mongo chmod -R 775 /data/mongo
Step 7:Â Confirm that the partition mount was successful:
# df -hT | grep /var/lib/mongo /dev/mapper/vg11-mongodb xfs 50G 33M 50G 1% /var/lib/mongo
Step 8:Â Change MongoDB data store location
$ sudo vim /etc/mongod.conf storage: dbPath: /data/mongo journal: enabled: true
Start MongoDB Service
When all is set, start and set mongod service to start on boot.
sudo systemctl enable mongod sudo systemctl status mongod
For Authentication, check our guide on How to configure MongoDB 4 authentication.