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.
[*]
Người dùng không phải root có quyền sudo.
[*]
Mọi thứ đã được cập nhật.
[*]
Tên miền đủ điều kiện (FQDN), như couchdb.example.com để truy cập CouchDB qua URL công khai có HTTPS.
Thêm kho lưu trữ của CouchDB vào danh sách kho lưu trữ hệ thống.
Cập nhật danh sách kho lưu trữ hệ thống.
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.
Nó sẽ trả về đầu ra được định dạng JSON với thông tin về CouchDB.
Đầ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.
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ở 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.
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.
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.
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.
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.
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.
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.
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.
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.
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ự.
Tại đây, bạn có thể thấy kết quả chứa ID cho hai tài liệu mới.
Bạn sẽ nhận được kết quả sau.
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úng ta hãy cập nhật tài liệu random_task bằng cách sử dụng lệnh sau.
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.
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.
Đả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.
Liệt kê tất cả các tài liệu trong một cơ sở dữ liệu cụ thể.
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.
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.
Cài đặt máy chủ Caddy.
Chạy lệnh sau để xác minh cài đặt.
Thay thế mã trong đó bằng mã sau.
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.
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.
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.
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.
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
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
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
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/
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"}}
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" }}
Mã:
$ sudo ufw allow 5984/tcp
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"
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ạ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"
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"}
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"
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"}]
Đọ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
Mã:
{"_id":"random_task","_rev":"1-bceeae3c4a9154c87db1649473316e44","todo":"task 2","done":false}
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
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"}
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ã:
{"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
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
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
Mã:
$ sudo apt update$ sudo apt install caddy
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
Mã:
couchdb.example.com { reverse_proxy localhost:5984 tls [emailprotected] log { tệp đầu ra /var/log/caddy/couchdb.log }}
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
Mã:
$ sudo caddy fmt --overwrite /etc/caddy/Caddyfile
Khởi động lại máy chủ Caddy để triển khai các thay đổi.
Mã:
$ sudo systemctl restart caddy