MongoDB là một cơ sở dữ liệu tài liệu NoSQL mã nguồn mở và miễn phí được sử dụng phổ biến trong các ứng dụng web hiện đại.
Trong hướng dẫn này, bạn sẽ cài đặt MongoDB, quản lý dịch vụ của nó và tùy chọn cho phép truy cập từ xa.
Lưu ý: Khi viết bài này, hướng dẫn này cài đặt phiên bản 3.6 của MongoDB, đây là phiên bản có sẵn từ kho lưu trữ mặc định của Ubuntu. Tuy nhiên, chúng tôi thường khuyên bạn nên cài đặt phiên bản MongoDB mới nhất — phiên bản 4.4 tại thời điểm viết bài này — để thay thế. Nếu bạn muốn cài đặt phiên bản MongoDB mới nhất, chúng tôi khuyên bạn nên làm theo hướng dẫn này về Cách cài đặt MongoDB trên Ubuntu 20.04 từ nguồn.
Để làm theo hướng dẫn này, bạn sẽ cần:
Kho lưu trữ gói chính thức của Ubuntu bao gồm MongoDB, có nghĩa là chúng ta có thể cài đặt các gói cần thiết bằng cách sử dụng apt
. Như đã đề cập trong phần giới thiệu, phiên bản có sẵn từ kho lưu trữ mặc định không phải là phiên bản mới nhất. Để cài đặt phiên bản Mongo mới nhất, vui lòng làm theo hướng dẫn này.
Trước tiên, hãy cập nhật danh sách gói để có phiên bản mới nhất của danh sách kho lưu trữ:
- sudo apt update
Bây giờ hãy cài đặt gói MongoDB:
- sudo apt install mongodb
Lệnh này sẽ nhắc bạn xác nhận rằng bạn muốn cài đặt gói mongodb
và các gói phụ thuộc của nó. Để làm như vậy, nhấn Y
và sau đó ENTER
.
Lệnh này cài đặt một số gói chứa phiên bản ổn định của MongoDB, cùng với các công cụ quản lý hữu ích cho máy chủ MongoDB. Máy chủ cơ sở dữ liệu sẽ tự động khởi động sau khi cài đặt.
Tiếp theo, hãy xác minh rằng máy chủ đang chạy và hoạt động chính xác.
Quá trình cài đặt bắt đầu MongoDB tự động, nhưng hãy xác minh rằng dịch vụ đã được bắt đầu và cơ sở dữ liệu đang hoạt động.
Trước tiên, hãy kiểm tra trạng thái của dịch vụ:
- sudo systemctl status mongodb
Bạn sẽ thấy đầu ra này:
Output● mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-10-08 14:23:22 UTC; 49s ago
Docs: man:mongod(1)
Main PID: 2790 (mongod)
Tasks: 23 (limit: 2344)
Memory: 42.2M
CGroup: /system.slice/mongodb.service
└─2790 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
Theo kết quả này, máy chủ MongoDB đã hoạt động.
Chúng tôi có thể xác minh điều này hơn nữa bằng cách thực sự 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 sau. Điều này sẽ xuất ra phiên bản cơ sở dữ liệu hiện tại, địa chỉ máy chủ và cổng, và đầu ra của lệnh trạng thái:
- mongo --eval 'db.runCommand({ connectionStatus: 1 })'
OutputMongoDB shell version v3.6.8
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("e3c1f2a1-a426-4366-b5f8-c8b8e7813135") }
MongoDB server version: 3.6.8
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
Giá trị 1
cho trường ok
trong phản hồi cho biết máy chủ đang hoạt động bình thường.
Tiếp theo, chúng ta sẽ xem cách quản lý phiên bản máy chủ.
Quá trình cài đặt được nêu trong Bước 1 thiết lập cấu hình MongoDB dưới dạng dịch vụ systemd
, có nghĩa là bạn có thể quản lý nó bằng các lệnh systemctl
tiêu chuẩn cùng với tất cả các dịch vụ hệ thống khác trong Ubuntu.
Để xác minh trạng thái của dịch vụ, hãy nhập:
- sudo systemctl status mongodb
Bạn có thể dừng máy chủ bất cứ lúc nào bằng cách gõ:
- sudo systemctl stop mongodb
Để khởi động máy chủ khi nó dừng, gõ:
- sudo systemctl start mongodb
Bạn cũng có thể khởi động lại máy chủ bằng lệnh sau:
- sudo systemctl restart mongodb
Theo mặc định, MongoDB được cấu hình để bắt đầu tự động với máy chủ. Nếu bạn muốn tắt tự động khởi động, hãy nhập:
- sudo systemctl disable mongodb
Bạn có thể kích hoạt lại tự động khởi động bất cứ lúc nào bằng lệnh sau:
- sudo systemctl enable mongodb
Tiếp theo, hãy điều chỉnh cài đặt tường lửa cho cài đặt MongoDB của chúng ta.
Giả sử bạn đã làm theo hướng dẫn thiết lập máy chủ ban đầu để bật tường lửa trên máy chủ của mình, máy chủ MongoDB sẽ không thể truy cập được từ internet.
Nếu bạn định chỉ sử dụng máy chủ MongoDB cục bộ với các ứng dụng đang chạy trên cùng một máy chủ, thì đây là cài đặt an toàn và được khuyến nghị. Tuy nhiên, nếu bạn muốn có thể kết nối với máy chủ MongoDB của mình từ internet, bạn phải cho phép các kết nối đến bằng cách thêm quy tắc UFW.
Để cho phép truy cập MongoDB trên cổng mặc định 27017
của nó từ mọi nơi, bạn có thể chạy sudo ufw allow 27017
. Tuy nhiên, việc cho phép truy cập internet vào máy chủ MongoDB trên cài đặt mặc định sẽ cho phép mọi người truy cập không hạn chế vào máy chủ cơ sở dữ liệu và dữ liệu của nó.
Trong hầu hết các trường hợp, MongoDB chỉ nên được truy cập từ một số vị trí đáng tin cậy nhất định, chẳng hạn như một máy chủ khác đang lưu trữ một ứng dụng. Để chỉ cho phép máy chủ đáng tin cậy khác truy cập vào cổng mặc định của MongoDB, bạn có thể chỉ định địa chỉ IP của máy chủ từ xa trong lệnh ufw
. Bằng cách này, chỉ máy đó mới được phép kết nối một cách rõ ràng:
- sudo ufw allow from trusted_server_ip/32 to any port 27017
Bạn có thể xác minh thay đổi trong cài đặt tường lửa bằng ufw
:
- sudo ufw status
Bạn sẽ thấy lưu lượng truy cập vào cổng 27017
được cho phép trong đầu ra. Lưu ý rằng nếu bạn đã quyết định chỉ cho phép một địa chỉ IP nhất định kết nối với máy chủ MongoDB, thì địa chỉ IP của vị trí được phép sẽ được liệt kê thay vì Anywhere
trong đầu ra của lệnh này:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
Bạn có thể tìm thấy các cài đặt tường lửa nâng cao hơn để hạn chế quyền truy cập vào các dịch vụ trong UFW Essentials: Common Firewall Rules and Commands.
Ngay cả khi cổng được mở, MongoDB vẫn sẽ chỉ lắng nghe địa chỉ cục bộ 127.0.0.1
. Để cho phép kết nối từ xa, hãy thêm địa chỉ IP có thể định tuyến công khai của máy chủ của bạn vào tệp mongodb.conf
.
Mở tệp cấu hình MongoDB trong trình soạn thảo văn bản ưa thích của bạn. Lệnh ví dụ này sử dụng nano
:
- sudo nano /etc/mongodb.conf
Thêm địa chỉ IP của máy chủ MongoDB của bạn vào giá trị bindIP
. Đảm bảo đặt dấu phẩy giữa địa chỉ IP hiện có và địa chỉ bạn đã thêm:
...
logappend=true
bind_ip = 127.0.0.1,your_server_ip
#port = 27017
...
Lưu tệp và thoát khỏi trình chỉnh sửa. Nếu bạn đã sử dụng nano
để chỉnh sửa tệp, hãy thực hiện việc này bằng cách nhấn CTRL + X
, Y
, rồi ENTER
.
Sau đó, khởi động lại dịch vụ MongoDB:
- sudo systemctl restart mongodb
MongoDB hiện đang lắng nghe các kết nối từ xa, nhưng bất kỳ ai cũng có thể truy cập nó. Làm theo Cách bảo mật MongoDB trên Ubuntu 20.04 để thêm người dùng quản trị và khóa mọi thứ hơn nữa.
Bạn có thể tìm thêm các hướng dẫn chuyên sâu 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 CloudFly. Tài liệu MongoDB chính thức cũng là một tài nguyên tuyệt vời về các khả năng mà MongoDB cung cấp.