BÀI VIẾT

Hướng dẫn cài đặt MongoDB trên AlmaLinux 8

683
author Nguyễn Ngọc Đang - 2022-07-11 08:56:45 (GMT+7)

Bạn không sử dụng AlmaLinux 8?
Xem bài viết cho các distro khác

Giới thiệu

MongoDB còn được gọi là Mongo, là một cơ sở dữ liệu tài liệu mã nguồn mở được sử dụng rộng rãi. MongoDB là cơ sở dữ liệu NoSQL. MongoDB không giống như các cơ sở dữ liệu quan hệ dựa trên SQL truyền thống như MySQL, Oracle,... Nó lưu trữ dữ liệu ở định dạng giống JSON (BSON) theo mặc định (BSON là Binary JSON). Bằng cách sử dụng BSON thay vì JSON thuần túy, kích thước của tài liệu có thể được giảm đáng kể. Bởi vì chúng lưu trữ dữ liệu trong các cặp khóa-giá trị, các DB này rất hiệu quả cho các mục đích đọc hoặc truy vấn.

Cập nhật hệ thống

Để đảm bảo rằng tất cả các phụ thuộc của MongoDB đều được cập nhật, hãy thực thi lệnh bên dưới:

bash (root)
dnf update -y

Trong quá trình cập nhật hệ thống chúng ta chờ từ 5 phút đến 15 phút.

Thêm repo MongoDB

Thực hiện thêm kho lưu trữ MongoDB bởi vì kho lưu trữ AlmaLinux 8 tiêu chuẩn không chứa gói MongoDB, vì vậy chúng ta cần thêm kho lưu trữ MongoDB chính thức với phiên bản ổn định mới nhất.

Trong hướng dẫn này, chúng ta sẽ sử dụng trình quản lý gói DNF để cài đặt MongoDB. Bằng cách truy cập vào thư mục /etc/yum.repos.d/ tạo file repo mới có tên mongodb.repo để DNF có thể tải xuống gói MongoDB từ kho lưu trữ của nó.

bash (root)
vi /etc/yum.repos.d/mongodb.repo

Thêm dòng sau vào file.

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

Lưu lại file và thoát.

Để kiểm tra xem tệp repo đã được thêm thành công hay chưa, hãy chạy lệnh sau.

bash (root)
dnf repolist

Kết quả như sau:

Kết quả
repo id                                                                repo name
appstream                                                              AlmaLinux 8 - AppStream
baseos                                                                 AlmaLinux 8 - BaseOS
epel                                                                   Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                                           Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                                                 AlmaLinux 8 - Extras
mongodb-org-4.4                                                        MongoDB Repository

Để xác minh xem repo đã được bật hay chưa, hãy chạy lệnh sau.

bash (root)
dnf repolist mongodb-org-4.4

Kết quả như sau:

Kết quả
repo id                                                                              repo name                                                                               status
mongodb-org-4.4                                                                      MongoDB Repository                                                                      enabled

Cài đặt MongoDB

Chúng ta đã thêm repo MongoDB chính thức. Bây giờ tiến hành cài đặt MongoDB bằng trình quản lý gói DNF. Chạy lệnh sau để cài đặt MongoDB trên máy chủ AlmaLinux 8.

bash (root)
dnf install -y mongodb-org

Sau khi cài đặt xong, chúng ta có thể tiến hành khởi động dịch vụ MongoDB bằng cách chạy lệnh sau.

bash (root)
systemctl start mongod

Để cho phép dịch vụ mongodb chạy tự động khi khởi động lại, hãy chạy lệnh sau.

bash (root)
systemctl enable mongod

Cuối cùng, hãy kiểm tra xem dịch vụ mongodb có đang chạy chính xác hay không bằng cách gõ lệnh này bên dưới.

bash (root)
systemctl status mongod

Kết quả như sau:

Kết quả
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2022-07-06 11:09:39 +07; 7s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 22151 (mongod)
   Memory: 63.0M
   CGroup: /system.slice/mongod.service
           └─22151 /usr/bin/mongod -f /etc/mongod.conf

Jul 06 11:09:38 testwinpe.novalocal systemd[1]: Starting MongoDB Database Server...
Jul 06 11:09:38 testwinpe.novalocal mongod[22149]: about to fork child process, waiting until server is ready for connections.
Jul 06 11:09:38 testwinpe.novalocal mongod[22151]: forked process: 22151
Jul 06 11:09:39 testwinpe.novalocal mongod[22149]: child process started successfully, parent exiting
Jul 06 11:09:39 testwinpe.novalocal systemd[1]: Started MongoDB Database Server.

Kiểm tra mongoDB

Để kiểm tra cài đặt MongoDB, chúng ta sẽ đăng nhập vào MongoDB shell và thực hiện một số truy vấn cơ bản.

Để đăng nhập vào MongoDB shell, hãy chạy lệnh sau bên dưới.

bash (root)
mongo

MongoDB shell sẽ được thực thi.

Kết quả
MongoDB shell version v4.4.15
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("6b2470c8-f678-41f0-8b8e-a65121dc6bd5") }
MongoDB server version: 4.4.15
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
---
The server generated these startup warnings when booting:
        2022-07-06T11:09:38.611+07:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
        2022-07-06T11:09:39.343+07:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
        2022-07-06T11:09:39.344+07:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
---
---
        Enable MongoDB's free cloud-based monitoring service, which will then receive and display
        metrics about your deployment (disk utilization, CPU, operation statistics, etc).

        The monitoring data will be available on a MongoDB website with a unique URL accessible to you
        and anyone you share the URL with. MongoDB may use this information to make product
        improvements and to suggest MongoDB products and deployment options to you.

        To enable free monitoring, run the following command: db.enableFreeMonitoring()
        To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>

Để tắt trạng thái cảnh bảo của MongoDB "The server generated these startup warnings when booting:" chúng ta cần tiến hành thao tác.

Bước 1: Tắt Transparent Huge Pages

Đầu tiên cần tiến hành tạo 1 file /etc/systemd/system/disable-transparent-huge-pages.service với nội dung như sau:

/etc/systemd/system/disable-transparent-huge-pages.service
[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=mongod.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null'
[Install]
WantedBy=basic.target

Chạy lệnh sau để tải lại systemd:

bash (root)
systemctl daemon-reload

Bắt đầu dịch vụ disable-transparent-huge-pages để đảm bảo rằng cài đặt THP thích hợp đã được thay đổi:

bash (root)
systemctl start disable-transparent-huge-pages

Xác minh rằng THP đã được đặt thành công [never] bằng cách chạy lệnh sau:

bash (root)
cat /sys/kernel/mm/transparent_hugepage/enabled

Kết quả như sau:

Kết quả
always madvise [never]

Để đảm bảo rằng cài đặt này được áp dụng mỗi khi hệ thống của chúng ta khởi động, hãy chạy lệnh sau:

bash (root)
systemctl enable disable-transparent-huge-pages

Bước 2: Bật Authentication cho Mongodb

Để tạo user quản trị, trước tiên ta cần kết nối đến Mongo shell

bash (root)
mongo

Sau khi đã truy cập MongoDB Shell thực thi lệnh sau:

bash (root)
use admin
db.createUser(
    {
        user: "123host",
        pwd: "123hostpassword",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    }
)

Kết quả trả về:

Kết quả
Successfully added user: {
    "user" : "123host",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

Đến đây chúng ta đã kết thúc quá trình tạo tài khoản quản trị cho Mongodb, chúng ta có thể thoát khỏi Mongodb shell bằng cách dùng lệnh exit hoặc CTRL+C

Để có thể bật Authentication chúng ta cần sửa file mongod.conf

bash (root)
vi /etc/mongod.conf

Chuyển đến dòng #security, bỏ comment # và thêm authorization: "enabled"

/etc/mongod.conf
security:
  authorization: "enabled"

Khởi động lại mongod

bash (root)
systemctl restart mongod

Tiến hành truy cập lại mongoDB shell chúng ta sẽ không còn nhận được cảnh báo như trên:

bash (root)
mongo

Kết quả như sau:

Kết quả
MongoDB shell version v4.4.15
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b9179abb-d12b-4e8d-9bce-322334b3f123") }
MongoDB server version: 4.4.15
>

Chúng ta có thể xác minh thêm rằng cơ sở dữ liệu đang hoạt động bằng cách kết nối với máy chủ mongodb và thực hiện lệnh sau:

bash (root)
mongo --eval 'db.runCommand({ connectionStatus: 1 })'

Kết quả trả về như bên dưới:

Kết quả
MongoDB shell version v4.4.15
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("8e07f49a-b43e-45bf-b70f-8dd5035be670") }
MongoDB server version: 4.4.15
{
    "authInfo" : {
        "authenticatedUsers" : [ ],
        "authenticatedUserRoles" : [ ]
    },
    "ok" : 1
}

Lời kết

Trong hướng dẫn này chúng ta đã tìm hiểu về cách cài đặt MongoDB trên AlmaLinux 8. Hy vọng các bạn thành công trong việc cài đặt cũng như áp dụng được MongoDB vào trong thực tế, công việc.


Bạn có làm được theo hướng dẫn này không?

Bài liên quan

Hướng dẫn thiết lập bảo mật máy chủ MongoDB
Hướng dẫn thiết lập bảo mật máy chủ MongoDB
Hướng dẫn cấu hình sao lưu tự động MongoDB lên Google Drive
Hướng dẫn cấu hình sao lưu tự động MongoDB lên Google Drive
Hướng dẫn cấu hình Replica Set cho MongoDB trên Ubuntu 22.04 LTS
Hướng dẫn cấu hình Replica Set cho MongoDB trên Ubuntu 22.04 LTS

Cloud VPS tại 123HOST

Hiệu năng, ổn định và bảo mật

Cloud VPS giá rẻ

Thuê Server Riêng

Chi phí thấp, cấu hình cao

Thuê Server Riêng
Thông tin tác giả
Bình luận

Tính năng đang được phát triển

Đang tải bình luận