MongoDB là một cơ sở dữ liệu tài liệu được sử dụng trong nhiều ứng dụng web hiện đại. Nó được phân loại là cơ sở dữ liệu NoSQL vì nó không dựa vào cấu trúc cơ sở dữ liệu quan hệ dựa trên bảng truyền thống.
Thay vào đó, nó sử dụng các tài liệu giống như JSON với các lược đồ động, nghĩa là không giống như cơ sở dữ liệu quan hệ, MongoDB không yêu cầu lược đồ được xác định trước trước khi bạn thêm dữ liệu vào cơ sở dữ liệu. Bạn có thể thay đổi lược đồ bất cứ lúc nào và thường xuyên khi cần thiết mà không phải thiết lập cơ sở dữ liệu mới với lược đồ được cập nhật.
Trong hướng dẫn này, bạn sẽ cài đặt MongoDB trên máy chủ Ubuntu 20.04, kiểm tra và tìm hiểu cách quản lý nó như một dịch vụ systemd
.
Để làm theo hướng dẫn này, bạn sẽ cần:
Các kho lưu trữ gói chính thức của Ubuntu bao gồm một phiên bản ổn định của MongoDB. Tuy nhiên, khi viết bài này, phiên bản MongoDB có sẵn từ kho Ubuntu mặc định là 3.6, trong khi bản phát hành ổn định mới nhất là 4.4.
Để có được phiên bản mới nhất của phần mềm này, bạn phải đưa kho lưu trữ gói chuyên dụng của MongoDB vào các nguồn APT của mình. Sau đó, bạn sẽ có thể cài đặt mongodb-org
, một gói meta luôn trỏ đến phiên bản MongoDB mới nhất.
Để bắt đầu, hãy nhập khóa GPG công khai cho phiên bản ổn định mới nhất của MongoDB bằng cách chạy lệnh dưới đây. Nếu bạn định sử dụng phiên bản MongoDB khác với 4.4, hãy nhớ thay đổi 4.4
trong phần URL của lệnh này để phù hợp với phiên bản bạn muốn cài đặt:
- curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
cURL là một công cụ dòng lệnh có sẵn trên nhiều hệ điều hành được sử dụng để truyền dữ liệu. Nó đọc bất kỳ dữ liệu nào được lưu trữ tại URL được truyền tới nó và in nội dung ra đầu ra của hệ thống. Trong ví dụ dưới đây, cURL in nội dung của tệp khóa GPG rồi đưa nội dung đó vào lệnh sudo apt-key add -
sau đây, do đó thêm khóa GPG vào danh sách các khóa đáng tin cậy của bạn.
Ngoài ra, hãy lưu ý rằng lệnh curl
này sử dụng các tùy chọn -fsSL
, cùng với nhau, về cơ bản sẽ báo cho cURL thất bại trong im lặng. Điều này có nghĩa là nếu vì lý do nào đó, cURL không thể kết nối với máy chủ GPG hoặc máy chủ GPG không hoạt động, thì nó sẽ không vô tình thêm mã lỗi vào danh sách các khóa đáng tin cậy của bạn.
Lệnh này sẽ trả về OK
nếu khóa được thêm thành công:
OutputOK
Nếu bạn muốn kiểm tra kỹ xem khóa đã được thêm chính xác hay chưa, bạn có thể thực hiện bằng lệnh sau:
- apt-key list
Điều này sẽ trả về khóa MongoDB ở đâu đó trong đầu ra:
Output/etc/apt/trusted.gpg
--------------------
pub rsa4096 2019-05-28 [SC] [expires: 2024-05-26]
2069 1EEC 3521 6C63 CAF6 6CE1 6564 08E3 90CF B1F5
uid [ unknown] MongoDB 4.4 Release Signing Key <[email protected]>
. . .
Tại thời điểm này, bản cài đặt APT của bạn vẫn chưa biết tìm gói mongodb-org
ở đâu mà bạn cần để cài đặt phiên bản MongoDB mới nhất.
Có hai nơi trên máy chủ của bạn mà APT tìm kiếm các nguồn gói trực tuyến để tải xuống và cài đặt: tệp sources.list
và thư mục sources.list.d
. sources.list
là một tệp liệt kê các nguồn dữ liệu APT đang hoạt động, với một nguồn trên mỗi dòng và các nguồn ưa thích nhất được liệt kê đầu tiên. Thư mục sources.list.d
cho phép bạn thêm các mục sources.list
đó dưới dạng các tệp riêng biệt.
Chạy lệnh sau để tạo một tệp trong thư mục sources.list.d
có tên mongodb-org-4.4.list
. Nội dung duy nhất trong tệp này là một dòng duy nhất đọc deb [ arch=amd64,arm64] https://repo.mongodb.org/apt/ubuntufocal/mongodb-org/4.4 multiverse
:
- echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Dòng duy nhất này cho APT biết mọi thứ nó cần biết về nguồn đó là gì và tìm nó ở đâu:
deb
: Điều này có nghĩa là mục nhập nguồn tham chiếu đến một kiến trúc Debian thông thường. Trong những trường hợp khác, phần này của dòng có thể đọc deb-src
, có nghĩa là mục nguồn đại diện cho mã nguồn của một bản phân phối Debian.[ arch=amd64,arm64 ]
: Điều này chỉ định kiến trúc nào dữ liệu APT sẽ được tải xuống. Trong trường hợp này, nó chỉ định kiến trúc amd64
và arm64
.https://repo.mongodb.org/apt/ubuntu
: Đây là URI đại diện cho vị trí có thể tìm thấy dữ liệu APT. Trong trường hợp này, URI trỏ đến địa chỉ HTTPS nơi đặt kho lưu trữ MongoDB chính thức.focal/mongodb-org/4.4
: Kho lưu trữ Ubuntu có thể chứa một số bản phát hành khác nhau. Điều này chỉ rõ rằng bạn chỉ muốn phiên bản 4.4
của gói mongodb-org
có sẵn cho bản phát hành focal
của Ubuntu (“Focal Fossa” là tên mã của Ubuntu 20.04).multiverse
: Phần này trỏ APT đến một trong bốn kho chính của Ubuntu. Trong trường hợp này, nó trỏ đến kho lưu trữ multiverse
.Sau khi chạy lệnh này, hãy cập nhật chỉ mục gói cục bộ của máy chủ của bạn để APT biết nơi tìm gói mongodb-org
:
- sudo apt update
Sau đó, bạn có thể cài đặt MongoDB:
- sudo apt install mongodb-org
Khi được nhắc, hãy nhấn Y
rồi ENTER
để xác nhận rằng bạn muốn cài đặt gói.
Khi lệnh kết thúc, MongoDB sẽ được cài đặt trên hệ thống của bạn. Tuy nhiên nó vẫn chưa sẵn sàng để sử dụng. Tiếp theo, bạn sẽ khởi động MongoDB và xác nhận rằng nó hoạt động bình thường.
Quá trình cài đặt được mô tả trong bước trước sẽ tự động thiết lập cấu hình MongoDB để chạy dưới dạng daemon được điều khiển bởi systemd
, nghĩa là bạn có thể quản lý MongoDB bằng các lệnh systemctl
khác nhau. Tuy nhiên, quy trình cài đặt này không tự động khởi động dịch vụ.
Chạy lệnh systemctl
sau để bắt đầu dịch vụ MongoDB:
- sudo systemctl start mongod.service
Sau đó kiểm tra trạng thái của dịch vụ. Lưu ý rằng lệnh này không bao gồm .service
trong định nghĩa tệp dịch vụ. systemctl
sẽ thêm hậu tố này vào bất kỳ đối số nào bạn chuyển tự động nếu nó chưa có, vì vậy không cần thiết phải thêm nó:
- sudo systemctl status mongod
Lệnh này sẽ trả về kết quả như sau, cho biết rằng dịch vụ đang hoạt động:
Output● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-09 12:57:06 UTC; 2s ago
Docs: https://docs.mongodb.org/manual
Main PID: 37128 (mongod)
Memory: 64.8M
CGroup: /system.slice/mongod.service
└─37128 /usr/bin/mongod --config /etc/mongod.conf
Sau khi xác nhận rằng dịch vụ đang chạy như mong đợi, hãy bật dịch vụ MongoDB khởi động khi khởi động:
- sudo systemctl enable mongod
Bạn 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ủ cơ sở dữ liệu và thực hiện lệnh chẩn đoán. Lệnh sau sẽ kết nối với cơ sở dữ liệu và xuất phiên bản hiện tại, địa chỉ máy chủ và cổng của nó. Nó cũng sẽ trả về kết quả của lệnh connectionStatus
nội bộ của MongoDB:
- mongo --eval 'db.runCommand({ connectionStatus: 1 })'
connectionStatus
sẽ kiểm tra và trả về trạng thái kết nối cơ sở dữ liệu. Giá trị 1
cho trường ok
trong phản hồi cho biết máy chủ đang hoạt động như mong đợi:
OutputMongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") }
MongoDB server version: 4.4.0
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
Ngoài ra, lưu ý rằng cơ sở dữ liệu đang chạy trên cổng 27017
trên 127.0.0.1
, địa chỉ loopback cục bộ đại diện cho máy chủ cục bộ. Đây là số cổng mặc định của MongoDB.
Tiếp theo, chúng ta sẽ xem cách quản lý phiên bản máy chủ MongoDB với systemd
.
Như đã đề cập trước đây, quy trình cài đặt được mô tả trong Bước 1 sẽ thiết lập cấu hình MongoDB để chạy dưới dạng dịch vụ systemd
. Điều này có nghĩa là bạn có thể quản lý nó bằng các lệnh systemctl
tiêu chuẩn giống như với các dịch vụ hệ thống Ubuntu khác.
Như đã đề cập trước đó, lệnh systemctl status
kiểm tra trạng thái của dịch vụ MongoDB:
- sudo systemctl status mongod
Bạn có thể dừng dịch vụ bất cứ lúc nào bằng cách gõ:
- sudo systemctl stop mongod
Để bắt đầu dịch vụ khi nó dừng, hãy chạy:
- sudo systemctl start mongod
Bạn cũng có thể khởi động lại máy chủ khi nó đang chạy:
- sudo systemctl restart mongod
Ở Bước 2, bạn đã kích hoạt MongoDB tự động bắt đầu với máy chủ. Nếu bạn muốn tắt tính năng khởi động tự động này, hãy nhập:
- sudo systemctl disable mongod
Sau đó, để kích hoạt lại nó để khởi động khi khởi động, hãy chạy lại lệnh enable
:
- sudo systemctl enable mongod
Để biết thêm thông tin về cách quản lý các dịch vụ systemd
, hãy xem Systemd Essentials: Working with Services, Units, and the Journal.
Trong hướng dẫn này, bạn đã thêm kho lưu trữ MongoDB chính thức vào phiên bản APT của mình và cài đặt phiên bản MongoDB mới nhất. Sau đó, bạn đã kiểm tra chức năng của Mongo và thực hành một số lệnh systemctl
.
Bước tiếp theo ngay lập tức, chúng tôi thực sự khuyên bạn nên tăng cường bảo mật cho bản cài đặt MongoDB của mình bằng cách làm theo hướng dẫn của chúng tôi về Cách bảo mật MongoDB trên Ubuntu 20.04. Sau khi được bảo mật, bạn có thể thiết lập cấu hình MongoDB để chấp nhận các kết nối từ xa.
Bạn có thể tìm thêm hướng dẫn về cách thiết lập cấu hình và sử dụng MongoDB trong các bài viết này của cộng đồng CloudFly. Chúng tôi cũng khuyến khích bạn xem tài liệu chính thức của MongoDB, vì đây là tài nguyên tuyệt vời về các khả năng mà MongoDB cung cấp.