Installation configuration of MongoDB under CentOS 7

  • 2020-05-27 07:58:08
  • OfStack

1. Mongodb installation

The following installation steps are performed as an dp user

1. Download the installation package for mongodb 3.4.2:

"mongodb-linux-x86_64-rhel70-3.4.2.tgz", placed under ~ /software.

2. Unzip the file package:


$ cd  ~ /software
$ tar -xf mongodb-linux-x86_64-rhel70-3.4.2.tgz

Get the folder mongodb-linux-x86_64-rhel70-3.4.2 /, where the bin folder contains all the executable files for Mongodb.

3. Copy the bin folder to the default executable directory of the dp user ~ /bin


$ mv bin ~/

4. Create a database folder

Create the database file directory and place it under ~ /data/db


$ mkdir -p ~/data/db

Start the mongod service


$ mongod -dbpath ~/data/db -port 7974

If it can be started, the installation is successful. If not successful, an SELinux configuration may be required to allow MongoDB to be started on the appropriate port


# semanage port -a -t mongod_port_t -p tcp 7974

Note: 7974 is the port used by MongoDB in this project, instead of the default port 27017

2. MongoDB configuration

1. Write configuration scripts:

Create a script mongod conf, stored in/home/dp/data mongodb/config, content is


systemLog:
 destination: file
### Log storage location 
 path: /home/dp/data/mongodb/log/mongod.log
 logAppend: true
storage:
##journal configuration 
 journal:
 enabled: true
## Data file storage location 
 dbPath: /home/dp/data/db/
## Whether or not 1 A library 1 A folder 
 directoryPerDB: true
## Data engine 
 engine: wiredTiger
##WT Engine configuration 
 wiredTiger:
 engineConfig:
##WT The largest use cache Adjust according to the actual situation of the server 4 ~ 8 ) 
  cacheSizeGB: 4
## Whether the index is also stored separately by the database name 
  directoryForIndexes: true
## Table compression configuration , Data compression algorithm, optional values" none "," snappy "," zlib " 
 collectionConfig:
  blockCompressor: none
## The index configuration 
 indexConfig:
  prefixCompression: true
## make mongo The process becomes the system integration (parent) id for 1 ) 
processManagement:
 fork: true
## Port configuration, setting the default port to 7974 (the default is 27017 ) 
net:
 port: 7974

2. Cancel large transparent page:

MongoDB recommends turning off the large transparent page function that is enabled by default in the Linux system. You can edit the rc.local file to close it when the system starts:

Edit rc.local document:


[root@localhost ~]# vim /etc/rc.d/rc.local

Add the following:


if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
 echo never > /sys/kernel/mm/transparent_hugepage/enabled
 fi
 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
 echo never > /sys/kernel/mm/transparent_hugepage/defrag
 fi

Save exit, and then grant rc.local file execution rights:


[root@fx dp]# chmod +x /etc/rc.d/rc.local

Then restart the system.

3. Set MongoDB to boot

Configure MongoDB startup using systemctl service management under CentOS 7:

CentOS 7 service systemctl scripts in/usr lib systemd/MongoDB need boot can run without landing, will exist system services/usr lib systemd/system directory.

Each service ends with.service, such as mongod.service. The content is divided into three parts: [Unit], [Service] and [Install].


[Unit]
Description=MongoDB database server
After=network.target
After=syslog.target

[Service]  
#Type=forking #1 Secondary priming, mongod The background is kept by mongod Defined in its own configuration file 
Type=oneshot
User=dp
#PIDFile=/home/dp/data/mongodb/pid
ExecStart=/usr/bin/numactl --interleave=all /home/dp/bin/mongod -f /home/dp/data/mongodb/config/mongod.conf
#ExecReload=
#ExecStop=
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Note: MongoDB recommends turning off NUMA and starting the mongod process with numactl --interleave=all
In 754, after the completion of script writing according to above permissions stored in the/usr lib/systemd system directory, then you can use systemctl configuration:

Reload the configuration file using systemctl daemon-reload Use systemctl start mongod to test whether the service can run successfully If it doesn't work, you can use systemctl status mongod to view error messages and other service information.

Can check, if you cannot start MongoDB log/home dp/data mongodb/log/mongod log, if it is due to the following error:

WiredTiger error (13) [1488260221:910792][6102:0x7f33bf806dc0], file:WiredTiger.wt, connection: /home/dp/data/db/WiredTiger.turtle: handle-open: open: Permission denied

The chmod, chown, chgrp commands can be used to modify the properties of the file, either because WiredTiger.turtle does not have sufficient permissions, or because the owner is not an dp user.

You can use systemctl enable mongod to add the written service to the boot.

3. Security configuration of MongoDB

1. Modify the login port number and IP

In the configuration file/home/dp/data mongodb/config/mongod conf, definition:


$ mv bin ~/
0

2. Add an authenticated user

At the beginning of the installation, MongoDB has one admin database by default. At this time, admin database is empty and no information related to permissions is recorded. When the collection admin.system.users has no one user, even if the -auth parameter is added when mongod is started, you can do anything without authentication (whether started with the -auth parameter or not) until a user is added to admin.system.users, even if the -auth parameter is not added to admin database. The core of the consolidation is that the authentication of mongodb and the authorization service can only take effect after the user is added to admin.system.users.

Step 1: log into the database without authentication enabled


$ mv bin ~/
1

Step 2: switch to the admin database


$ mv bin ~/
2

Step 3: create the administrator account


>db.createUser({user:"ems",pwd:"pubugou2017",roles:["root"]})

The new users are in db.system.users


$ mv bin ~/
4

Description:

1)MongoDB will cancel the use of addUser method starting from version V3 and create users using db.createUser method;

2) the account should not be set as a common account, and the password should meet a certain complexity of at least 8 digits, including a mixture of upper and lower case letters, Numbers and special characters. Common passwords such as birthday, name and id number should not be used.

Step 4: verify that the user was created successfully


$ mv bin ~/
5

Step 5: kill the process and restart the mongoDB service

4. Installation of Mongodb C drive

1. Download Mongodb C driver file unzip

Download from: mongo-c-driver 1.61

2. Run the configuration script


$ mv bin ~/
6

3. The compilation


$ mv bin ~/
7

4. Install


$ sudo make install

Note: before using sudo, the sudo permission of dp user should be set. The command is


$ mv bin ~/
9

Or use root users


# make install

Install the generated header file in/usr local/include/libmongoc - 1.0, the library files under/usr local/lib.


Related articles: