Thứ hai, 11/09/2017 | 00:00 GMT+7

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

MongoDB là một database hướng tài liệu, miễn phí và open-souce . Nó được gọi là database NoSQL vì nó không dựa trên cấu trúc database 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 schemas động. Không giống như database quan hệ, MongoDB không yêu cầu schemas xác định trước trước khi bạn thêm dữ liệu vào database . Bạn có thể thay đổi schemas bất kỳ lúc nào và thường xuyên khi cần thiết mà không cần phải cài đặt một database mới với một schemas được cập nhật.

Hướng dẫn này hướng dẫn bạn cài đặt MongoDB Community Edition trên server CentOS 7.

Yêu cầu

Trước khi làm theo hướng dẫn này, hãy đảm bảo bạn có một regular user , không phải root có quyền sudo . Bạn có thể tìm hiểu thêm về cách cài đặt user có các quyền này từ hướng dẫn của ta , Cách tạo user Sudo trên CentOS .

Bước 1 - Thêm Kho lưu trữ MongoDB

Gói mongodb-org không tồn tại trong repository lưu trữ mặc định cho CentOS. Tuy nhiên, MongoDB duy trì một repository chuyên dụng. Hãy thêm nó vào server của ta .

Với trình soạn thảo vi , hãy tạo file .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 trong tài liệu của MongoDB và thêm thông tin repository cho bản phát hành ổn định mới nhất vào file :

/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, ta nên xác minh 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-3.2/7/x86_64 MongoDB Repository updates/7/x86_64 CentOS-7 - Updates . . .

Với MongoDB Repository , hãy tiến hành cài đặt.

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

Ta có thể cài đặt gói mongodb-org từ repository của bên thứ ba bằng cách sử dụng trình yum .

  • sudo yum install mongodb-org

Có hai Is this ok [y/N]: dấu nhắc . Gói đầu tiên cho phép cài đặt các gói MongoDB và gói thứ hai nhập khóa GPG. Nhà xuất bản MongoDB ký phần mềm của họ và yum sử dụng khóa để xác nhận tính toàn vẹn của các gói đã download . Tại mỗi dấu nhắc , hãy 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ù 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 reloadstop .

Lệnh reload yêu cầu quá trình mongod đọc file 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

Các stop lệnh ngừng tất cả các hoạt mongod quy trình.

  • 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 ta có thể kiểm tra xem dịch vụ đã bắt đầu bằng cách xem phần cuối của file mongod.log bằng lệnh tail :

  • sudo tail /var/log/mongodb/mongod.log
Output
. . . [initandlisten] waiting for connections on port 27017

Đầu ra của việc chờ kết nối xác nhận MongoDB đã khởi động thành công và ta có thể truy cập server database bằng MongoDB Shell:

  • mongo

Lưu ý: Khi 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 ứng dụng phân stream . Nó có thể chạy các quy trình bổ sung để xử lý dung lượng công việc của nó. Cảnh báo nêu rõ rằng để MongoDB hoạt động hiệu quả nhất, số lượng quy trình mà nó được phép quay phải bằng một nửa số file mà nó có thể mở tại bất kỳ thời điểm nào. Để giải quyết cảnh báo, hãy thay đổi giá trị rlimit mềm của processes cho mongod bằng cách chỉnh sửa file 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ẽ không còn tồn tại.

Để tìm hiểu cách tương tác với MongoDB từ shell, bạn có thể xem lại 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() . . .

Để tiến trình mongod chạy trong 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 hướng database không thể hoạt động nếu không có database , ta sẽ đảm bảo daemon MongoDB, mongod , sẽ khởi động cùng hệ thống.

Sử dụng trình systemctl để kiểm tra trạng thái khởi động của nó:

  • systemctl is-enabled mongod; echo $?

Đầu ra bằng 0 xác nhận một daemon được kích hoạt, mà ta muốn. Tuy nhiên, một xác nhận một daemon bị vô hiệu hóa sẽ không khởi động.

Output
. . . enabled 0

Trong trường hợp daemon bị vô hiệu hóa, hãy sử dụng trình systemctl để kích hoạt nó:

  • sudo systemctl enable mongod

Bây giờ ta có một version MongoDB đang chạy sẽ tự động bắt đầu sau khi khởi động lại hệ thống.

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

Không giống như các server database khác, MongoDB không đi kèm với dữ liệu trong database test của nó. Vì ta không muốn thử nghiệm phần mềm mới sử dụng dữ liệu production , ta sẽ download tập dữ liệu mẫu từ phần “ Nhập tập dữ liệu mẫu” của tài liệu “Bắt đầu với MongoDB”. Tài liệu JSON chứa một tập hợp các nhà hàng mà ta sẽ sử dụng để thực hành tương tác với MongoDB và tránh gây hại cho dữ liệu nhạy cảm.

Bắt đầu bằng cách chuyển vào một folder có thể ghi:

  • cd /tmp

Sử dụng lệnh curl và liên kết từ MongoDB để download file 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 database thử nghiệm . Cờ --db xác định database nào sẽ sử dụng trong khi cờ --collection chỉ định nơi thông tin sẽ được lưu trữ trong database và cờ --file cho lệnh file nào thực hiện hành động nhập:

  • mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json

Đầu ra xác nhận việc nhập dữ liệu từ file primer-dataset.json :

Output
connected to: localhost imported 25359 documents

Với tập dữ liệu mẫu có sẵn, ta sẽ thực hiện một truy vấn đối với nó.

Chạy lại MongoDB Shell:

  • mongo

Shell chọn database test theo mặc định, đó là nơi ta nhập dữ liệu của bạn .

Truy vấn bộ sưu tập nhà hàng bằng phương thức find() để hiển thị danh sách tất cả các nhà hàng trong tập dữ liệu. Vì bộ sưu tập chứa hơn 25.000 mục nhập, hãy sử dụng phương thức limit() tùy chọn limit() để giảm kết quả của truy vấn xuống một số được chỉ định. Ngoài ra, phương thức pretty() làm cho thông tin dễ đọc hơn với các dòng mới 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 để 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 bằng lệnh exit :

  • exit
Output
Bye

Kết luận

Trong hướng dẫn này, ta đã đề cập đến việc thêm repository của bên thứ ba vào yum , cài đặt server database MongoDB, nhập tập dữ liệu mẫu và thực hiện một truy vấn đơn giản. Ta hầu như không làm trầy xước bề mặt của các khả năng của MongoDB. Bạn có thể tạo database của riêng mình với một số bộ sưu tập , điền vào chúng với nhiều tài liệu và bắt đầu xây dựng một ứng dụng mạnh mẽ.


Tags:

Các tin liên quan

Cách cài đặt Nagios 4 và theo dõi server của bạn trên CentOS 7
2017-09-11
Cách cài đặt WordPress với Caddy trên CentOS 7
2017-08-04
Cách cài đặt và sử dụng Webmin trên CentOS 7
2017-07-13
Cách bật SFTP mà không cần quyền truy cập Shell trên CentOS 7
2017-06-01
Cách theo dõi cảnh báo Zabbix với Alerta trên CentOS 7
2017-05-31
Cách cài đặt Perlbrew và quản lý nhiều phiên bản Perl 5 trên CentOS 7
2017-05-31
Cách cấu hình NTP để sử dụng trong Dự án NTP Pool trên CentOS 7
2017-05-11
Cách lưu trữ một trang web với Caddy trên CentOS 7
2017-05-10
Cách cài đặt và cấu hình Ghost trên CentOS 7
2017-04-10
Cách cấu hình một client FreeIPA trên CentOS 7
2017-03-24