Cài đặt MongoDB 5.0 trên CentOS 7 - Install MongoDB 5.0 CentOS 7

MongoDB là một hệ thống cơ sở dữ liệu NoSQL đa dụng, hướng đối tượng, đơn giản và linh hoạt được sử dụng trong việc phát triển ứng dụng động hiện đại. Điều này đồng nghĩa với việc các đối tượng dữ liệu được lưu trữ dưới dạng các tài liệu riêng biệt trong một bộ sưu tập, khác với cách dữ liệu được lưu trữ trong cơ sở dữ liệu quan hệ truyền thống bằng cách sử dụng hàng và cột. MongoDB được viết bằng ngôn ngữ C++ để đảm bảo tính mở rộng lớn và tính linh hoạt, mang lại khả năng truy vấn và tạo chỉ mục dễ dàng cho các nhà phát triển. Mình sẽ hướng dẫn toàn diện từng bước install và cấu hình MongoDB 5.0 trên CentOS 7.

MongoDB cung cấp cả phiên bản Cộng đồng (Community) và Doanh nghiệp (Enterprise). Phiên bản Cộng đồng có thể tải về miễn phí, trong khi phiên bản Doanh nghiệp là một phần của gói đăng ký Mongo Enterprise Advanced. Phiên bản Doanh nghiệp có nhiều tính năng hơn như hỗ trợ LDAP, Kerberos, mã hóa trên đĩa và kiểm tra dấu vết (auditing). Ngoài ra, nó cung cấp hỗ trợ toàn diện cho việc phát triển ứng dụng sử dụng MongoDB.

MongoDB có sẵn cho các hệ điều hành Windows, macOS và Linux, được hỗ trợ trên cả kiến trúc 32-bit và 64-bit. Phiên bản MongoDB 5.0 là phiên bản mới nhất, được phát hành vào ngày 13 tháng 7 năm 2021. Phiên bản này đem lại một số tính năng mới như:

  • Live Resharding
  • Chức năng chuỗi thời gian tự nhiên để lưu trữ chuỗi đo đạc một cách hiệu quả qua một khoảng thời gian
  • Công cụ bảo mật đa điểm trên nhiều đám mây
  • Phiên bản API có phiên bản để tương lai đảm bảo ứng dụng của bạn.
  • Cơ sở dữ liệu không dùng máy chủ trên MongoDB Atlas
  • Phân phối dữ liệu một cách mượt mà
  • Install MongoDB 5.0 trên hệ thống CentOS 7

Bước 1: Cấu hình kho lưu trữ YUM của MongoDB trên CentOS 7

Chúng ta cần tạo một tệp /etc/yum.repos.d/mongodb-org-5.0.repo để cho phép chúng ta cài đặt MongoDB 5.0 bằng lệnh yum.

sudo tee /etc/yum.repos.d/mongodb-org-5.0.repo<<EOF
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
EOF

Một cách khác, bạn có thể tải xuống và cài đặt tệp .rpm trực tiếp từ kho lưu trữ MongoDB. Trên trang web, các tải xuống được tổ chức theo phiên bản RedHat / CentOS. Tải gói cho phiên bản phân phối và kiến trúc của bạn.

Bước 2: Install các gói MongoDB 5.0 trên CentOS 7

Phiên bản mới nhất hiện có thể được tải xuống sau khi các kho lưu trữ đã được thêm thành công. Cài đặt phiên bản MongoDB mới nhất trên CentOS 7 bằng lệnh sau:

sudo yum install mongodb-org

Dependency tree:

Dependencies Resolved

======================================================================================================================================================================================================
Package Arch Version Repository Size
======================================================================================================================================================================================================
Installing:
mongodb-org x86_64 5.0.9-1.el7 mongodb-org-5.0 6.1 k
Installing for dependencies:
cyrus-sasl x86_64 2.1.26-24.el7_9 updates 88 k
cyrus-sasl-gssapi x86_64 2.1.26-24.el7_9 updates 41 k
cyrus-sasl-plain x86_64 2.1.26-24.el7_9 updates 39 k
mongodb-database-tools x86_64 100.5.2-1 mongodb-org-5.0 47 M
mongodb-mongosh x86_64 1.5.0-1.el8 mongodb-org-5.0 41 M
mongodb-org-database x86_64 5.0.9-1.el7 mongodb-org-5.0 6.2 k
mongodb-org-database-tools-extra x86_64 5.0.9-1.el7 mongodb-org-5.0 11 k
mongodb-org-mongos x86_64 5.0.9-1.el7 mongodb-org-5.0 20 M
mongodb-org-server x86_64 5.0.9-1.el7 mongodb-org-5.0 28 M
mongodb-org-shell x86_64 5.0.9-1.el7 mongodb-org-5.0 15 M
mongodb-org-tools x86_64 5.0.9-1.el7 mongodb-org-5.0 6.1 k
Updating for dependencies:
cyrus-sasl-lib x86_64 2.1.26-24.el7_9 updates 156 k

Transaction Summary
======================================================================================================================================================================================================
Install 1 Package (+11 Dependent packages)
Upgrade ( 1 Dependent package)

Total download size: 151 M
Is this ok [y/d/N]: y

Cho phép nhập khóa GPG:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 64 MB/s | 151 MB 00:00:02
Retrieving key from https://www.mongodb.org/static/pgp/server-5.0.asc
Importing GPG key 0xE2C63C11:
Userid : "MongoDB 5.0 Release Signing Key <packaging@mongodb.com>"
Fingerprint: f567 9a22 2c64 7c87 527c 2f8c b00a 0bd1 e2c6 3c11
From : https://www.mongodb.org/static/pgp/server-5.0.asc
Is this ok [y/N]: y
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package : centos-release-7-9.2009.1.el7.centos.x86_64 (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Is this ok [y/N]: y

Một cách khác, bạn có thể cài đặt một phiên bản cụ thể của MongoDB, ví dụ phiên bản 5.0.x bằng cách thêm số phiên bản vào tên gói và chỉ định từng thành phần một như sau.

sudo yum install -y mongodb-org-<version> mongodb-org-database-<version> mongodb-org-server-<version> mongodb-org-shell-<version> mongodb-org-mongos-<version> mongodb-org-tools-<version>

Kiểm tra phiên bản MongoDB đã cài đặt.

$ mongod --version
db version v5.0.9
Build Info: {
"version": "5.0.9",
"gitVersion": "6f7dae919422dcd7f4892c10ff20cdc721ad00e6",
"openSSLVersion": "OpenSSL 1.0.1e-fips 11 Feb 2013",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "rhel70",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}

Bước 3: Cấu hình MongoDB trên CentOS 7

Với MongoDB đã được cài đặt thành công, chúng ta cần thực hiện một số cấu hình.

Bắt đầu và kích hoạt dịch vụ

Đầu tiên, chúng ta cần bắt đầu và kích hoạt dịch vụ mongod như sau: Kiểm tra trạng thái của dịch vụ:

sudo systemctl start mongod
sudo systemctl enable mongod

Kiểm tra trạng thái của dịch vụ:

$ systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2021-08-25 06:36:08 EDT; 9s ago
Docs: https://docs.mongodb.org/manual
Process: 8883 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
Process: 8881 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
Process: 8879 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
Process: 8877 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
Main PID: 8886 (mongod)
CGroup: /system.slice/mongod.service
└─8886 /usr/bin/mongod -f /etc/mongod.conf

Aug 25 06:36:04 rhellab systemd[1]: Stopped MongoDB Database Server.
Aug 25 06:36:04 rhellab systemd[1]: Starting MongoDB Database Server...
Aug 25 06:36:04 rhellab mongod[8883]: about to fork child process, waiting until server is ready for connections.
Aug 25 06:36:04 rhellab mongod[8883]: forked process: 8886
Aug 25 06:36:08 rhellab systemd[1]: Started MongoDB Database Server.

Bảo mật MongoDB

Sau khi cài đặt, cơ sở dữ liệu MongoDB không có mật khẩu và ai cũng có thể truy cập dễ dàng.

sudo vi /etc/mongod.conf

Trong tệp cấu hình (conf), tìm và bỏ dấu chú thích #Security và thêm nội dung dưới đây một cách thích hợp. Hãy nhớ rằng cú pháp rất quan trọng trong tệp này:

security:
authorization: enabled

Khởi động lại dịch vụ để áp dụng các thay đổi.

sudo systemctl restart mongod

Sử dụng MongoDB 5.0 trên CentOS 7

MongoDB lắng nghe trên cổng 27017 theo mặc định. Bạn có thể truy cập giao diện dòng lệnh MongoDB từ localhost bằng cách sử dụng mã sau:

$ mongo

Kết quả mẫu:

connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("3aab3c08-01c9-4896-acf6-44d6466a58a3") }
MongoDB server version: v5.0.9
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
We recommend you begin using "mongosh".
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
https://community.mongodb.com
>

Trong chế độ dòng lệnh, bạn có thể thực hiện một số hoạt động như:

Tạo người dùng và gán vai trò trong MongoDB

Ở đây, chúng ta sẽ tạo một người dùng và gán cho họ vai trò quản trị viên. Chúng ta sẽ tạo và sử dụng db "admin".

use admin
db.createUser(
{
user: "mongouser",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)

Đặt mật khẩu cho người dùng. Sau đó thoát khỏi giao diện dòng lệnh bằng cách sử dụng.

> exit
bye

Sau đó đăng nhập vào người dùng đã tạo.

mongo -u mongouser -p --authenticationDatabase admin

Nhập mật khẩu đã đặt ở trên và tiếp tục.

Liệt kê cơ sở dữ liệu trong MongoDB

Để liệt kê các cơ sở dữ liệu hiện có, sử dụng lệnh:

> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB

Tạo một cơ sở dữ liệu trong MongoDB

Một cơ sở dữ liệu mới trong MongoDB được tạo bằng cách chuyển sang một cơ sở dữ liệu không tồn tại và chỉ định tên của cơ sở dữ liệu. Hãy tạo một cơ sở dữ liệu có tên mongotestdb.

use admin

Kết quả mẫu:

> use admin
switched to db admin
>

Tạo một bộ sưu tập trong MongoDB

Sau khi tạo cơ sở dữ liệu, chúng ta có thể thêm dữ liệu vào nó. Dưới đây, chúng tôi đang tạo một bảng cho chi tiết người dùng.

db.userdetails.insertOne(
{F_Name: "fist name",
L_NAME: "last name",
ID_NO: "12345",
AGE: "49",
TEL: "+254654671"
}
)

Hiển thị bảng/collection đã tạo:

show collections

Kết quả mẫu:

> show collections
system.users
system.version
userdetails
>

Tạo một người dùng có quyền đọc và ghi

Để tạo một người dùng có quyền đọc và ghi trong MongoDB, sử dụng cú pháp trong các lệnh dưới đây:

use testdatabase
db.createUser(
{
user: 'testuser',
pwd: 'P@ssWord',
roles: [ { role: 'readWrite', db: 'testdatabase' } ]
}
);

Thay đổi đường dẫn mặc định của MongoDB trên CentOS 7

MongoDB lưu trữ dữ liệu của mình trong đường dẫn mặc định tại /var/lib/mongo. Bạn có thể đặt MongoDB để lưu trữ dữ liệu trong một đường dẫn tùy chỉnh như được hiển thị dưới đây.

Đầu tiên, dừng dịch vụ:

sudo systemctl stop mongod.service

Sau đó, tạo một đường dẫn tùy chỉnh mới để sử dụng để lưu trữ dữ liệu của MongoDB.

sudo mkdir -p /data/mongo

Đặt chủ sở hữu của thư mục thành mongod như sau.

sudo chown -R mongod:mongod /data/mongo

Sau đó sửa đổi /etc/mongod.conf để phù hợp với các thư mục mới.

sudo vi /etc/mongod.conf

Chỉnh sửa các đường dẫn trong tệp như dưới đây.

path: /data/log/mongodb/mongod.log #where to write logging data.
dbPath: /data/mongo #Where and how to store data.
pidFilePath: /data/mongodb/mongod.pid # location of pidfile

Cấu hình SELinux và chế độ enforcing của nó vì đường dẫn đã được thay đổi. Nếu không cấu hình SELinux, nó sẽ không cho phép MongoDB truy cập /sys/fs/cgroup.

Trước tiên, cài đặt checkpolicy.

sudo yum install checkpolicy
####OR###
sudo yum install policycoreutils-python

Tạo chính sách kiểm tra mới với thông tin như dưới đây.

cat > mongodb_cgroup_memory.te <<EOF
module mongodb_cgroup_memory 1.0;

require {
type cgroup_t;
type mongod_t;
class dir search;
class file { getattr open read };
}

#============= mongod_t ==============
allow mongod_t cgroup_t:dir search;
allow mongod_t cgroup_t:file { getattr open read };
EOF

Sau đó biên dịch và nạp chính sách được tạo ở trên.

checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
sudo semodule -i mongodb_cgroup_memory.pp

Bây giờ một chính sách kiểm tra mới đã được biên dịch, nạp 3 thư mục như dưới đây:

Thư mục tệp nhật ký

Chạy các lệnh dưới đây để cập nhật tệp và ngữ cảnh thư mục:

sudo semanage fcontext -a -t mongod_log_t '/data/log/mongodb/mongod.*'
sudo chcon -Rv -u system_u -t mongod_log_t '/data/log/mongodb/mongod.log'
sudo restorecon -R -v '/data/log/mongodb/mongod.log'

Thư mục dữ liệu

Đối với thư mục dữ liệu, áp dụng như dưới đây:

sudo semanage fcontext -a -t mongod_var_lib_t '/data/mongo.*'
sudo chcon -Rv -u system_u -t mongod_var_lib_t '/data/mongo'
sudo restorecon -R -v '/data/mongo'

Thư mục PID

Tương tự áp dụng cho việc cập nhật các thư mục pod.

semanage fcontext -a -t mongod_var_run_t '/data/mongodb/mongod.*'
chcon -Rv -u system_u -t mongod_var_run_t '/data/mongodb/mongod.pid'
restorecon -R -v '/data/mongodb/mongod.pid'

Cập nhật tường lửa và Iptables

Cho Firewalld sử dụng:

sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
sudo firewall-cmd --reload

Đối với những người sử dụng Iptables:

sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
sudo iptables-save | grep 27017

Tải lại và khởi động daemon Mongod như dưới đây.

sudo systemctl daemon-reload
sudo systemctl start mongod.service

Trong trường hợp MongoDB không thể tải lại và khởi động nó bằng:

sudo systemctl daemon-reload
sudo systemctl start mongod

Chúng ta đã hoàn tất hướng dẫn install MongoDB 5.0 trên máy chủ Linux CentOS 7. Chúng tôi cũng đã thấy cách tạo người dùng với vai trò, thêm cơ sở dữ liệu vào MongoDB, vv. Hy vọng bạn đã tìm thấy hướng dẫn này hữu ích.

Mọi người cũng tìm kiếm: install mongodb centos 7, mongodb 7, centos 7 install mongodb, implicit wait deprecated.