同一台计算机上的多个neo4j服务器版本

同一台计算机上的多个neo4j服务器版本,neo4j,graph-databases,Neo4j,Graph Databases,我在Ubuntu 18.04上下载了两个版本的neo4j,分别是“neo4j-community-3.5.12”和“neo4j-community-3.5.8” 我使用默认设置运行3.5.8,我可以从web上看到它 对于3.5.12,我更改了conf/neo4j.conf文件,并设置了一些其他端口号,以避免与默认端口号冲突 3.5.8版本在:7474上运行良好。当我启动3.5.12时,日志显示它正在运行,但当我从浏览器检查时,它没有运行。我尝试了两种不同的端口设置,但都不起作用。下面是日志文件。

我在Ubuntu 18.04上下载了两个版本的neo4j,分别是“neo4j-community-3.5.12”和“neo4j-community-3.5.8”

我使用默认设置运行3.5.8,我可以从web上看到它

对于3.5.12,我更改了conf/neo4j.conf文件,并设置了一些其他端口号,以避免与默认端口号冲突

3.5.8版本在:7474上运行良好。当我启动3.5.12时,日志显示它正在运行,但当我从浏览器检查时,它没有运行。我尝试了两种不同的端口设置,但都不起作用。下面是日志文件。

为什么它没有运行

我看到很多人建议使用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——名称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

在这里,我希望看到一个空的数据库,但我再次看到了已经存在的数据库。当我转到db2中的数据文件夹时。我看到它在这里创建了一些文件。为什么我会看到相同的数据库

还请注意,当我去查看数据库时,网页的标题显示它们使用的是相同的螺栓端口

我可以复制neo4j图像并使用不同的图像生成容器吗?这有用吗


我认识到多个数据库正在运行并处于活动状态,但不知何故,我无法通过浏览器访问第二个数据库。

经过大量努力,我的解决方案是不使用docker

从这里下载社区服务器。它会给你一个压缩文件。把它取出来。您将拥有一个名为
neo4j-community-3.5.14
的文件夹。制作该文件夹的副本。为每个服务器实例制作一个副本

文件夹中有一个
conf
文件夹,其中有一个名为
neo4j.conf
的文件。打开那个文件。通过更改此文件夹中的某些设置,可以运行许多neo4j服务器。更改以下设置

要接受非本地连接,请取消注释此行:
dbms.connectors.default\u listen\u address=0.0.0

更改一些端口号,以便它们不会与已使用的端口号相交
dbms.connector.bolt.listen\u地址=:3003
dbms.connector.https.listen\u地址=:3002

dbms.connector.http.listen\u 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——名称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或3001
端口


Neo4j浏览器使用默认值(从Neo4j.conf)连接到Neo4j服务器。默认设置如下所示
bolt://:7687
,其中
db1
实例已将容器端口暴露给
7687
主机端口。 7687端口上有一个正在运行的实例,它为
db1
db2
启动WebSocket连接


如何连接到适当的实例

  • 使用:
    :服务器断开连接
    :服务器连接
    ,使用适当的
    螺栓://:端口
    连接字符串

  • 映射
    db1
    实例螺栓容器端口到不同的主机端口(即7687以外的端口) 因为没有默认值可用

  • (首选),设置相同的主机端口:containerport组合,例如

    cmd2:
    sudo docker run——名称db2-p3001:7474-p3002:7473-p3003-d-v/db2/data:/data-v/db2/logs:/logs-v/db2/conf:/conf——env NEO4J_AUTH=none NEO4J

    在这种情况下,必须映射一个卷,以提供更新值
    dbms.connector.bolt.listen\u address=:3003


  • 如果有人还需要它:下面是如何在两个不同的docker容器中运行两个neo4j数据库neo4j_01和neo4j_02,将数据保存在不同的目录中,并在不同的端口上访问它们

    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
    
    执行上述代码后,可以在端口1474上访问neo4j_01(登录时,需要在第一行中将螺栓端口更改为1687,然后在第二行和第三行输入用户名和密码)

    您可以使用docker kill neo4j_01停止容器,并使用docker start neo4j_01重新启动容器。数据仍然存在。它保存在
    $HOME/neo4j_01/neo4j/data


    这样做,我在端口/访问错误的数据库等方面没有遇到任何问题。

    我正在构建场景,您为
    db1
    和image
    db2
    公开了相同的主机端口。当您使用浏览器浏览neo4j时,它会尝试连接到
    bolt://:7687
    ,在这两种情况下,它都指向
    db1
    。这可以通过在主机端口(而不是默认端口)上公开
    db1
    的bolt服务轻松证明,即您需要进行更改
    -p7687:7687
    。在默认端口上找不到任何服务