Code前端首页关于Code前端联系我们

CouchDB 教程:安装、保护和访问 Futon

terry 2年前 (2023-09-26) 阅读数 46 #数据库

Apache CouchDB,它类似于 Redis、Cassandra 和 MongoDB,也是一个 NoSQL 数据库。 CouchDB 将数据存储为非关系 JSON 文档。这使得 CouchDB 用户能够以类似于现实世界的方式存储数据。

CouchDB 是由 Apache 软件基金会开发的开源 NoSQL 数据库。它是用 Erlang 编程语言编写的。

CouchDB 可以通过命令行或称为 Futon 的 Web 界面进行管理。 Futon 可用于执行管理任务,例如创建和管理 CouchDB 数据库、文档和用户。

先决条件

请准备/满足以下两个先决条件:

  • Ubuntu 14.04系统
  • 以具有管理权限的用户身份登录服务器

注意:本教程假设为非root用户,并且可以以root权限用户运行。请注意,如果您使用非 root 用户,则首次使用 sudo 执行命令时需要输入 root 密码。

1。步骤 - 准备服务器

在安装 CouchDB 之前,您需要确保已设置服务器。

开始更新系统:

$ sudo apt-get update

安装允许管理源存储库的软件:

$ sudo apt-get install software-properties-common -y

注意:-y 标志告诉 apt-get 对安装过程中可能出现的任何提示回答“是”。如果您想手动响应提示,可以删除此标志。

添加 PPA 以从相应的存储库获取最新版本的 CouchDB:

$ sudo add-apt-repository ppa:couchdb/stable -y

警告:向服务器添加新的个人包存档 (PPA) 时要非常小心。由于任何人都可以创建 PPA,因此无法保证其可信或安全。在本例中,上述 PPA 是 Apache CouchDB 团队维护的官方 PPA。

在上一步之后添加了新的 PPA。接下来,您需要更新系统以获得最新的软件包信息:

$ sudo apt-get update

现在可以安装 CouchDB 和 Futon。 ? CouchDB 和蒲团。

CouchDB 默认运行在 localhost 上,使用端口 5984。这些基本信息可以通过命令行运行curl 来获取:

$ curl localhost:5984

注意:如果没有安装curl 软件工具,可以使用 sudo apt-get安装curl命令来安装。

执行上面的命令请求,你应该得到类似如下的结果:

{"couchdb":"Welcome","uuid":"b9dsf278cfdas743b5fdfsaafd399fas7582e","version":"1.6.1","vendor":{"name":"Ubuntu","version":"14.04"}}

现在你可以使用curl -X PUT命令创建一个新的数据库:

curl -X PUT localhost:5984/new_database

执行后返回的响应如下 -

{"ok":true}

步骤 3 – 安全 CouchDB 安全

默认情况下,安装 CouchDB 时创建的一些文件和目录属于 root 用户和组。虽然这在开发过程中很好,但在生产过程中可能会存在安全风险。

安装 CouchDB 时,它将创建一个名为 couchdb 的用户和组。在本节中,我们将更改 couchdb 用户和组的 CouchDB 文件的所有权和权限。

所有权更改控制 CouchDB 进程可以访问的内容,权限更改控制谁可以访问 CouchDB 文件和目录。

在更改所有权和权限之前停止 CouchDB:

$ sudo stop couchdb

更改目录 /usr/lib/couchdb、/usr/share/couchdb 和 /etc/couchdb 以及可执行文件 /usr/bin/couchdb 的所有权,将所有者设置为用户 couchdb并属于 couchdb 组。

sudo chown -R couchdb:couchdb /usr/lib/couchdb /usr/share/couchdb /etc/couchdb /usr/bin/couchdb

/usr/lib/couchdb、/usr/share/couchdb 和 /etc/couchdb 以及可执行文件 /usr/bin/couchdb 的权限现已更改,以便 couchdb 用户和 couchdb 组可以自由访问它们(直到安装了 CouchDB),其他用户无法访问这些文件和目录。

sudo chmod -R 0770 /usr/lib/couchdb /usr/share/couchdb /etc/couchdb /usr/bin/couchdb

现在重新启动 CouchDB:

sudo start couchdb

CouchDB 现在应该在没有任何属于 root 用户或 root 组的文件或目录的情况下运行。

第 4 步 - 访问 Futon

CouchDB 提供了一个方便的基于 Web 的仪表板,称为:Futon。通过 SSH 连接将流量定向到您的服务器,从本地服务器访问它。只有通过 SSH 连接到您的服务器的用户才能访问 Futon 控制面板。

要安全地连接到 CouchDB(无需公开),您可以创建从本地端口 5984 到远程服务器端口 5984 的 SSH 隧道。

您可以在本地计算机上运行以下命令来设置隧道:

$ ssh -L5984:127.0.0.1:5984 yiibai_user@your_server_ip

注意:请记住将 yiibai_user 替换为您的用户名,将 your_server_ip 替换为您服务器的 IP 地址。

连接打开后,使用端口 5984 从网络浏览器访问 Futon。要查看 Futon 页面,请访问以下 URL:

http://localhost:5984/_utils

CouchDB教程:安装、安全保护、访问Futon

默认情况下,所有访问 Futon 的 CouchDB 用户都具有管理权限。如右下角所示:

CouchDB教程:安装、安全保护、访问Futon

您可以通过单击 修复此修复此)链接来更改此设置并创建新的管理员。

第 5 步 - 添加管理员用户

现在 CouchDB 已启动并运行,您可以开始使用它。

在创建管理员用户之前,所有用户都可以使用管理员权限访问 CouchDB(尽管他们首先需要通过 SSH 访问服务器)。

最好为 CouchDB 创建管理员帐户,以防止意外或未经授权的数据丢失。

为此,请单击“Futon”右下角出现的“修复此修复此)”链接。将出现一个屏幕,允许您创建 CouchDB 管理员用户,如下所示:

CouchDB教程:安装、安全保护、访问Futon

输入用户名和密码:

CouchDB教程:安装、安全保护、访问Futon

输入新的 CouchDB 用户名和密码后,单击 创建 按钮创建新的管理员用户。 Futon 右下角的消息将通过显示类似以下内容的消息进行确认:

CouchDB教程:安装、安全保护、访问Futon

注意:创建管理用户可防止未经授权的用户删除和修改数据库、项目文档和 CouchDB 配置。但是,它不会阻止其他人创建或访问该文档。

就是这样,CouchDB 服务器现已完全配置完毕。要了解有关使用数据库的更多信息,请继续阅读。

下面是一个漂亮的分隔符...


上面是一个漂亮的分隔符...

从 Futon 执行 CRUD 操作

Futon 有一个非常简单但有用的用户界面,用于执行基本的 CRUD 操作(创建、读取、更新和删除)。

在本节中,我们将创建一个名为 todos 的新数据库,向其中添加一个新文档,然后检索、更新和删除该文档。

注意:如果您创建了管理员用户,则必须以管理员身份登录才能创建新数据库。

创建数据库和文档

CouchDB教程:安装、安全保护、访问Futon

要创建名为Todos的新数据库,请单击屏幕左上角的链接创建数据库。这将弹出一个类似于以下内容的对话框:

CouchDB教程:安装、安全保护、访问Futon

输入数据库名称:todos,然后单击“创建”按钮。

这将创建一个名为 todos 的新数据库,并将您带到一个页面,您可以在其中创建和修改新创建的数据库中的文档。

CouchDB教程:安装、安全保护、访问Futon

创建文档

要创建新文档,请单击页面上的链接“新建文档”。

这将打开一个新的文档屏幕。该文档默认只有_id字段。如果需要,您可以更改此字段的值,或保持原样。

CouchDB教程:安装、安全保护、访问Futon

单击链接添加字段可向此文档添加新字段。

如前所述,我们添加了两个名为“todo”和“done”的字段。默认情况下,新字段具有空值。您可以通过双击来更改该值。

在此示例中,我们双击任务和完成值字段并输入任务 1 或 false。

输入值后,按ENTER 或单击字段旁边的小绿色勾号以保存内容(如果不这样做,该字段将保持空白)。它应如下所示:

CouchDB教程:安装、安全保护、访问Futon

要保存文档,请单击“保存文档”链接。保存文档时,您将看到已添加 _rev 字段,如下所示:

CouchDB教程:安装、安全保护、访问Futon

读取文件

单击 Todos 链接(位于顶部“概览”链接列旁边) )查看新创建的文档现在是todos数据库中的唯一文档。

CouchDB教程:安装、安全保护、访问Futon

点击表格中单据(ID)的按键(红色部分),即可进入单据详情页面。

编辑文档

在此页面上,您可以编辑和更新文档字段,如下所示:

CouchDB教程:安装、安全保护、访问Futon

要编辑字段值,请双击相应字段并开始编辑。

您可以删除任何字段(_id 和 _rev 字段除外)、添加新字段或更改现有字段的值。在本例中,Completed 字段的值已从 false 更改为 true,如下所示:

CouchDB教程:安装、安全保护、访问Futon

删除文档

如果要删除文档,可以单击删除文档链接,系统会提示您确认:

CouchDB教程:安装、安全保护、访问Futon

按按钮删除 确认。

Futon 将删除该文档并跳转到 Todos 数据库页面,该页面现在该文档应该为空,确认该文档确实已被删除。

CouchDB教程:安装、安全保护、访问Futon

从命令行执行CRUD 操作

本节将介绍如何使用curl 从命令行对CouchDB 数据库执行基本的CRUD(创建、读取、更新和删除)操作。

创建数据库

如果您尚未创建 new_database,请按照以下步骤立即创建。此命令必须从安装 CouchDB 数据库的服务器执行:

curl -X PUT http://localhost:5984/new_database -u "admin:password"
{"ok":true}

由于我们之前向 CouchDB 添加了管理员用户,现在我们需要在创建新数据库时发送管理员用户名和密码。
结果应如下所示:

{"ok":true}

创建文档

首先,让我们使用以下请求命令创建一个新文档:

curl -X POST -d '{"todo":"task 1", "done":false}' http://localhost:5984/new_database -H "Content-Type:application/json"

此命令将在 new_database 数据库中创建一个新文档。

-X 标志表示执行 HTTP POST 方法请求操作。由于 POST 方法需要发送 JSON 文档,因此以下 -H 标志将此请求的内容类型设置为 application/json。最后,使用 -d 标志包含 JSON 文档本身。

该操作的响应结果如下:

{"ok":true,"id":"803da996e1524591ce773d24400004ff","rev":"1-2fc1d70532433c39c9f61480607e3681"}

“ok”:该响应的 true 部分表示操作成功。响应包含字段 id 和 rev,分别表示文档的 ID 和文档的修订版本。仅当需要更改或删除文档时才需要这两个字段。

在这种情况下,文档 ID 是由 CouchDB 生成的,因为未指定命令。如果需要,您可以使用生成的唯一 ID 创建文档。

创建具有给定 id 的文档

创建具有 id random_task 的文档:

curl -X POST -d '{"_id":"random_task", "todo":"task 2", "done":false}' http://localhost:5984/new_database -H "Content-Type:application/json"

此命令创建具有 id random_task 的新文档。该命令的响应如下:

{"ok":true,"id":"random_task","rev":"1-bceeae3c4a9154c87db1649473316e44"}

创建多个文档

除了创建单个文档外,还可以批量创建文档。

curl -X POST -d '{"docs": [{"todo":"task 3", "done":false}, {"todo":"task 4", "done":false}]}' http://localhost:5984/new_database/_bulk_docs -H "Content-Type:application/json"

此命令将创建 POST 文本中列出的两个文档。与单个文档插入相比,有两个细微差别:

  1. 插入单个文档时,POST 文本只是一个标准 JSON 对象。在批量插入的情况下,POST 文字包含一个带有文档字段的对象。该字段包含您要插入的文档集。
  2. 插入单个文档时,POST 请求将发送到指向数据库的 URL (http://localhost:5984/new_database)。但对于批量插入请求,URL 为:URL: http://localhost:5984/new_database/_bulk_docs。

批量插入操作的响应如下:

[{"ok":true,"id":"803da996e1524591ce773d24400007df","rev":"1-778fd61f8f460d0c1df1bb174279489d"},{"ok":true,"id":"803da996e1524591ce773d2440001723","rev":"1-dc9e84861bba58e5cfefeed8f5133636"}]

读取文件

可以通过发出 HTTP GET 命令从 CouchDB 数据库检索文档。现在尝试检索上面创建的文档之一:一个名为 random_task 的文件。

curl -X GET http://localhost:5984/new_database/random_task

请注意,URL 包含正在检索的文档的 ID (random_task)。如下所示,对此 GET 请求的响应包含整个文档以及可用于更新或删除该文档的 _id 和 _rev 字段。

{"_id":"random_task","_rev":"1-bceeae3c4a9154c87db1649473316e44","todo":"task 2","done":false}

更新文档

当您想要更新文档时,包含 _rev 字段非常重要。 CouchDB 将拒绝任何不包含 _rev 字段的更新请求。由于 CouchDB 更新整个文档,而不仅仅是部分文档,因此在更新操作期间必须在请求正文中发送整个文档。

要使用 random_task ID 更新文档,我们需要创建一个 HTTP PUT 请求,如下所示:

curl -X PUT -d '{"_rev":"1-bceeae3c4a9154c87db1649473316e44", "todo":"task 2", "done":true}' http://localhost:5984/new_database/random_task

由于每个 _rev 值可能不相同,因此请务必将 _rev 值替换为上一个 Receive 中的值字符串输出。

这将更改文档并将“已完成”字段更新为 true。该请求的答复如下:

{"ok":true,"id":"random_task","rev":"2-4cc3dfb6e76befd665faf124b36b7f1c"}

从答复中可以看出,更新后指定文档的 rev 字段发生了变化。所有将来更新或删除此文档的请求现在都必须使用最新的 rev 值。

删除文档

使用 HTTP DELETE 请求来删除此文档,方法是指定该文档包含新的 RPM 值,如下所示:

curl -X DELETE http://localhost:5984/new_database/random_task?rev=2-4cc3dfb6e76befd665faf124b36b7f1c

与上面的 GET 和 PUT 请求类似,DELETE 请求使用 URL,该 URL指向一个文档。但是,它还在 URL 中包含其他查询参数。 rev 参数必须具有删除操作成功的最后一个 _rev 值。

在这种特殊情况下,请使用上一步中更新操作返回的值。对上述请求的答复如下所示。

{"ok":true,"id":"random_task","rev":"3-07d6cde68be2a559497ec263045edc9d"}

重新启动、停止和启动 CouchDB

启动、停止和重新启动 CouchDB 非常简单。让我们看看如何从服务器完成这些步骤。

重新启动 CouchDB

要重新启动正在运行的 CouchDB 实例,请执行以下命令:

$ sudo restart couchdb

此命令将重新启动正在运行的 CouchDB 实例并显示新实例的进程 ID。如果没有 CouchDB 实例正在运行,执行此命令将给出消息:

$ restart: Unknown instance:

Stop CouchDB

如果要停止正在运行的 CouchDB 实例,请运行以下命令:

$ sudo stop couchdb

执行此命令将停止所有正在运行的 CouchDB 实例并提供确认消息,如下所示:

$ couchdb stop/waiting

启动 CouchDB

要启动 CouchDB,请运行以下命令:

$ sudo start couchdb

如果 CouchDB 尚未运行,运行此命令将启动 CouchDB 并提供确认消息,如下所示如下:

$ couchdb start/running, process 12345

如果 CouchDB 实例已经在运行,执行上述命令将生成如下消息:

$ start: Job is already running: couchdb

CouchDB Status

如果您想检查 CouchDB 的状态,可以使用以下命令:

$ sudo status couchdb

如果 CouchDB 正在运行,将显示类似以下消息:

$ couchdb start/running, process 12345

如果 CouchDB 未运行,查看状态时将显示以下消息:

couchdb stop/waiting

结束

现在您可以使用所有 CouchDB服务器上的功能,您可以使用 Futon 或命令行从本地计算机安全地管理 CouchDB。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门