Hướng dẫn cách cài đặt MongoDB trên CentOS 7
MongoDB là một document-oriented database mã nguồn mở và miễn phí. Nó được phân loại là NoSQL database bởi 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 JSON với các dynamic schemas. Không giống như các 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 kỳ lúc nào theo nhu cầu mà không phải thiết lập cơ sở dữ liệu mới với lược đồ cập nhật.
Bài viết hôm nay, Bizfly Cloud sẽ hướng dẫn bạn cài đặt MongoDB Community Edition trên CentOS 7 server.
Điều kiện tiên quyết
Trước khi làm theo hướng dẫn này, hãy chắc chắn rằng bạn là người dùng thông thường, non-root với các đặc quyền sudo.
Bước 1: Thêm MongoDB Repository
Gói mongodb-org không tồn tại trong kho lưu trữ mặc định cho CentOS. Tuy nhiên, MongoDB duy trì một kho lưu trữ chuyên dụng. Hãy thêm nó vào server.
Với vi editor, hãy tạo một tệp .repo cho yum, tiện ích quản lý gói cho CentOS:
$ sudo vi /etc/yum.repos.d/mongodb-org.repo
Sau đó, hãy truy cập phần Cài đặt trên Red Hat của tài liệu MongoDB và thêm thông tin kho lưu trữ cho 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-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb
org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
Lưu và đóng file.
Trước khi tiếp tục, chúng ta nên xác nhận rằng MongoDB repository tồn tại bên trong tiện ích yum. Lệnh repolist hiển thị danh sách các kho lưu trữ được kích hoạt:
$ yum repolist
Output
. . . repo id repo name
base/7/x86_64 CentOS-7 - Base
extras/7/x86_64 CentOS-7 - Extras
mongodb-org-3.2/7/x86_64 MongoDB Repository
updates/7/x86_64 CentOS-7 - Updates
. . .
Với MongoDB Repository tại chỗ, hãy tiến hành cài đặt.
Bước 2: Cài đặt MongoDB
Chúng ta có thể cài đặt gói mongodb-org từ kho lưu trữ của bên thứ ba bằng cách sử dụng tiện ích yum.
$ sudo yum install mongodb-org
Có hai lời nhắc nhở Is this ok [y / N]. Lời nhắc đầu tiên cho phép cài đặt các gói MongoDB và lời nhắc thứ hai là nhập một GPG key. Publisher của MongoDB ký phần mềm của họ và yum sử dụng key để xác nhận tính toàn vẹn của các gói đã tải xuống. Tại mỗi lời nhắc, gõ Y và sau đó nhấn phím 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 chúng trong hướng dẫn này, bạn cũng có thể thay đổi trạng thái của dịch vụ MongoDB bằng các lệnh reload và stop.
Lệnh reload yêu cầu quá trình mongod đọc tệp cấu hình, /etc/mongod.conf, và áp dụng bất kỳ thay đổi nào mà không yêu cầu khởi động lại.
$ sudo systemctl reload mongod
Lệnh stop tạm dừng tất cả các quá trình chạy mongod.
$ sudo systemctl stop mongod
Tiện ích systemctl không cung cấp kết quả sau khi thực hiện lệnh start, nhưng chúng ta có thể kiểm tra xem dịch vụ đã bắt đầu bằng cách xem phần cuối của tệp tin mongod.log với lệnh tail:
$ sudo tail /var/log/mongodb/mongod.log
Output
. . .
[initandlisten] waiting for connections on port 27017
Output "waiting for a connection" xác nhận rằng MongoDB đã khởi động thành công và chúng ta có thể truy cập vào database server với MongoDB Shell:
$ mongo
Lưu ý:
Khi bạn khởi chạy MongoDB Shell, bạn có thể đã 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à một threaded application. Nó có thể khởi chạy các tiến trình bổ sung để xử lý workload. Cảnh báo nói rằng: MongoDB sẽ trở nên hiệu quả nhất khi số lượng các quá trình mà nó được ủy quyền để spin up nên bằng một nửa số lượng tệp mà nó có thể mở tại bất kỳ thời điểm nào. Để giải quyết cảnh báo này, thay đổi processes soft rlimit value cho 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 file:
/etc/security/limits.d/20-nproc.conf
. . .
mongod soft nproc 32000
Để có giới hạn mới cho MongoDB, hãy khởi động lại nó bằng tiện ích systemctl:
$ sudo systemctl restart mongod
Sau đó, khi bạn kết nối với MongoDB Shell, cảnh báo sẽ chấm dứt.
Để tìm hiểu cách tương tác với MongoDB từ shell, bạn có thể xem lại output của phương thức db.help() cung cấp một danh sách các phương thức cho db object.
> 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()
. . .
Để lại quá trình mongod chạy trong nền, nhưng thoát shell bằng lệnh exit:
> exit
Output
Bye
Bước 3: Xác minh Startup
Bởi vì một database-driven application không thể hoạt động mà không có cơ sở dữ liệu, chúng ta phải đảm bảo rằng MongoDB daemon, mongod, sẽ khởi động với hệ thống.
Sử dụng tiện ích systemctl để kiểm tra trạng thái khởi động của nó:
$ systemctl is-enabled mongod; echo $?
Một output zero confirms và enabled daemon là điều chúng ta cần, tuy nhiên, xác nhận disabled daemon sẽ không bắt đầu.
Output
. . .
enabled
0
Trong trường hợp của disabled daemon, sử dụng tiện ích systemctl để kích hoạt nó:
$ sudo systemctl enable mongod
Bây giờ chúng ta có một running instance của MongoDB sẽ tự động bắt đầu sau khi khởi động lại hệ thống.
Bước 4: Nhập một Example Dataset (tùy chọn)
Không giống như các database servers khác, MongoDB không đi kèm với dữ liệu trong test database. Vì chúng tôi không muốn thử nghiệm với phần mềm mới bằng cách sử dụng production data, chúng tôi sẽ tải xuống tập dữ liệu mẫu từ phần Import Example Dataset (https://docs.mongodb.com/getting-started/shell/import-data/) của tài liệu "Getting Started with MongoDB". Tài liệu JSON chứa một tập hợp các restaurants mà chúng ta sẽ sử dụng để thực hành tương tác với MongoDB và tránh gây hại cho các dữ liệu nhạy cảm.
Bắt đầu bằng cách chuyển vào thư mục có thể ghi:
$ cd /tmp
Sử dụng lệnh curl và liên kết từ MongoDB để tải xuống 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 test database. --db flag xác định cơ sở dữ liệu nào sẽ sử dụng trong khi --collection flag chỉ định vị trí thông tin sẽ được lưu trữ tại đâu trong cơ sở dữ liệu, và --file flag sẽ cho lệnh biết file nào thực hiện hành động nhập trên:
$ mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json
Đầu ra 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 sample dataset in place, chúng tôi sẽ thực hiện một truy vấn đối với nó.
Khởi chạy lại MongoDB Shell:
$ mongo
Shell chọn test database theo mặc định, đó là nơi nhập dữ liệu.
Truy vấn restaurants collection bằng phương thức find() để hiển thị danh sách tất cả các restuarants trong dataset. Vì collection chứa hơn 25.000 mục nhập, hãy sử dụng phương thức limit() tùy chọn để giảm đầu ra của truy vấn bằng một con số nhất định. Ngoài ra, phương thức pretty() làm cho thông tin dễ đọc hơn với các newlines và indentations.
> db.restaurants.find().limit( 1 ).pretty()
Bạn có thể tiếp tục sử dụng sample dataset để tự 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 với lệnh exit:
> exit
Output
Bye
Kết luận
Trong hướng dẫn này, chúng tôi đã đề cập đến việc thêm third-party repository vào yum, cài đặt MongoDB database server, nhập một sample dataset và thực hiện một truy vấn đơn giản. Bạn có thể tạo cơ sở dữ liệu của riêng mình với một số collections, làm đầy chúng với nhiều documents và bắt đầu xây dựng một ứng dụng mạnh mẽ.
Chúc các bạn thành công!
Theo Bizfly Cloud chia sẻ
>> Có thể bạn quan tâm: Cấu hình Apache, MySQL, PHP (LAMP) trên Ubuntu 12.04