Giảm 50% tất cả các gói, thời gian có hạn. Bắt đầu từ $2.48/mo
12 phút còn lại
Cơ sở dữ liệu & Phân tích

Cách Cài Đặt MongoDB Trên Ba Phiên Bản Mới Nhất của Ubuntu (Từng Bước)

Jim Schwarz By Jim Schwarz 12 phút đọc
Ký hiệu gốc của MongoDB được trình bày trên máy chủ tương lai để cài đặt MongoDB trên Ubuntu + khẩu hiệu về những gì để mong đợi từ bài viết + tiêu đề bài viết + logo thương hiệu Cloudzy

Bạn đã quyết định sử dụng MongoDB, một lựa chọn tuyệt vời alternative to MariaDB để xây dựng một ứng dụng MERN stack, một nền tảng phân tích, hoặc bất kỳ hệ thống dựa trên tài liệu nào, nhưng gặp khó khăn với các dòng lệnh Linux thường thấy và vô số lỗi terminal. 

Tuy nhiên, đừng lo lắng, vì hướng dẫn này cung cấp mọi thứ bạn cần biết từ A đến Z để cài đặt MongoDB trên Ubuntu.

MongoDB sử dụng X.Y.Z phiên bản 8.0 là một chính loạt phát hành, và 8.2 là một phụ phát hành trong chu kỳ 8.0. Các phát hành phụ thêm tính năng trong cùng chu kỳ chính và, từ 8.0 trở đi, cũng được cung cấp cho cài đặt on-prem cho các trường hợp cụ thể (ví dụ: Search và Vector Search). MongoDB 8.0 trên Ubuntu hỗ trợ 24.04 (Noble), 22.04 (Jammy) và 20.04 (Focal) trên hệ thống 64-bit, với hỗ trợ ARM64 trên các nền tảng được chọn.

Yêu cầu GnuPG và Curl

Trước khi cài đặt mongodb-org chính thức, Ubuntu yêu cầu hai điều kiện tiên quyết: GnuPGCurl. Những công cụ này cho phép Ubuntu tải xuống MongoDB, bởi vì mongodb của Ubuntu không được bảo trì bởi MongoDB Inc. và xung đột với mongodb-org chính thức. Nếu bạn đã cài đặt mongodb hãy chắc chắn gỡ cài đặt nó.

Tiếp theo, chạy lệnh sudo apt-get install gnupg curl. Curl là công cụ để tải tệp từ internet và cần thiết để lấy khoá bảo mật của MongoDB. GnuPG là những gì Ubuntu sử dụng để xác minh tính xác thực của phần mềm. Nếu GnuPG bị thiếu, Ubuntu không thể xác minh các gói MongoDB.

Hãy chắc chắn rằng terminal của bạn đã cài đặt thành công GnuPG và Curl. Nếu có, nó sẽ trông như thế này:Kết quả terminal Ubuntu sau khi thêm GnuPG và Curl

Nhập Khoá GPG MongoDB

Trình quản lý gói Ubuntu, APT, sử dụng khoá GPG để xác minh các gói trước khi cài đặt. Nếu không có khoá GPG này, Ubuntu không cho phép thêm các kho lưu trữ của MongoDB. Nhập lệnh sau đây trong terminal của bạn để thêm khoá:

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
   --dearmor

Nếu hoạt động, kết quả terminal của bạn sẽ trông như thế này:Terminal Ubuntu sau khi thêm khoá GPG MongoDB thành công.

Để nói một cách đơn giản, lệnh này tải xuống chữ ký bảo mật của MongoDB, chuyển đổi nó thành định dạng mà Ubuntu có thể đọc được và lưu nó trong thư mục hệ thống an toàn. Dưới đây là chi tiết từng phần của dòng lệnh:

  1. curl -fsSL URL tải xuống khoá chính thức của MongoDB
  2. –dearmor chuyển đổi khoá từ định dạng văn bản thành nhị phân để Ubuntu hiểu
  3. -o /usr/share/keyrings/mongodb-server-8.0.gpg lưu tập tin nhị phân vào thư mục nơi Ubuntu lưu trữ các khóa đáng tin cậy

Nếu bạn tuân theo chính xác từng lệnh dòng lệnh, khóa công khai GPG sẽ được thêm vào mà không gặp vấn đề gì. Tuy nhiên, một số người dùng gặp lỗi khi tải MongoDB vì khóa GPG không khớp. Các lỗi như:

NO_PUBKEY
The following signatures couldn't be verified
public key not available

xảy ra khi bạn không tuân theo chính xác các lệnh khóa GPG ở trên và thay vào đó sử dụng sudo apt-key vì Ubuntu hiện đại không khuyến nghị nó.

Thêm Kho Lưu Trữ MongoDB

Thêm Kho Lưu Trữ của MongoDB tạo ra một tập tin để Ubuntu biết rằng các gói MongoDB có sẵn tại một địa chỉ internet cụ thể. Tạo tập tin danh sách tại /etc/apt/sources.list.d/mongodb-org-8.0.list bằng cách ghi dòng kho lưu trữ vào nó bằng cách sử dụng echo … | sudo tee …

Đây là nơi mọi chuyện trở nên phức tạp, vì các phiên bản khác nhau của Ubuntu yêu cầu một biến thể khác nhau của lệnh này. Bây giờ chúng tôi sẽ kiểm tra cách nhập tập tin danh sách trên ba phiên bản Ubuntu được đề cập ở trên.

Ubuntu 24.04 (Noble)

Để tạo tập tin danh sách trên Ubuntu 24.04, chỉ cần đặt echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list trên terminal của bạn.

Điều này có thể trông phức tạp, nhưng đừng lo lắng. Khi chúng tôi chia lệnh thành các phần, mọi thứ sẽ rõ ràng.

  1. echo in ra văn bản
  2. /etc/apt/sources.list.d là thư mục nơi Ubuntu lưu trữ các định nghĩa nguồn phần mềm. Mỗi tập tin với .list định dạng bên trong thư mục hướng dẫn Ubuntu đến một vị trí cụ thể để tải phần mềm
  3. Bạn không thể ghi bất cứ thứ gì vào các thư mục hệ thống theo mặc định với tư cách là người dùng bình thường. áo phông cấp cho người dùng quyền đặc biệt để ghi văn bản vào các tập tin hệ thống, trong khi sử dụng sudo
  4. cao quý là tên mã cho Ubuntu 24.04. Mỗi phiên bản Ubuntu có một tên mã như:
Phiên bản Tên mã
20.04 Tiêu điểm
22.04 Jammy
24.04 Cao quý

Nếu bạn không khớp phiên bản Ubuntu của mình với dòng lệnh đúng, Ubuntu sẽ không nhận ra kho lưu trữ của MongoDB.

Ubuntu 22.04 (Jammy)

Thêm tập tin danh sách vào Ubuntu Jammy trông giống hệt nhau, nhưng bạn phải nhập dòng lệnh bằng cách thay thế cao quý với jammyI'd be happy to help translate to Vietnamese, but I don't see any English text to translate in your message. Could you please provide the English text you'd like me to translate?

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Hãy chắc chắn rằng đó là cái phù hợp với phiên bản Ubuntu của bạn, nếu không nó sẽ lại thất bại.

Ubuntu 20.04 (Focal)

Thực hiện theo các bước tương tự ở đây, nhưng thay vì cao quý or jammy, đặt vào focal:

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Khi kho lưu trữ đã được thiết lập, bạn có thể tiến hành cài đặt mongodb-org.

Làm tươi Cơ sở dữ liệu Gói

Bây giờ Ubuntu đã nhận diện kho lưu trữ, bạn cần tải lại cơ sở dữ liệu gói bên trong nó để từ đây trở đi nó cũng bao gồm MongoDB. Chạy lệnh dưới đây:

sudo apt-get update

Lệnh này giữ nguyên trên mọi phiên bản Ubuntu, và nếu bỏ qua nó, Ubuntu sẽ không bao gồm MongoDB. Nếu lệnh thực hiện đúng, kết quả hiển thị trên terminal của bạn sẽ là:Kết quả terminal Ubuntu sau khi chạy sudo apt-get update

 Bây giờ, sau khi tải lại cơ sở dữ liệu gói, là lúc để tải xuống các gói MongoDB.

Cài đặt MongoDB Community Server

Có nhiều phiên bản MongoDB khác nhau để cài đặt, nhưng người dùng thường chọn phiên bản ổn định mới nhất vì nó được ưa thích hơn. Để cài đặt phiên bản ổn định mới nhất, chạy sudo apt-get install -y mongodb-org

Ubuntu đã tải xuống các gói MongoDB, cài đặt chúng, tạo tài khoản người dùng MongoDB và thư mục dữ liệu, và đăng ký MongoDB làm dịch vụ hệ thống. Đến bây giờ, chúng ta đã hướng dẫn cách tải xuống MongoDB trên Ubuntu. Bây giờ hãy khởi chạy nó.

Cách Khởi chạy MongoDB

Bây giờ, để chạy MongoDB, chúng ta cần yêu cầu trình quản lý dịch vụ của Ubuntu, "systemd", nhận diện MongoDB như một dịch vụ chạy nền, và để làm điều đó, bạn cần nhập lệnh sau vào terminal:

sudo systemctl start mongod

Nếu lệnh thực hiện đúng, Ubuntu sẽ khởi chạy MongoDB như một ứng dụng chạy nền. Tuy nhiên, nếu lệnh không thực hiện đúng, bạn có thể nhận được lỗi tương tự như Không thể khởi động mongod.service.

Điều này có thể xảy ra do một số vấn đề phổ biến:

  • Lỗi tệp cấu hình in /etc/mongod.conf (lỗi thụt lề YAML là phổ biến)
  • Xung đột cổng (cổng 27017 đã được chiếm dụng)
  • Vấn đề quyền truy cập trên thư mục dữ liệu hoặc nhật ký (var/lib/mongodb hoặc var/log/mongodb)
  • Đĩa đầy or trạng thái hệ thống tệp bị hỏng

Ba Lệnh để Chẩn đoán Vấn đềThiết lập máy chủ tương lai + ba lệnh terminal Ubuntu + đám mây với đường dẫn nâng cấp được viết.

Thật dễ dàng để nói những gì có thể sai với cấu hình của bạn khiến MongoDB không chạy, nhưng khó hơn nhiều để xác định được nguyên nhân chính xác. Ba cách dễ dàng để chẩn đoán nơi lỗi có thể phát sinh là:

  1. Kiểm tra trạng thái dịch vụ: sudo systemctl status mongod --no-pager
  2. Kiểm tra nhật ký chi tiết (quan trọng nhất): sudo journalctl -u mongod –no-pager -n 100
  3. Kiểm tra tệp nhật ký riêng của MongoDB

Tuy nhiên xin lưu ý rằng nếu ổ đĩa của bạn đầy hoặc các tệp hệ thống bị hỏng, việc khắc phục sẽ liên quan nhiều hơn đến phần cứng chứ không phải phần mềm. Người dùng có thể cần mua thiết bị tốt hơn cho cấu hình máy chủ của mình để chạy MongoDB hiệu quả nếu cấu hình hiện tại của họ đã lỗi thời. 

Nếu mua một máy chủ đầy đủ không nằm trong ngân sách của bạn, hãy xem xét Cloudzy Ubuntu VPS để có trải nghiệm sạch sẽ trên máy chủ riêng của bạn với bản phân phối Ubuntu mà bạn chọn. Nó đi kèm với 24/7 hỗ trợ và lên đến 40Gbps tốc độ mạng, nhờ vào lưu trữ NVMe SSDDDR5 RAM lưu trữ

Ngoài ra, nó có độ trễ tối thiểu, 99.95% thời gian hoạt động, và một 14 ngày đảm bảo hoàn tiền. Không chỉ vậy, nó còn có sẵn ở 12 các vị trí trên khắp thế giới với giá cả phải chăng.

Ba Cách Khắc Phục Phổ Biến Nhất Để MongoDB Chạy

Không có cách tuyệt đối nào để vừa xác định được chính xác vấn đề của hệ thống với MongoDB vừa khắc phục nó chỉ bằng một bước dễ dàng. Vì vậy dưới đây là một số cách khắc phục phổ biến mà bạn có thể dùng để hy vọng giúp MongoDB hoạt động trở lại.

  1. Lỗi thụt đầu dòng cấu hình YAML. Giả sử bạn đã chỉnh sửa /etc/mongod.conf kiểm tra lại thụt đầu dòng bằng cách gõ sudo nano /etc/mongod.conf. Tệp YAML khá nhạy cảm với khoảng trắng, vì vậy hãy chắc chắn rằng chỉ có hai khoảng trắng cho mỗi mức trong /etc/mongod.conf.
  2. Cổng 27017 bị chiếm dụng. Nếu có thứ gì đó khác đang sử dụng cổng 27017, hãy tắt nó hoặc thay đổi cổng của MongoDB trong mongod.conf. Nếu bạn không chắc chắn về bất cứ thứ gì chạy trên cổng 27017, bạn có thể chạy sudo ss -lntp | grep 27017 xem thử
  3. Vấn đề quyền trong thư mục dữ liệu. Đôi khi MongoDB thiếu quyền để chạy trên hệ thống của bạn và do đó không chạy cả. Trước tiên hãy chạy sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb, sau đó khởi động lại MongoDB bằng sudo systemctl restart mongod

Theo Trang web chính thức của MongoDB, một cách khác để giải quyết vấn đề này là tải lại daemon bằng sudo systemctl daemon-reload, và chạy lệnh đầu tiên, sudo systemctl start mongod, lần nữa.

Nếu không có mongod.service, quá trình cài đặt không đặt unit systemd, vì vậy hãy cài đặt lại mongodb-org gói thiết lập

Sau khi làm xong tất cả, bạn có thể kiểm tra xem MongoDB đã khởi động thành công hay chưa bằng sudo systemctl status mongod. Nếu terminal hiển thị hoạt động (đang chạy), bạn đã sẵn sàng. Nhưng vẫn còn một số cấu hình khác để trải nghiệm của bạn mượt mà hơn.

Tự động hóa MongoDBThiết lập máy chủ tương lai với biểu tượng tự động hóa MongoDB + terminal với lệnh MongoDB + tệp log

MongoDB không tự động khởi động mỗi khi bạn bật máy chủ; bạn sẽ phải lặp lại một số bước được đề cập mỗi lần. Tuỳ chọn, bạn có thể yêu cầu Ubuntu khởi động MongoDB sau khi khởi động vào desktop.

Chỉ cần chạy sudo systemctl enable mongod trên terminal của bạn, điều này sẽ yêu cầu hệ thống của bạn chạy MongoDB sau mỗi lần khởi động lại. Ngoài ra, bạn có thể khởi động lại mongod quá trình bằng cách chạy lệnh sudo systemctl restart mongod. Ngoài ra, người dùng có thể cần theo dõi quy trình xử lý bất kỳ lỗi hoặc thông báo quan trọng nào bằng cách xem lệnh xuất ra trong tệp:

/var/log/mongodb/mongod.log

Bây giờ mọi thứ đã được thiết lập, hãy bắt đầu sử dụng mongod của bạn.

Mở Shell MongoDB

Để tương tác với cơ sở dữ liệu của họ, người dùng phải mở shell MongoDB bằng cách chạy lệnh mongosh. Hãy coi nó như một dòng lệnh chuyên dụng cho MongoDB hoặc bảng điều khiển MySQL. Ngoài ra, bạn có thể tương tác với MongoDB bằng các công cụ GUI như trình điều khiển MongoDB. Nhưng nếu bạn muốn tương tác với nó từ terminal, mongosh được tạo ra để thực hiện điều đó.

MongoDB của bạn bây giờ hoàn toàn chạy được, nhưng có một số bước bổ sung mà bạn phải xem xét để bảo vệ nó.

Xác thực MongoDBMongoDB quy trình xác thực + biểu tượng khóa + xác nhận xác thực.

MongoDB theo mặc định không có bảo vệ mật khẩu vì bạn phải có quyền truy cập để tạo người dùng. Dưới đây là cách đơn giản để thực hiện điều này

Tạo Người Dùng Quản Trị

Trước tiên, bạn cần chuyển sang cơ sở dữ liệu quản trị bằng:

use admin

Sau đó tạo người dùng bằng db.createUser({…}). Điền vào với

  • Tên người dùng
  • Mật khẩu
  • Vai trò

Đối với vai trò, tốt nhất hãy nhập root có nghĩa là kiểm soát đầy đủ hoặc quản trị viên.

Bật Xác thực

Bây giờ chúng ta đã thiết lập người dùng của riêng mình, chúng ta cần chỉnh sửa /etc/mongod.conf tập tin. Đó là vì tập tin này kiểm soát cách MongoDB hoạt động. Nhưng hãy ghi nhớ rằng bằng cách chỉnh sửa tập tin, bạn phải luôn khởi động lại mongod dịch vụ sau đó với sudo systemctl restart mongod. Điều chúng ta cần thay đổi ở đây là một tham số gọi là authorization trông như thế này:

security:

  authorization:

Để hoàn tất quy trình xác thực, chỉ cần thay đổi giá trị authorization như sau:

security:

  authorization: enabled

Từ giờ trở đi, MongoDB yêu cầu đăng nhập, vì vậy xác thực của bạn đã hoàn tất. Bây giờ hãy tiến hành cấu hình khác để tận dụng đầy đủ MongoDB.

Mở Tường Lửa Của Bạn

Như đã đề cập trước đó, MongoDB chạy trên cổng 27017. Vì tường lửa chặn các cổng theo mặc định, bạn phải yêu cầu tường lửa cho phép các ứng dụng chạy trên cổng 27017. Để thực hiện điều này, chỉ cần thực hiện lệnh:

ufw allow from YOUR_IP to any port 27017

Ngoài ra, bạn cũng có thể thực hiện lệnh ufw allow 27017, nhưng hãy cẩn thận, vì chạy lệnh này sẽ cho phép toàn bộ internet truy cập vào cổng đó. Có thể an toàn nhất là chỉ chọn tùy chọn đầu tiên vì nó cho phép lưu lượng truy cập vào cổng chỉ từ địa chỉ IP của bạn.

Người dùng có thể vẫn gặp phải những thách thức khi chạy MongoDB, chẳng hạn như vấn đề truy cập từ xa. Hãy ở lại để tìm hiểu cách khắc phục nó.

Vấn Đề Truy Cập Từ XaThiết lập máy chủ với 3 màn hình cấu hình cài đặt truy cập từ xa của MongoDB + lệnh terminal.

MongoDB khởi chạy với bindIp. bindIp giới hạn MongoDB để 127.0.0.1, chỉ cho phép kết nối cục bộ. Do đó, nếu bạn muốn kết nối với máy chủ MongoDB từ một nơi khác, bạn sẽ không được phép truy cập, vì MongoDB được cấu hình theo mặc định để chỉ cho phép kết nối tại chỗ trừ khi được cấu hình khác.

Một lần nữa, hãy truy cập /etc/mongod.conf, và bạn sẽ thấy ba dòng như thế này:

net:

  port: 27017

  bindIp: 127.0.0.1

Nếu bạn muốn cho phép kết nối từ xa đến mongod người dùng của bạn, hãy thay đổi các giá trị ở trên như sau:

net:

  port: 27017

  bindIp: 0.0.0.0

Sau đó, khởi động lại mongod dịch vụ với sudo systemctl restart mongod giống như với bất kỳ chỉnh sửa nào khác bạn thực hiện trên tệp.

Bạn đã cấp quyền cho mongod dịch vụ của bạn chấp nhận kết nối từ xa. Tuy nhiên, hãy cẩn thận, vì bằng cách làm này, bạn sẽ exposed cơ sở dữ liệu của mình cho toàn bộ internet nếu bạn chưa xác thực mongod người dùng. Có nhiều bot liên tục quét các cổng MongoDB mở, vì vậy luôn đảm bảo rằng người dùng mongod của bạn có mật khẩu.

Tóm Tắt Chung

Chúc mừng, bạn đã hoàn thành mọi bước để tạo dịch vụ MongoDB được tối ưu hóa cho hệ thống Ubuntu của bạn. Dưới đây cũng là sơ đồ tư duy để theo dõi từng bước được trình bày trong bài viết này.

Lệnh Nó Hoạt Động Như Thế Nào
cập nhật apt Làm mới danh sách phần mềm
cài đặt apt Cài đặt phần mềm
curl Tải xuống tệp
gpg Quản lý khóa mã hóa
echo In đặc biệt
áo phông Ghi vào tệp được bảo vệ
systemctl start Bắt đầu dịch vụ
systemctl enable Khởi động cùng hệ thống
systemctl status Kiểm tra dịch vụ
mongosh Nhập shell MongoDB
Chỉnh sửa /etc/mongod.conf Bật xác thực
ufw Quản lý tường lửa
bindIp Cho phép truy cập từ xa

Điều đó sẽ giúp bạn hiểu rõ hơn toàn bộ quy trình. Nhưng nếu thiết lập MongoDB riêng quá khó khăn, hãy chắc chắn khởi động MongoDB VPS của Cloudzy cho máy chủ Ubuntu 24.04 LTS riêng của bạn với MongoDB được cài đặt sẵn.

Nó đi kèm với 99.95% uptime, 24/7 hỗ trợ, và một 14 ngày đảm bảo hoàn tiền. Ngoài ra, nó hỗ trợ tới 40 Gbps dải thông rộng nhờ DDR5 RAMlưu trữ NVMe SSD lưu trữ của nó. Đừng lo lắng về nơi bạn sống, vì nó cũng có sẵn ở 12 các địa điểm trên toàn thế giới với giá cả phải chăng.

Nhưng dù sao, bạn cuối cùng đã quản lý thiết lập dịch vụ MongoDB riêng của mình với mọi cấu hình để hỗ trợ các khối lượng công việc và doanh nghiệp ở mức sản xuất.

Chia sẻ

Bài viết mới từ blog

Tiếp tục đọc.

Quản Lý Dữ Liệu Thông Minh cho Doanh Nghiệp của Bạn: Chiến Lược Lưu Trữ và Sao Lưu Kiểu Cloud với VPS
Cơ sở dữ liệu & Phân tích

Quản Lý Dữ Liệu Thông Minh cho Doanh Nghiệp của Bạn: Chiến Lược Lưu Trữ và Sao Lưu Kiểu Cloud với VPS

VPS để quản lý dữ liệu doanh nghiệp an toàn là chiến lược tôi khuyến nghị bất cứ khi nào một công ty quyết định dừng việc quản lý các tệp rải rác trên các laptop, email đính kèm và các nơi được quên

Rexa CyrusRexa Cyrus 7 phút đọc
Materialized View so với View
Cơ sở dữ liệu & Phân tích

Materialized View so với View: Hiểu vai trò của chúng trong cơ sở dữ liệu

Trong các hệ thống cơ sở dữ liệu, một materialized view là một đối tượng cơ sở dữ liệu lưu trữ các kết quả được tính toán trước của một truy vấn dưới dạng bảng vật lý. Vì dữ liệu được lưu trữ thực tế trên đĩa, các truy vấn phức tạp

Ivy JohnsonIvy Johnson 7 phút đọc
SnowFlake so với DataBricks
Cơ sở dữ liệu & Phân tích

So sánh Databricks vs Snowflake: Quan điểm không thiên vị từ các chuyên gia dữ liệu 🧱❄️

Những doanh nghiệp phụ thuộc vào dữ liệu để đưa ra quyết định - từ các nền tảng thương mại điện tử theo dõi hành vi khách hàng, các tổ chức tài chính dự báo xu hướng, đến các công ty công nghệ

Allan Van KirkAllan Van Kirk Đọc trong 13 phút

Sẵn sàng triển khai? Từ $2.48/tháng.

Cloud độc lập, hoạt động từ 2008. AMD EPYC, NVMe, 40 Gbps. Hoàn tiền trong 14 ngày.