如何在 Ubuntu 20.04 上安装和配置 Neo4j

您所在的位置:网站首页 ubuntu安装neo4j-4414 如何在 Ubuntu 20.04 上安装和配置 Neo4j

如何在 Ubuntu 20.04 上安装和配置 Neo4j

2023-07-15 05:22| 来源: 网络整理| 查看: 265

介绍

Neo4j 是一个记录数据节点之间关系的图形数据库,而传统的关系数据库使用行和列来存储和结构化数据。由于每个节点都存储对它所连接的所有其他节点的引用,Neo4j 可以以最小的开销编码和查询复杂的关系。

先决条件

要学习本教程,您将需要以下内容:

按照 Ubuntu 20.04 初始服务器设置指南 设置一台 Ubuntu 20.04 服务器,包括一个启用 sudo 的非 root 用户和防火墙。 步骤 1 — 安装 Neo4j

官方 Ubuntu 软件包存储库不包含 Neo4j 数据库引擎的副本。要从 Neo4j 安装上游支持的软件包,您需要从 Neo4j 添加 GPG 密钥以确保软件包下载有效。然后,您将添加一个指向 Neo4j 软件存储库的新包源,最后安装该包。

首先,下载以下 curl 命令的输出并将其通过管道传输到 gpg --dearmor 命令。此步骤会将密钥转换为 apt 可用于验证下载包的格式:

curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key |sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg

接下来,将 Neo4j 4.1 存储库添加到系统的 APT 源中:

echo "deb [signed-byu003d/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable 4.1" | sudo tee -a /etc/apt/sources.list.d/neo4j.list

文件的 [signed-byu003d/usr/share/keyrings/neo4j.gpg] 部分指示 apt 使用您下载的密钥来验证 neo4j 包的存储库和文件信息。

下一步是更新您的包列表,然后安装 Neo4j 包及其所有依赖项。此步骤将下载并安装兼容的 Java 包,因此当 apt 命令提示您安装所有依赖项时,您可以输入 Y:

sudo apt 更新 sudo apt install neo4j

安装过程完成后,Neo4j 应该会运行。但是,它没有设置为在系统重新启动时启动。所以最后一个设置步骤是将其作为服务启用,然后启动它:

sudo systemctl 启用 neo4j.service

现在启动该服务(如果它尚未运行):

sudo systemctl 启动 neo4j.service

完成所有这些步骤后,使用 systemctl 命令检查 Neo4j 的状态:

sudo systemctl status neo4j.service

您应该具有类似于以下内容的输出:

输出● neo4j.service - Neo4j 图形数据库 已加载:已加载(/lib/systemd/system/neo4j.service;已启用;供应商预设:已启用) 活跃:自世界标准时间 2020 年 8 月 7 日星期五 01:43:00 起活跃(运行); 6分钟前 主PID:21915(java) 任务:45(限制:1137) 内存:259.3M CGroup:/system.slice/neo4j.service . . .

还会有其他详细的输出行,但需要注意的重要事项是突出显示的 enabled 和 running 行。安装并运行 Neo4j 后,您可以继续执行下一组步骤,这将指导您连接到 Neo4j、配置凭据以及将节点插入数据库。

第 2 步 — 连接和配置 Neo4j

现在您已安装 Neo4j 并将其配置为在任何重新启动后运行,您可以测试连接到数据库并配置管理员凭据。

要在命令行上与 Neo4j 交互,请使用 cypher-shell 实用程序。像这样调用实用程序:

密码壳

当您第一次调用 shell 时,您将使用默认的管理 neo4j 用户和 neo4j 密码组合登录。一旦您通过身份验证,Neo4j 将提示您更改管理员密码:

密码外壳提示用户名:neo4j 密码: ***** 需要更改密码 新密码: ******************** 以用户 neo4j 的身份在 neo4j://localhost:7687 连接到 Neo4j 4.1.0。 键入 :help 以获取可用命令的列表,或键入 :exit 以退出 shell。 请注意,Cypher 查询必须以分号结尾。 neo4j@neo4j>

在此示例中,突出显示的 ******************** 是新密码的屏蔽版本。选择您自己的强大且令人难忘的密码,并确保将其记录在安全的地方。设置密码后,您将连接到交互式 neo4j@neo4j> 提示,您可以在其中通过插入和查询节点与 Neo4j 数据库进行交互。

注意:Neo4j 社区版支持一次运行一个数据库。此外,社区版本不包括为用户分配角色和权限的功能,因此本教程不包括这些步骤。有关 Neo4j 社区版支持的各种功能的更多信息,请参阅 此处的 Neo4j 文档。

现在您已经设置了管理员密码并测试了连接到 Neo4j,通过键入 :exit 退出 cypher-shell 提示:

:出口

接下来,您可以选择配置 Neo4j 以接受远程连接。

第 3 步(可选)- 为远程访问配置 Neo4j

如果您想将 Neo4j 整合到使用多个服务器的大型应用程序或环境中,则需要将其配置为接受来自其他系统的连接。在此步骤中,您将配置 Neo4j 以允许远程连接,您还将添加防火墙规则以限制哪些系统可以连接到您的 Neo4j 服务器。

默认情况下,Neo4j 配置为仅接受来自 localhost 的连接(127.0.0.1 是 localhost 的 IP 地址)。此配置可确保您的 Neo4j 服务器不会暴露在公共 Internet 中,并且只有有权访问本地系统的用户才能与 Neo4j 交互。

要将 Neo4j 使用的网络套接字从“localhost”更改为其他系统可以使用的网络套接字,您需要编辑“/etc/neo4j/neo4j.conf”文件。在您的首选编辑器中打开配置文件并找到 dbms.default_listen_address 设置。以下示例使用 nano 来编辑文件:

Sudonano / 等 / Neo 4j / Neo 4j。 conf

找到注释掉的 #dbms.default_listen_addressu003d0.0.0.0 行并通过删除前导的 # 注释字符取消注释。

/etc/neo4j/neo4j.conf

. . . #****************************************************** ****************** # 网络连接器配置 #****************************************************** ****************** # 默认配置下 Neo4j 只接受本地连接。 # 要接受非本地连接,请取消注释此行: dbms.default_listen_addressu003d0.0.0.0 . . .

默认情况下,“0.0.0.0”值会将 Neo4j 绑定到系统上所有可用的 IPv4 接口,包括“localhost”。如果您想将 Neo4j 限制为特定的 IP 地址,例如您的服务器用于数据路径的专用网络 IP,请在此处指定分配给服务器专用网络接口的 IP 地址。

您还可以将 Neo4j 配置为使用 IPv6 接口。与 IPv4 一样,您可以将 default_listen_address 值设置为用于与 Neo4j 通信的特定 IPv6 地址。如果你想限制 Neo4j 只为你的服务器使用本地 IPv6 地址,指定 ::1,它对应于使用 IPv6 表示法的 localhost。

完成配置 Neo4j 将用于连接的默认 IP 地址后,保存并关闭“neo4j.conf”。如果您使用的是 nano,可以通过按 CTRL+X,然后按 Y,然后按 ENTER 来完成。

注意:如果您使用 IPv6 地址配置 Neo4j,您将无法直接使用 IPv6 地址通过 cypher-shell 连接到 Neo4j。相反,您需要配置解析为 IPv6 地址的 DNS 名称,或者在远程系统的“/etc/hosts”文件中添加一个条目,将地址映射到名称。然后,您将能够使用 DNS 或主机文件名从远程系统使用 IPv6 连接到 Neo4j。

例如,具有类似“2001:db8::1”的 IPv6 地址的 Neo4j 服务器将要求远程连接系统具有如下所示的“/etc/hosts”条目,用名称代替突出显示的“your_hostname” :

/etc/hosts

. . . 2001:db8::1 你的主机名

然后,您将使用您指定的名称从远程系统连接到服务器,如下所示:

密码外壳 -a 'neo4j://your_hostname:7687'

如果您限制 Neo4j 使用 ::1 的 IPv6 localhost 地址,那么您可以使用 /etc/hosts 文件中预先配置的 ip6-localhost 名称在 Neo4j 服务器本身上本地连接到它,例如这个:

密码外壳 -a 'neo4j://ip6-localhost:7687'

使用连接 URI 调用 cypher-shell 后,系统会像往常一样提示您输入用户名和密码。

现在您已经将 Neo4j 配置为允许远程连接,限制远程访问非常重要,这样只有受信任的系统才能连接到它。要限制对 Neo4j 的远程访问,您可以使用 Ubuntu 的默认 UFW 防火墙。如果您遵循先决条件 使用 Ubuntu 20.04 进行初始服务器设置教程,则 UFW 已经安装并准备就绪在您的服务器上使用。

Neo4j 在默认安装中创建了两个网络套接字,一个在端口 7474 上用于内置 HTTP 接口,主 bolt 协议 在端口 7687 上。Neo4j 建议 不使用生产中的 HTTP 端口,所以我们将只为端口 7687 创建防火墙规则。

要将防火墙配置为允许受信任的远程主机使用 IPv4 访问“bolt”接口,请键入以下命令:

UFW IPv4 单主机示例

sudo ufw 允许从 203.0.113.1 到任何端口 7687 proto tcp

用您将用于访问 Neo4j 的受信任远程系统的 IP 地址替换突出显示的 203.0.113.1 值。

如果您想允许整个网络范围访问,例如私有管理或数据路径网络,请使用如下规则:

UFW IPv4 网络示例

sudo ufw 允许从 192.0.2.0/24 到任何端口 7687 proto tcp

同样,将您希望访问 Neo4j 的网络替换为突出显示的 192.0.2.0/24 网络。

如果您想允许主机使用 IPv6 远程访问 Neo4j,请添加如下规则:

UFW IPv6 单主机示例

sudo ufw 允许从 2001:DB8::1/128 到任何端口 7687 proto tcp

用受信任系统的 IPv6 地址代替突出显示的“2001:DB8::1/128”地址。

与 IPv4 一样,您还可以允许一系列 IPv6 地址访问您的 Neo4j 服务器。为此,请创建一个 UFW 规则,如下所示:

UFW IPv6 单主机示例

sudo ufw 允许从 2001:DB8::/32 到任何端口 7687 proto tcp

再次用您信任的网络范围替换突出显示的“2001:DB8::/32”网络范围。

为网络配置和受信任的主机或网络创建适当的 UFW 规则或规则后,启用 UFW 以使规则生效:

sudo ufw 重新加载

您可以使用 ufw status 命令检查当前加载的 UFW 规则。运行它以确保您指定的地址或网络可以访问端口 7687 上的 Neo4j:

须藤 ufw 状态

您应该具有类似于以下内容的输出:

输出状态:活动 采取行动 -- ------ ---- 22/tcp 允许任何地方 22/tcp (v6) 允许在任何地方 (v6) 7687/tcp 允许 203.0.113.1

您现在有一个配置为允许在端口 7687 上访问受信任的远程服务器或网络的 Neo4j 服务器。在本教程的下一部分中,您将了解如何将节点添加到数据库,以及如何定义它们之间的关系。

第 4 步 — 使用 Neo4j

要开始使用 Neo4j,让我们添加一些示例节点,然后定义它们之间的关系。使用 cypher-shell 连接到 Neo4j。

密码壳

注意:如果您在[第 3 步(可选)- 为远程访问配置 Neo4j](step-3-optional-configuring-neo4j-for-remote-access] 中将 Neo4j 配置为允许远程访问),请连接使用与您的 Neo4j 服务器地址相对应的 URI。例如,如果您的 Neo4j 服务器的 IP 是“203.0.113.1”,则从远程系统像这样连接到它:

密码外壳 -a 'neo4j://203.0.113.1:7687'

系统会像往常一样提示您输入用户名和密码。

如果您使用的是 IPv6,请确保您有一个 /etc/hosts 条目,其名称如步骤 3 中所述。然后使用如下所示的 cypher-shell 命令从远程系统连接到 Neo4j 服务器:

密码外壳 -a 'neo4j://your_hostname:7687'

同样,确保突出显示的“您的主机名”映射到远程系统的“/etc/hosts”文件中的 Neo4j 服务器 IPv6 地址。

一旦您使用您的用户名和密码登录到 Neo4j,您就可以查询并将节点和关系添加到数据库中。

首先,将大白鲨节点添加到 Neo4j。以下命令将创建一个类型为“Shark”的节点,名称为“Great White”。

CREATE (:Shark {name: 'Great White'});

在每个命令之后,您将收到类似于以下内容的输出:

输出 0 行在 3 毫秒后可用,再在 0 毫秒后消耗 添加 1 个节点,设置 1 个属性,添加 1 个标签

注意:以下每个 cypher 查询的完整解释超出了本教程的范围。有关 cypher 查询语言的语法的详细信息,请参阅 The Neo4j Cypher 手册。

接下来,添加更多鲨鱼,并使用名为“FRIEND”的关系将它们关联起来。 Neo4j 允许您将节点与任意命名的关系相关联,因此 FRIEND 可以是您想要使用的关系的任何标签。

在下面的示例中,我们将添加三个鲨鱼,并使用名为“FRIEND”的关系将它们链接在一起:

创造 (:Shark {name: 'Hammerhead'})-[:FRIEND]-> (:Shark {name: 'Sammy'})-[:FRIEND]-> (:鲨鱼{名称:'巨齿鲨'});

您应该会收到表明三条新鲨鱼已添加到数据库的输出:

输出。 . . 添加了 3 个节点,创建了 2 个关系,设置了 3 个属性,添加了 3 个标签

Neo4j 允许您使用任意名称来关联节点,因此除了现有的“FRIEND”关系之外,Sammy 和 Megalodon 还可以使用分类等级进行关联。

Sammy 和 Megalodon 共享 Lamniformes 的共同顺序。由于关系可以像节点一样具有属性,我们将创建一个 ORDER 关系,其 name 属性设置为 Lamniformes,以帮助描述 Sammy 和 Megalodon 的关系之一:

比赛(a:鲨鱼),(b:鲨鱼) 其中 a.name u003d 'Sammy' AND b.name u003d 'Megalodon' 创建 (a)-[r:ORDER { name: 'Lamniformes' }]->(b) 返回类型(r),r.name;

添加该关系后,您应该具有如下输出:

输出+--------------+ |类型(r) | r.name | +--------------+ | “订单” | “羊形目” | +--------------+ 1 行在 2 毫秒后可用,在另外 7 毫秒后消耗 创建了 1 个关系,设置了 1 个属性

接下来,在 Sammy 和 Hammerhead 之间添加一个“SUPERORDER”关系,基于它们的分类超目,即 Selachimorpha。同样,该关系被赋予了一个 name 属性,该属性设置为 Selachimorpha:

比赛(a:鲨鱼),(b:鲨鱼) 其中 a.name u003d 'Sammy' AND b.name u003d 'Hammerhead' 创建 (a)-[r:SUPERORDER { name: 'Selachimorpha'}]->(b) 返回类型(r),r.name;

您将再次收到指示关系类型的输出,以及为描述关系而添加的名称:

输出+--------------------------------+ |类型(r) | r.name | +--------------------------------+ | “超级秩序” | 《鲨形目》 | +--------------------------------+ 2 毫秒后可用 1 行,再过 8 毫秒后消耗 创建了 1 个关系,设置了 1 个属性

最后,在 Neo4j 中定义和存储所有这些节点和关系后,使用以下查询检查数据:

匹配 (a)-[r]->(b) 返回 a.name,r,b.name 由 r 订购;

您应该收到如下输出:

输出+------------------------------------------------- ------------------+ | a.name | r | b.名称 | +-------------------------------------------------- ------------------+ | “锤头” | [:朋友] | 《萨米》 | | 《萨米》 | [:朋友] | “巨齿鲨” | | 《萨米》 | [:ORDER {名称:“羊形目”}] | “巨齿鲨” | | 《萨米》 | [:SUPERORDER {name: "Selachimorpha"}] | “锤头” | +-------------------------------------------------- ------------------+ 72 毫秒后可用 4 行,再过 1 毫秒后消耗

输出包括在 Hammerhead、Sammy 和 Megalodon 之间定义的“FRIEND”关系,以及“ORDER”和“SUPERORDER”分类关系。

完成向 Neo4j 数据库添加和探索节点和关系后,键入 :exit 命令离开 cypher-shell。

结论

您现在已经在您的服务器上安装、配置和添加了数据到 Neo4j。您还可以选择将 Neo4j 配置为接受来自远程系统的连接并使用 UFW 对其进行保护。

如果您想了解更多关于使用 Neo4j 和 cypher 查询语言的信息,请查阅官方 Neo4j 文档。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3