同一台机器上的多个版本的 neo4j 服务器
multiple versions of neo4j server at the same machine
我在 Ubuntu 18.04 上下载了两个版本的 neo4j,分别是 "neo4j-community-3.5.12" 和 "neo4j-community-3.5.8"
I 运行 3.5.8 默认设置 我可以从网上看到它。 http://localhost:7474/
对于 3.5.12,我更改了 conf/neo4j.conf 文件并设置了一些其他端口号,以免与默认端口号冲突。
3.5.8 版本 运行 在 :7474 上很好。当我启动 3.5.12 时,日志显示它是 运行ning,但当我从浏览器检查时它不是 运行ning。我尝试了 2 个不同的端口设置,none 有效。下面是日志文件。
为什么不是运行ning?
我看到很多人推荐使用 docker。我也试过了。
我用命令设置了docker一个容器
sudo docker run --name db1 -p7474:7474 -p7687:7687 -d -v /db1/data:/data -v /db1/logs:/logs -v /db1/conf:/conf --env NEO4J_AUTH=none neo4j
这里我有一个现有的 /d1/data/databases/graph.db 文件夹。当我转到 localhost:7474 时,它显示了现有的数据库。
我用命令设置了另一个docker容器
sudo docker run --name db2 -p3001:7474 -p3002:7473 -p3003:7687 -d -v /db2/data:/data -v /db2/logs:/logs -v /db2/conf:/conf --env NEO4J_AUTH=none neo4j
我希望在这里看到一个 EMPTY 数据库,但我又看到了已经存在的数据库。当我转到 db2 中的数据文件夹时。我看到它在这里创建了一些文件。为什么我看到相同的数据库?
另请注意,当我查看数据库时,headers 的网页显示它们正在使用相同的 bolt 端口?
能否复制neo4j镜像,使用不同的镜像生成容器?有帮助吗?
我认识到多个数据库正在 运行 并且处于活动状态 但不知何故我无法通过浏览器访问第二个数据库。
经过一番努力,我的解决办法是不用docker。
从这里去下载一个社区服务器。 https://neo4j.com/download-center/#community。它会给你一个压缩文件。提取它。您将拥有一个名为 neo4j-community-3.5.14
的文件夹。复制 THAT FOLDER。为每个服务器实例制作一个副本。
在该文件夹中,有一个 conf
文件夹,其中有一个名为 neo4j.conf
的文件。打开那个文件。通过更改此文件夹中的一些设置,您可以 运行 许多 neo4j 服务器。更改以下设置
要接受非本地连接,请取消注释此行:
dbms.connectors.default_listen_address=0.0.0.0
更改一些端口号,使它们不会与已使用的端口号相交
dbms.connector.bolt.listen_address=:3003
dbms.connector.https.listen_address=:3002
dbms.connector.http.listen_address=:3001
考虑 docker 命令-
cmd1: sudo docker run --name db1 -p7474:7474 -p7687:7687 -d -v /db1/data:/data -v /db1/logs:/logs -v /db1/conf:/conf --env NEO4J_AUTH=none neo4j
cmd2: sudo docker run --name db2 -p3001:7474 -p3002:7473 -p3003:7687 -d -v /db2/data:/data -v /db2/logs:/logs -v /db2/conf:/conf --env NEO4J_AUTH=none neo4j
容器端口默认公开为 db1
实例的相同主机端口。而 db2
实例系列 3xxx 已被使用。
要浏览 neo4j 提供的 UI,您可以使用映射到 7474
容器端口的 7474 or 3001
端口。
Neo4j 浏览器使用默认值(来自 neo4j.conf)连接到 neo4j 服务器。默认设置如下
bolt://<machineip>:7687
,其中 db1
实例已经将容器端口暴露给 7687
主机端口。
在 7687 端口上发现了一个 运行 实例,它为 db1
和 db2
发起了一个 WebSocket 连接。
如何连接到合适的实例?
使用::server disconnect
和 :server connect
以及适当的 bolt://<machineip>:port
连接字符串
将 db1
实例螺栓容器端口映射到不同的主机端口(即 7687 除外)
由于没有默认值可用
(首选),设置相同的hostport:containerport组合例如
cmd2: sudo docker run --name db2 -p3001:7474 -p3002:7473 -p3003:3003-d -v /db2/data:/data -v /db2/logs:/logs -v /db2/conf:/conf --env NEO4J_AUTH=none neo4j
在这种情况下,必须映射卷以提供 neo4j.conf
更新值 dbms.connector.bolt.listen_address=:3003
如果有人仍然需要它:这里是如何运行两个neo4j数据库neo4j_01和neo4j_02在两个不同的docker容器中,将数据保存在不同的容器中目录并在不同的端口上访问它们。
docker 容器 1:neo4j_01
docker run \
--name neo4j_01 \
-p1474:7474 -p1687:7687 \
-d \
-v $HOME/neo4j_01/neo4j/data:/data \
-v $HOME/neo4j_01/neo4j/logs:/logs \
-v $HOME/neo4j_01/neo4j/import:/var/lib/neo4j/import \
-v $HOME/neo4j_01/neo4j/plugins:/plugins \
--env NEO4J_AUTH=username/enterpasswordhere \
neo4j:latest
docker 容器 2:neo4j_02
docker run \
--name neo4j_02 \
-p2474:7474 -p2687:7687 \
-d \
-v $HOME/neo4j_02/neo4j/data:/data \
-v $HOME/neo4j_02/neo4j/logs:/logs \
-v $HOME/neo4j_02/neo4j/import:/var/lib/neo4j/import \
-v $HOME/neo4j_02/neo4j/plugins:/plugins \
--env NEO4J_AUTH=username/enterpasswordhere \
neo4j:latest
执行上面的代码后,例如neo4j_01可以在1474端口到达(登录时需要在第一行将bolt端口改为1687,然后在第二行和第三行输入用户名和密码)
您可以使用 docker kill neo4j_01 停止容器并使用 docker start neo4j_01 重新启动它。数据仍将存在。它保存在 $HOME/neo4j_01/neo4j/data
中。
这样做,我没有遇到任何端口问题/访问错误数据库等问题。
我在 Ubuntu 18.04 上下载了两个版本的 neo4j,分别是 "neo4j-community-3.5.12" 和 "neo4j-community-3.5.8"
I 运行 3.5.8 默认设置 我可以从网上看到它。 http://localhost:7474/
对于 3.5.12,我更改了 conf/neo4j.conf 文件并设置了一些其他端口号,以免与默认端口号冲突。
3.5.8 版本 运行 在 :7474 上很好。当我启动 3.5.12 时,日志显示它是 运行ning,但当我从浏览器检查时它不是 运行ning。我尝试了 2 个不同的端口设置,none 有效。下面是日志文件。
为什么不是运行ning?
我看到很多人推荐使用 docker。我也试过了。
我用命令设置了docker一个容器
sudo docker run --name db1 -p7474:7474 -p7687:7687 -d -v /db1/data:/data -v /db1/logs:/logs -v /db1/conf:/conf --env NEO4J_AUTH=none neo4j
这里我有一个现有的 /d1/data/databases/graph.db 文件夹。当我转到 localhost:7474 时,它显示了现有的数据库。
我用命令设置了另一个docker容器
sudo docker run --name db2 -p3001:7474 -p3002:7473 -p3003:7687 -d -v /db2/data:/data -v /db2/logs:/logs -v /db2/conf:/conf --env NEO4J_AUTH=none neo4j
我希望在这里看到一个 EMPTY 数据库,但我又看到了已经存在的数据库。当我转到 db2 中的数据文件夹时。我看到它在这里创建了一些文件。为什么我看到相同的数据库?
另请注意,当我查看数据库时,headers 的网页显示它们正在使用相同的 bolt 端口?
能否复制neo4j镜像,使用不同的镜像生成容器?有帮助吗?
我认识到多个数据库正在 运行 并且处于活动状态 但不知何故我无法通过浏览器访问第二个数据库。
经过一番努力,我的解决办法是不用docker。
从这里去下载一个社区服务器。 https://neo4j.com/download-center/#community。它会给你一个压缩文件。提取它。您将拥有一个名为 neo4j-community-3.5.14
的文件夹。复制 THAT FOLDER。为每个服务器实例制作一个副本。
在该文件夹中,有一个 conf
文件夹,其中有一个名为 neo4j.conf
的文件。打开那个文件。通过更改此文件夹中的一些设置,您可以 运行 许多 neo4j 服务器。更改以下设置
要接受非本地连接,请取消注释此行:
dbms.connectors.default_listen_address=0.0.0.0
更改一些端口号,使它们不会与已使用的端口号相交
dbms.connector.bolt.listen_address=:3003
dbms.connector.https.listen_address=:3002
dbms.connector.http.listen_address=:3001
考虑 docker 命令-
cmd1: sudo docker run --name db1 -p7474:7474 -p7687:7687 -d -v /db1/data:/data -v /db1/logs:/logs -v /db1/conf:/conf --env NEO4J_AUTH=none neo4j
cmd2: sudo docker run --name db2 -p3001:7474 -p3002:7473 -p3003:7687 -d -v /db2/data:/data -v /db2/logs:/logs -v /db2/conf:/conf --env NEO4J_AUTH=none neo4j
容器端口默认公开为 db1
实例的相同主机端口。而 db2
实例系列 3xxx 已被使用。
要浏览 neo4j 提供的 UI,您可以使用映射到 7474
容器端口的 7474 or 3001
端口。
Neo4j 浏览器使用默认值(来自 neo4j.conf)连接到 neo4j 服务器。默认设置如下
bolt://<machineip>:7687
,其中 db1
实例已经将容器端口暴露给 7687
主机端口。
在 7687 端口上发现了一个 运行 实例,它为 db1
和 db2
发起了一个 WebSocket 连接。
如何连接到合适的实例?
使用:
:server disconnect
和:server connect
以及适当的bolt://<machineip>:port
连接字符串将
db1
实例螺栓容器端口映射到不同的主机端口(即 7687 除外) 由于没有默认值可用(首选),设置相同的hostport:containerport组合例如
cmd2:
sudo docker run --name db2 -p3001:7474 -p3002:7473 -p3003:3003-d -v /db2/data:/data -v /db2/logs:/logs -v /db2/conf:/conf --env NEO4J_AUTH=none neo4j
在这种情况下,必须映射卷以提供
neo4j.conf
更新值dbms.connector.bolt.listen_address=:3003
如果有人仍然需要它:这里是如何运行两个neo4j数据库neo4j_01和neo4j_02在两个不同的docker容器中,将数据保存在不同的容器中目录并在不同的端口上访问它们。
docker 容器 1:neo4j_01
docker run \
--name neo4j_01 \
-p1474:7474 -p1687:7687 \
-d \
-v $HOME/neo4j_01/neo4j/data:/data \
-v $HOME/neo4j_01/neo4j/logs:/logs \
-v $HOME/neo4j_01/neo4j/import:/var/lib/neo4j/import \
-v $HOME/neo4j_01/neo4j/plugins:/plugins \
--env NEO4J_AUTH=username/enterpasswordhere \
neo4j:latest
docker 容器 2:neo4j_02
docker run \
--name neo4j_02 \
-p2474:7474 -p2687:7687 \
-d \
-v $HOME/neo4j_02/neo4j/data:/data \
-v $HOME/neo4j_02/neo4j/logs:/logs \
-v $HOME/neo4j_02/neo4j/import:/var/lib/neo4j/import \
-v $HOME/neo4j_02/neo4j/plugins:/plugins \
--env NEO4J_AUTH=username/enterpasswordhere \
neo4j:latest
执行上面的代码后,例如neo4j_01可以在1474端口到达(登录时需要在第一行将bolt端口改为1687,然后在第二行和第三行输入用户名和密码)
您可以使用 docker kill neo4j_01 停止容器并使用 docker start neo4j_01 重新启动它。数据仍将存在。它保存在 $HOME/neo4j_01/neo4j/data
中。
这样做,我没有遇到任何端口问题/访问错误数据库等问题。