Cách cài đặt Apache CouchDB NoSQL Database Server trên Debian 11

theanh

Administrator
Nhân viên
Apache CouchDB là một cơ sở dữ liệu NoSQL mã nguồn mở do Apache Software Foundation phát triển. Mỗi cơ sở dữ liệu là một tập hợp các tài liệu ở định dạng JSON. Mỗi tài liệu bao gồm một số trường và tệp đính kèm. Nó đi kèm với một API restful cho phép bạn tạo, chỉnh sửa và xóa các tài liệu cơ sở dữ liệu. Nó hỗ trợ hai chế độ - độc lập và nhóm. Nếu bạn đang sử dụng nó trên một máy chủ duy nhất, bạn có thể sử dụng chế độ độc lập. Chế độ nhóm sẽ hữu ích nếu bạn đang sử dụng nhiều máy chủ.

Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt Apache CouchDB Database Server trên máy chủ Debian 11. Bạn cũng sẽ học cách thực hiện một số thao tác cơ bản trên cơ sở dữ liệu và truy cập CouchDB qua URL công khai bằng máy chủ web Caddy.

Điều kiện tiên quyết​


  • Máy chủ chạy Debian 11.

  • Gói Sudo đã được cài đặt.
Mã:
$ apt install sudo
[*]
Người dùng không phải root có quyền sudo.

[*]
Mọi thứ đã được cập nhật.
Mã:
$ sudo apt update && sudo apt upgrade
[*]
Tên miền đủ điều kiện (FQDN), như couchdb.example.com để truy cập CouchDB qua URL công khai có HTTPS.

Bước 1 - Cài đặt tiện ích​

Trước khi tiến hành cài đặt, chúng ta cần cài đặt một số công cụ cần thiết cho hướng dẫn. Chạy lệnh sau để cài đặt chúng.
Mã:
$ sudo apt install -y curl apt-transport-https gnupg nano lsb-release

Bước 2 - Thêm kho lưu trữ CouchDB​

Bước đầu tiên là nhập khóa GPG của CouchDB. Chạy lệnh sau để nhập khóa.
Mã:
$ curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
Thêm kho lưu trữ của CouchDB vào danh sách kho lưu trữ hệ thống.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ `lsb_release -cs` main" \ | sudo tee /etc/apt/sources.list.d/couchdb.list >/dev/null
Cập nhật danh sách kho lưu trữ hệ thống.
Mã:
$ sudo apt update

Bước 3 - Cài đặt CouchDB​

Chạy lệnh sau để cài đặt CouchDB.
Mã:
$ sudo apt install couchdb -y
Trình cài đặt CouchDB sẽ tự động nhắc bạn cấu hình các thiết lập cơ bản. Ở bước đầu tiên, trình cài đặt sẽ hỏi bạn muốn sử dụng trình cài đặt này trong một thiết lập máy chủ duy nhất hay nhiều nút. Vì chúng ta đang cài đặt trình cài đặt này trên một máy chủ duy nhất, hãy giữ nguyên tùy chọn đã chọn và nhấn Enter để tiếp tục.



Tiếp theo, bạn sẽ được yêu cầu đặt tên cookie. Chọn bất kỳ tên nào bạn muốn.



Tiếp theo, bạn sẽ được yêu cầu thiết lập địa chỉ liên kết cho dịch vụ của CouchDB. Vì chúng ta đang cài đặt nó trên máy chủ và sẽ cần truy cập nó thông qua bảng điều khiển UI, hãy đặt 0.0.0.0 làm địa chỉ liên kết. Nếu bạn đang có kế hoạch giới hạn quyền truy cập vào máy chủ CouchDB ở một địa chỉ IP, thì hãy sử dụng địa chỉ đó.



Tiếp theo, bạn sẽ được yêu cầu tạo mật khẩu quản trị viên cho tài khoản admin mặc định của nó.



Bạn sẽ được yêu cầu xác minh lại mật khẩu.



Nhấn Enter để hoàn tất quá trình cài đặt.

Bước 4 - Xác minh cài đặt CouchDB​

Để xác minh xem quá trình cài đặt có thành công hay không, hãy chạy lệnh sau.
Mã:
$ curl http://127.0.0.1:5984/
Nó sẽ trả về đầu ra được định dạng JSON với thông tin về CouchDB.
Mã:
{"couchdb":"Chào mừng","version":"3.2.2","git_sha":"d5b746b7c","uuid":"7a20b1eadd803f1c0d77fb9617c7f3de","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}
Đầu ra của shell không được định dạng. Đây là cách nó trông như thế nào khi định dạng.
Mã:
{ "couchdb":"Welcome", "version":"3.2.2", "git_sha":"d5b746b7c", "uuid":"7a20b1eadd803f1c0d77fb9617c7f3de", "features":[ "access-ready", "partitioned", "pluggable-storage-engines", "reshard", "scheduler" ], "vendor":{ "name":"The Apache Software Foundation" }}
Bạn cũng có thể truy cập nó qua web bằng cách truy cập URL http://<yourserverIP>:5984/. Nhưng trước khi thực hiện điều đó, chúng ta cần mở cổng trong tường lửa của mình. Giả sử bạn đang sử dụng Tường lửa đơn giản (ufw), hãy chạy lệnh sau để mở cổng.
Mã:
$ sudo ufw allow 5984/tcp
Mở URL http://<yourserverIP>:5984 trong trình duyệt của bạn. Bạn sẽ thấy màn hình sau. Đầu ra sau được chụp trên Firefox. Trong các trình duyệt khác, bạn sẽ chỉ thấy đầu ra thô mà bạn nhận được trong thiết bị đầu cuối của mình.


Bước 5 - Truy cập CouchDB​

CouchDB đi kèm với GUI dựa trên web có tên là Fauxton để quản lý và tạo cơ sở dữ liệu. Bạn có thể truy cập nó thông qua URL http://<yourserverIP>:5984/_utils/. Khởi chạy URL trong trình duyệt yêu thích của bạn và bạn sẽ thấy màn hình đăng nhập sau.



Nhập admin làm tên người dùng và mật khẩu đã tạo trước đó. Nhấn nút Đăng nhập để tiếp tục. Tiếp theo, bạn sẽ được đưa đến bảng điều khiển CouchDB.



Tại đây, bạn sẽ thấy hai cơ sở dữ liệu được tạo trong quá trình cài đặt. Cơ sở dữ liệu _users như mong đợi xử lý thông tin cho người dùng nền tảng CouchDB và cơ sở dữ liệu _replicator chứa thông tin về bất kỳ cơ sở dữ liệu hoặc hoạt động sao chép nào.

Bạn cũng sẽ thấy một thanh bên với đủ loại tùy chọn mà bạn có thể sử dụng với CouchDB.

Bước 6 - Các hoạt động cơ sở dữ liệu cơ bản bằng Giao diện CouchDB​

Giao diện Fauxton của CouchDB cho phép chúng ta thực hiện các hoạt động CRUD cơ bản (tạo, đọc, cập nhật và xóa). Chúng ta hãy bắt đầu bằng cách tạo một cơ sở dữ liệu mới.

Tạo cơ sở dữ liệu​

Để tạo cơ sở dữ liệu mới, hãy nhấp vào liên kết Tạo cơ sở dữ liệu trên màn hình chính. Nó sẽ mở ra cửa sổ bật lên sau.



Nhập tên cơ sở dữ liệu bạn muốn tạo và nhấp vào nút Tạo.

Điều này sẽ tạo một cơ sở dữ liệu mới và mở ra màn hình sau.


Tạo tài liệu​

Bây giờ chúng ta đã có cơ sở dữ liệu, hãy tạo một tài liệu trong đó. Nhấp vào nút Tạo tài liệu để bắt đầu. Bạn sẽ nhận được màn hình tài liệu mới sau được điền sẵn một đối tượng JSON và một _id có Mã định danh duy nhất toàn cầu (GUID).



Chúng ta hãy thêm một số dữ liệu bằng cách thêm một số trường theo cách sau. Nếu bạn muốn thay đổi giá trị của trường _id, bạn chỉ có thể làm như vậy trước khi tạo tài liệu. Bạn không thể thay đổi giá trị của trường này sau khi tài liệu đã được tạo. Tuy nhiên, bạn có thể chỉnh sửa các trường khác bất kỳ lúc nào.
Mã:
{ "_id": "0b4ad0d607479c09bb9121b146007363", "Name": "Navjot Singh", "role": "writer", "skills": "linux"}




Nhấp vào nút Create Document khi bạn hoàn tất việc thêm các trường để lưu tài liệu mới. Bạn sẽ được đưa trở lại trang All Documents sau.



Để xem nội dung của tài liệu, bạn có thể nhấp vào liên kết {} JSON.



Để chỉnh sửa tài liệu, bạn có thể nhấp vào biểu tượng bút chì hiển thị ở bên phải hoặc chuyển về chế độ xem Metadata và nhấp vào liên kết tài liệu. Thay đổi giá trị của bất kỳ mục nào và nhấp vào Lưu tài liệu để hoàn tất.

Xóa tài liệu​

Để xóa tài liệu, hãy nhấp vào dấu kiểm ở phía trước tài liệu và chọn nút xóa ở trên cùng như hiển thị bên dưới.


Bước 7 - Các thao tác cơ bản của cơ sở dữ liệu bằng dòng lệnh​

Mặc dù sử dụng giao diện web là cách đơn giản hơn để sử dụng CouchDB, nhưng có thể đạt hiệu quả cao hơn bằng cách thực hiện các thao tác tương tự thông qua dòng lệnh.

Tạo cơ sở dữ liệu​

Trước khi bắt đầu tạo cơ sở dữ liệu, chúng ta hãy định nghĩa một biến cho URL để kết nối. Chúng ta sẽ sử dụng xác thực văn bản thuần túy đơn giản cho các ví dụ của mình. Vì chúng ta sẽ cần xác thực mọi lệnh, nên tốt hơn là sử dụng một biến được xác định trước cho nó. Bạn có thể sử dụng localhost hoặc 127.0.0.1 để kết nối với cài đặt CouchDB.
Mã:
$ HOST="http://admin:[emailprotected]:5984"
Lưu ý: Sử dụng mật khẩu dạng văn bản thuần túy không phải là phương pháp tốt nhất và không nên sử dụng trong môi trường sản xuất. Bạn có thể kiểm tra tài liệu chính thức của CouchDB để biết các phương pháp xác thực an toàn hơn.

Bây giờ chúng ta đã xác định URL máy chủ, hãy thử tạo một cơ sở dữ liệu khác bằng lệnh sau.
Mã:
$ curl -X PUT $HOST/another_db
Tên của cơ sở dữ liệu là another_db. Và chúng ta cần cung cấp mật khẩu quản trị viên cho lệnh.

Tạo tài liệu​

Để tạo tài liệu, hãy chạy lệnh sau.
Mã:
$ curl -X POST -d '{"todo":"task 1", "done":false}' $HOST/another_db -H "Content-Type:application/json"
Cờ -X chỉ ra rằng chúng ta đang thực hiện thao tác HTTP POST. Cờ -H chỉ định loại nội dung nào chúng ta đang đẩy, tức là JSON ở đây. Và cờ -d chỉ định nội dung JSON thực tế mà chúng ta đang thêm.

Lệnh trên sẽ tự động tạo ID cho tài liệu. Nó sẽ tạo ra đầu ra sau cho biết lệnh đã thành công.
Mã:
{"ok":true,"id":"0b4ad0d607479c09bb9121b14600c6ee","rev":"1-2fc1d70532433c39c9f61480607e3681"}
Như bạn thấy, ID cho tài liệu đã được tự động tạo. Nếu bạn muốn chỉ định ID tùy chỉnh, bạn có thể thực hiện theo cách sau.
Mã:
$ curl -X POST -d '{"_id":"random_task", "todo":"task 2", "done":false}' $HOST/another_db -H "Content-Type:application/json"{"ok":true,"id":"random_task","rev":"1-bceeae3c4a9154c87db1649473316e44"}

Tạo tài liệu hàng loạt​

Bạn cũng có thể thêm tài liệu hàng loạt.
Mã:
$ curl -X POST -d '{"docs": [{"todo":"task 3", "done":false}, {"todo":"task 4", "done":false}]}' $HOST/another_db/_bulk_docs -H "Content-Type:application/json"
Như bạn có thể thấy, khi chúng ta chèn nhiều tài liệu, phần thân POST chứa một đối tượng có trường docs. Trường này chứa một mảng các tài liệu sẽ được chèn vào cơ sở dữ liệu. Trong khi chèn một tài liệu duy nhất, yêu cầu POST đã được gửi đến cơ sở dữ liệu ($HOST/another_db). Nhưng khi chúng ta cần chèn nhiều tài liệu, yêu cầu phải được gửi đến URL $HOST/another_db/_bulk_docs.

Bạn sẽ nhận được kết quả tương tự.
Mã:
[{"ok":true,"id":"0b4ad0d607479c09bb9121b14600cb04","rev":"1-778fd61f8f460d0c1df1bb174279489d"},{"ok":true,"id":"0b4ad0d607479c09bb9121b14600d9ef","rev":"1-dc9e84861bba58e5cfefeed8f5133636"}]
Tại đây, bạn có thể thấy kết quả chứa ID cho hai tài liệu mới.

Đọc tài liệu​

Để đọc một tài liệu từ cơ sở dữ liệu, bạn cần chỉ định ID của tài liệu đó. Chạy lệnh sau để truy xuất tài liệu random_task. Vì chúng ta đã sử dụng yêu cầu HTTP POST để thêm dữ liệu, nên để truy xuất dữ liệu, bạn sẽ cần sử dụng yêu cầu GET.
Mã:
$ curl -X GET $HOST/another_db/random_task
Bạn sẽ nhận được kết quả sau.
Mã:
{"_id":"random_task","_rev":"1-bceeae3c4a9154c87db1649473316e44","todo":"task 2","done":false}
Tại đây, hãy ghi lại trường _rev của tài liệu. Trường này hữu ích khi bạn cần chỉnh sửa hoặc xóa tài liệu.

Chỉnh sửa tài liệu​

Để chỉnh sửa tài liệu, bạn cần sử dụng trường _rev. Bất kỳ yêu cầu nào không bao gồm trường _rev đều bị CouchDB tự động từ chối trong khi chỉnh sửa. Vì CouchDB cập nhật toàn bộ tài liệu, nên toàn bộ tài liệu phải được gửi trong phần thân yêu cầu trong quá trình chỉnh sửa.

Chúng ta hãy cập nhật tài liệu random_task bằng cách sử dụng lệnh sau.
Mã:
$ curl -X PUT -d '{"_rev":"1-bceeae3c4a9154c87db1649473316e44", "todo":"task 2", "done":true}' $HOST/another_db/random_task
Hãy đảm bảo rằng bạn thay thế giá trị của trường _rev bằng giá trị bạn nhận được khi đọc tài liệu. Giá trị này phải khớp với giá trị trong tài liệu thực tế.

Bạn sẽ nhận được kết quả tương tự như bên dưới.
Mã:
{"ok":true,"id":"random_task","rev":"2-4cc3dfb6e76befd665faf124b36b7f1c"}
Nếu bạn nhận thấy, dữ liệu của trường rev đã thay đổi. Bất kỳ thay đổi nào khác đối với tài liệu sẽ yêu cầu bạn sử dụng giá trị rev mới này.

Xóa tài liệu​

Để xóa tài liệu, bạn sẽ cần chỉ định ID và giá trị rev đã cập nhật. Hãy xóa tài liệu random-task.
Mã:
$ curl -X DELETE $HOST/another_db/random_task?rev=2-4cc3dfb6e76befd665faf124b36b7f1c
Đảm bảo khớp giá trị của trường rev trong lệnh với giá trị trong tài liệu thực tế của bạn. Bạn sẽ nhận được kết quả tương tự như sau.
Mã:
{"ok":true,"id":"random_task","rev":"3-07d6cde68be2a559497ec263045edc9d"}

Xem dữ liệu​

Chúng ta hãy kiểm tra danh sách tất cả các cơ sở dữ liệu trên máy chủ.
Mã:
$ curl -X GET $HOST/_all_dbs
Liệt kê tất cả các tài liệu trong một cơ sở dữ liệu cụ thể.
Mã:
$ curl -X GET $HOST/another_db/_all_docs

Bước 8 - Cài đặt Caddy Server​

Cho đến nay, chúng ta đã truy cập CouchDB bằng địa chỉ IP máy chủ. Có một phương pháp dễ dàng nếu bạn muốn thay thế nó bằng tên miền của mình và sử dụng SSL ở phía trước để bảo mật hơn. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ sử dụng Caddy Server vì nó nhẹ và hoạt động với cấu hình tối thiểu, đồng thời đi kèm với tính năng tạo SSL tích hợp.

Chạy lệnh sau để cài đặt một số gói mà Caddy yêu cầu. Chúng có thể đã được cài đặt trên máy chủ của bạn.
Mã:
$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
Cài đặt khóa GPG của Caddy và thêm kho lưu trữ chính thức vào danh sách kho lưu trữ của Debian.
Mã:
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
Cài đặt máy chủ Caddy.
Mã:
$ sudo apt update$ sudo apt install caddy
Chạy lệnh sau để xác minh cài đặt.
Mã:
$ caddy versionv2.5.1 h1:bAWwslD1jNeCzDa+jDCNwb8M3UJ2tPa8UZFFzPVmGKs=

Bước 9 - Cấu hình Caddy​

Để cấu hình Caddy hoạt động như một máy chủ proxy ngược, bạn cần cấu hình Caddyfile. Mở Caddyfile để chỉnh sửa.
Mã:
$ sudo nano /etc/caddy/Caddyfile
Thay thế mã trong đó bằng mã sau.
Mã:
couchdb.example.com { reverse_proxy localhost:5984 tls [emailprotected] log { tệp đầu ra /var/log/caddy/couchdb.log }}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chạy trình xác thực Caddy để kiểm tra xem có vấn đề gì không.
Mã:
$ caddy validate --adapter caddyfile --config /etc/caddy/Caddyfile
Nếu bạn gặp bất kỳ lỗi nào liên quan đến định dạng, hãy chạy lệnh sau để sửa lỗi.
Mã:
$ sudo caddy fmt --overwrite /etc/caddy/Caddyfile
Chạy validator một lần nữa.

Khởi động lại máy chủ Caddy để triển khai các thay đổi.
Mã:
$ sudo systemctl restart caddy
Bây giờ bạn có thể truy cập CouchDB qua URL https://couchdb.example.com/_utils/ trong trình duyệt của bạn.

Kết luận​

Bạn đã học cách cài đặt máy chủ Cơ sở dữ liệu Apache CouchDB trên máy Debian 11. Bạn cũng đã học cách thực hiện các hoạt động cơ sở dữ liệu cơ bản thông qua dòng lệnh và Giao diện người dùng Fauxton. Và cuối cùng nhưng không kém phần quan trọng, bạn cũng đã học cách hiển thị Giao diện người dùng Fauxton trên internet bằng cách sử dụng Caddy làm máy chủ proxy ngược. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên