CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Trang chủHướng dẫnHướng dẫn cài đặt MongoDB trên CentOS 7 để xây dựng ứng dụng

Hướng dẫn cài đặt MongoDB trên CentOS 7 để xây dựng ứng dụng

CyStack blog 6 phút để đọc
CyStack blog08/09/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 6 minutes

MongoDB là cơ sở dữ liệu hướng tài liệu, miễn phí và mã nguồn mở, được xếp vào nhóm NoSQL vì không dùng cấu trúc bảng truyền thống như cơ sở dữ liệu quan hệ. Thay vào đó, nó lưu trữ tài liệu dạng JSON với lược đồ động.

Khác với cơ sở dữ liệu quan hệ, MongoDB không cần lược đồ định nghĩa sẵn trước khi thêm dữ liệu và cho phép thay đổi lược đồ bất kỳ lúc nào, bao nhiêu lần tùy ý mà không phải tạo mới cơ sở dữ liệu.

Trong hướng dẫn này, chúng ta sẽ cài đặt MongoDB trên CentOS 7.

cài đặt MongoDB trên CentOS 7

Điều kiện tiên quyết

Trước khi thực hiện hướng dẫn này, bạn cần có:

Một máy chủ CentOS 7 với người dùng không phải root được cấp quyền sudo.

Bước 1: Thêm repository MongoDB

Các repository mặc định của CentOS không chứa gói mongodb-org, nhưng MongoDB có duy trì một repository riêng. Chúng ta sẽ thêm repository này vào máy chủ.

Dùng trình soạn thảo vi để tạo tệp .repo cho yum, tiện ích quản lý gói của CentOS:

sudo vi /etc/yum.repos.d/mongodb-org.repo

Sau đó, truy cập phần Install on Red Hat trong tài liệu của MongoDB và thêm thông tin repository của bản phát hành ổn định mới nhất vào tệp:

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

Lưu thay đổi vào tệp bằng cách nhấn phím ESC, sau đó gõ :wq, rồi nhấn ENTER.

Trước khi tiếp tục, cần xác minh rằng repository MongoDB tồn tại trong tiện ích yum. Lệnh repolist hiển thị danh sách các repository đã bật:

yum repolist

Output

. . .
repo id                          repo name
base/7/x86_64                    CentOS-7 - Base
extras/7/x86_64                  CentOS-7 - Extras
mongodb-org-6.0/7/x86_64         MongoDB Repository
updates/7/x86_64                 CentOS-7 - Updates
. . .

Khi đã có repository MongoDB, bạn có thể tiếp tục cài đặt ở bước 2.

Bước 2: Cài đặt MongoDB

Bạn có thể cài đặt gói mongodb-org từ repository của bên thứ ba bằng tiện ích yum.

sudo yum install mongodb-org

Sẽ có 2 thông báo Is this ok [y/N]:: thông báo đầu tiên cho phép cài đặt các gói MongoDB, còn thông báo thứ hai dùng để nhập khóa GPG.

Nhà phát hành MongoDB ký phần mềm của họ, và yum dùng khóa này để xác minh tính toàn vẹn của gói đã tải. Ở mỗi thông báo, nhập Y rồi nhấn ENTER.

Tiếp theo, khởi động dịch vụ MongoDB với tiện ích systemctl:

sudo systemctl start mongod

Mặc dù chúng ta sẽ không sử dụng trong hướng dẫn này nhưng bạn cũng có thể thay đổi trạng thái dịch vụ MongoDB với các lệnh reloadstop.

Lệnh reload yêu cầu tiến trình mongod đọc tệp cấu hình /etc/mongod.conf và áp dụng mọi thay đổi mà không cần khởi động lại.

sudo systemctl reload mongod

Lệnh stop dừng tất cả tiến trình mongod đang chạy.

sudo systemctl stop mongod

Tiện ích systemctl không cung cấp kết quả sau khi chạy lệnh start, nhưng bạn có thể kiểm tra dịch vụ đã khởi động bằng cách xem phần cuối của tệp mongod.log với lệnh tail:

sudo tail /var/log/mongodb/mongod.log

Output

. . .
[initandlisten] waiting for connections on port 27017

Kết quả hiển thị waiting for a connection cho biết, MongoDB đã khởi động thành công và bạn có thể truy cập máy chủ cơ sở dữ liệu bằng MongoDB Shell:

mongo

Lưu ý, khi bạn mở MongoDB Shell, có thể bạn sẽ thấy một cảnh báo như sau:

*** WARNING:** soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.*

MongoDB là ứng dụng đa luồng, có thể tạo thêm tiến trình để xử lý khối lượng công việc.

Cảnh báo này cho biết để MongoDB hoạt động hiệu quả, số tiến trình mà nó được phép khởi tạo nên bằng một nửa số tệp mà nó có thể mở cùng lúc.

Để xử lý cảnh báo, thay đổi giá trị soft rlimit cho số tiến trình của mongod bằng cách chỉnh sửa tệp 20-nproc.conf:

sudo vi /etc/security/limits.d/20-nproc.conf

Thêm dòng sau vào cuối tệp:

/etc/security/limits.d/20-nproc.conf
. . .
mongod soft nproc 32000

Lưu thay đổi bằng cách nhấn phím ESC, sau đó gõ :wq, rồi nhấn ENTER.

Để giới hạn mới có hiệu lực với MongoDB, khởi động lại bằng tiện ích systemctl:

sudo systemctl restart mongod

Sau đó, khi bạn kết nối lại với MongoDB Shell, cảnh báo sẽ không còn nữa.

Để tìm hiểu cách tương tác với MongoDB từ shell, bạn có thể xem kết quả của phương thức db.help() cung cấp danh sách các phương thức cho đối tượng db.

db.help()

Output

DB methods:
    db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ]
    db.auth(username, password)
    db.cloneDatabase(fromhost)
    db.commandHelp(name) returns the help for the command
    db.copyDatabase(fromdb, todb, fromhost)
    db.createCollection(name, { size : ..., capped : ..., max : ... } )
    db.createUser(userDocument)
    db.currentOp() displays currently executing operations in the db
    db.dropDatabase()
. . .

Giữ tiến trình mongod chạy nền, nhưng thoát khỏi shell bằng lệnh exit:

exit

Output

Bye

Bước 3: Xác minh khởi động

Vì ứng dụng dựa trên cơ sở dữ liệu không thể chạy nếu thiếu cơ sở dữ liệu nên chúng ta cần đảm bảo tiến trình MongoDB daemon mongod khởi động cùng hệ thống.

Sử dụng tiện ích systemctl để kiểm tra trạng thái khởi động:

systemctl is-enabled mongod; echo $?

Kết quả bằng 0 xác nhận daemon đã bật, đây là điều chúng ta mong muốn. Kết quả bằng 1 xác nhận daemon bị vô hiệu hóa và sẽ không khởi động.

Output

. . .
enabled
0

Trong trường hợp daemon bị vô hiệu hóa, sử dụng tiện ích systemctl để bật lại:

sudo systemctl enable mongod

Giờ bạn đã có một phiên bản MongoDB đang chạy, sẽ tự động khởi động sau khi hệ thống reboot.

Bước 4: Nhập tập dữ liệu mẫu (Tùy chọn)

Không giống các máy chủ cơ sở dữ liệu khác, MongoDB không có sẵn dữ liệu trong cơ sở dữ liệu test. Vì không muốn thử nghiệm phần mềm mới bằng dữ liệu production, chúng ta sẽ tải về một tập dữ liệu mẫu từ ví dụ của MongoDB.

Tệp JSON này chứa danh sách các nhà hàng, chúng ta sẽ dùng để thực hành thao tác với MongoDB và tránh ảnh hưởng đến dữ liệu nhạy cảm.

Bắt đầu bằng cách chuyển đến một thư mục có quyền ghi:

cd /tmp

Sử dụng lệnh curl và liên kết từ MongoDB để tải tệp JSON:

curl -LO <https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json>

Lệnh mongoimport sẽ chèn dữ liệu vào cơ sở dữ liệu test.

  • Cờ --db định nghĩa cơ sở dữ liệu nào sẽ dùng
  • Cờ --collection xác định nơi lưu trữ thông tin trong cơ sở dữ liệu
  • Cờ --file chỉ định tệp mà lệnh sẽ thực hiện thao tác nhập:
mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json

Kết quả xác nhận việc nhập dữ liệu từ tệp primer-dataset.json:

Output

connected to: localhost
imported 25359 documents

Với tập dữ liệu mẫu đã có, bạn có thể thực hiện truy vấn trên đó.

Mở lại MongoDB Shell:

mongo

Shell mặc định chọn cơ sở dữ liệu test, nơi bạn đã nhập dữ liệu.

Truy vấn tập hợp restaurants bằng phương thức find() để hiển thị danh sách tất cả nhà hàng trong tập dữ liệu. Vì tập hợp có hơn 25.000 mục, bạn nên dùng phương thức tùy chọn limit() để giới hạn kết quả và pretty() để định dạng dữ liệu dễ đọc hơn với xuống dòng và thụt lề.

db.restaurants.find().limit(1).pretty()

Output

{
    "_id" : ObjectId("57e0443b46af7966d1c8fa68"),
    "address" : {
        "building" : "1007",
        "coord" : [
            -73.856077,
            40.848447
        ],
        "street" : "Morris Park Ave",
        "zipcode" : "10462"
    },
    "borough" : "Bronx",
    "cuisine" : "Bakery",
    "grades" : [
        {
            "date" : ISODate("2014-03-03T00:00:00Z"),
            "grade" : "A",
            "score" : 2
        },
        {
            "date" : ISODate("2013-09-11T00:00:00Z"),
            "grade" : "A",
            "score" : 6
        },
        {
            "date" : ISODate("2013-01-24T00:00:00Z"),
            "grade" : "A",
            "score" : 10
        },
        {
            "date" : ISODate("2011-11-23T00:00:00Z"),
            "grade" : "A",
            "score" : 9
        },
        {
            "date" : ISODate("2011-03-10T00:00:00Z"),
            "grade" : "B",
            "score" : 14
        }
    ],
    "name" : "Morris Park Bake Shop",
    "restaurant_id" : "30075445"
}

Bạn có thể tiếp tục sử dụng tập dữ liệu mẫu để làm quen với MongoDB hoặc xóa nó bằng phương thức db.restaurants.drop():

db.restaurants.drop()

Cuối cùng, thoát khỏi shell bằng lệnh exit:

exit

Output

Bye

Kết luận

Trong hướng dẫn này, bạn đã thêm một repository bên thứ ba vào yum, cài đặt máy chủ cơ sở dữ liệu MongoDB, nhập tập dữ liệu mẫu và thực hiện một truy vấn đơn giản.

Vẫn còn nhiều điều khác bạn có thể làm với MongoDB, như tạo cơ sở dữ liệu với các collection, thêm nhiều tài liệu vào cơ sở dữ liệu và xây dựng các ứng dụng mạnh mẽ.

Để tìm hiểu thêm về MongoDB, tham khảo loạt bài Cách quản lý cơ sở dữ liệu với MongoDB hoặc các hướng dẫn khác về MongoDB.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất