在离线 Ubuntu 情况下摆设双 Neo4j 实例(Prod & Dev)

打印 上一主题 下一主题

主题 1925|帖子 1925|积分 5775

在许多开发和生产场景中,我们大概需要在同一台服务器上运行多个独立的 Neo4j 数据库实例,比方一个用于生产情况 (Prod),一个用于开发测试情况 (Dev)。本文将详细介绍怎样在 离线 的 Ubuntu 服务器上,使用 tar.gz 包摆设两个 Neo4j 4.4 实例,并配置不同的端口以供外部访问,同时涵盖了摆设过程中大概遇到的常见问题及其办理方案。
1. 需求:

ubuntu系统下,离线情况,我想要摆设两套neo4j的数据库(一套prod(服务端口17687,浏览器端口17474),一套dev(服务端口17688,浏览器端口17475),都需要别的主机能访问到)(下载的neo4j版本为neo4j-community-4.4.42-unix.tar.gz)
**前提条件:**Java 11 运行情况
2. 场景目的



  • 情况: 离线 Ubuntu 服务器。
  • 软件: Neo4j Community Edition 4.4.42 (以 neo4j-community-4.4.42-unix.tar.gz 形式提供)。
  • 目的:

    • 摆设一个生产实例 (Prod),服务端口 17687 ,浏览器端口 17474 。
    • 摆设一个开发实例 (Dev),服务端口 17688 ,浏览器端口 17475 。
    • 两个实例均需配置为可从其他主机访问。
    • 办理摆设过程中大概遇到的常见问题。

3. 预备工作

在开始摆设之前,请确保满足以下前提条件:

  • 利用系统: Ubuntu Server (本文以 Ubuntu 为例,其他 Linux 发行版雷同)。
  • Neo4j 安装包: 已将 neo4j-community-4.4.42-unix.tar.gz 文件传输到目的服务器。
  • Java 运行情况 (JRE/JDK): 至关紧张的一点 ,Neo4j 4.4.x 版本明白要求 Java 11 。由于是离线情况,你需要预先将 Java 11 的安装包(比方 OpenJDK 11 JRE/JDK 的 .deb 包或压缩包)传输到服务器并完成安装。可以通过 java -version 命令查抄当前 Java 版本。版本不匹配是导致启动失败或功能非常的常见原因。
4. 摆设步骤

4.1 必须的配置

**4.1.1 创建安装目录: **为 prod 和 dev 情况分别创建独立的目录。发起放在 /opt 目录下。

  1. sudo mkdir -p /opt/neo4j-prod
复制代码
  1. sudo mkdir -p /opt/neo4j-dev
复制代码
**4.1.2 解压 Neo4j: **将 neo4j-community-4.4.42-unix.tar.gz 分别解压到对应的目录。假设你的压缩包位于当前用户的 home 目录下 ( ~ )。

  1. tar -xzf neo4j-community-4.4.42-unix.tar.gz -C /opt/neo4j-prod --strip-components=1
复制代码
  1. tar -xzf neo4j-community-4.4.42-unix.tar.gz -C /opt/neo4j-dev --strip-components=1
复制代码


  • –strip-components=1 用于去除压缩包内顶层的目录结构。
4.1.3 创建数据和日志目录: 为两个实例分别创建数据和日志存储目录,并确保 Neo4j 进程有权限访问(如果使用特定用户运行 Neo4j,需要调解权限)。

  1. sudo mkdir -p /var/lib/neo4j-prod/data
复制代码
  1. sudo mkdir -p /var/log/neo4j-prod
复制代码
  1. sudo mkdir -p /var/lib/neo4j-dev/data
复制代码
  1. sudo mkdir -p /var/log/neo4j-dev
复制代码
**4.1.4 配置 Prod 实例: **编辑 prod 实例的配置文件 /opt/neo4j-prod/conf/neo4j.conf 。你可以使用 nano 或 vim 编辑器。

  1. sudo nano /opt/neo4j-prod/conf/neo4j.conf
复制代码
找到并修改或取消解释以下行:
  1. # ... 其他配置 ...
  2. # Bolt connector
  3. # Bolt 监听地址和端口,0.0.0.0 表示监听所有网络接口
  4. dbms.connector.bolt.listen_address=0.0.0.0:17687
  5. # HTTP connector
  6. # HTTP 浏览器监听地址和端口
  7. dbms.connector.http.listen_address=0.0.0.0:17474
  8. # HTTPS connector
  9. # HTTPS 浏览器监听地址和端口 (如果启用HTTPS)
  10. # dbms.connector.https.listen_address=0.0.0.0:17473 # 可以保持注释或配置一个不同于dev的端口
  11. # 数据目录
  12. dbms.directories.data=/var/lib/neo4j-prod/data
  13. # 日志目录
  14. dbms.directories.logs=/var/log/neo4j-prod
  15. # 导入目录 (如果需要)
  16. # dbms.directories.import=/path/to/prod/import
  17. # 内存配置 (根据服务器资源调整)
  18. # dbms.memory.heap.initial_size=1g
  19. # dbms.memory.heap.max_size=1g
  20. # dbms.memory.pagecache.size=2g
  21. # 允许远程访问浏览器 (4.x 版本通常默认允许,但明确设置更保险)
  22. # dbms.security.allow_csv_import_from_urls=true # 如果需要从URL导入CSV
  23. # dbms.security.procedures.unrestricted=my.extensions.example,my.procedures.* # 如果有自定义插件
  24. # ... 其他配置 ...
复制代码
生存并关闭文件 (在 nano 中是 Ctrl+X , 然后 Y , 然后 Enter )。
4.1.5 配置 Dev 实例: 编辑 dev 实例的配置文件 /opt/neo4j-dev/conf/neo4j.conf 。

  1. sudo nano /opt/neo4j-dev/conf/neo4j.conf
复制代码
找到并修改或取消解释以下行:
  1. # ... 其他配置 ...
  2. # Bolt connector
  3. dbms.connector.bolt.listen_address=0.0.0.0:17688
  4. # HTTP connector
  5. dbms.connector.http.listen_address=0.0.0.0:17475
  6. # HTTPS connector
  7. # dbms.connector.https.listen_address=0.0.0.0:17476 # 可以保持注释或配置一个不同于prod的端口
  8. # 数据目录
  9. dbms.directories.data=/var/lib/neo4j-dev/data
  10. # 日志目录
  11. dbms.directories.logs=/var/log/neo4j-dev
  12. # 导入目录 (如果需要)
  13. # dbms.directories.import=/path/to/dev/import
  14. # 内存配置 (通常 dev 环境可以配置得比 prod 低)
  15. # dbms.memory.heap.initial_size=512m
  16. # dbms.memory.heap.max_size=512m
  17. # dbms.memory.pagecache.size=1g
  18. # ... 其他配置 ...
复制代码
生存并关闭文件 (在 nano 中是 Ctrl+X , 然后 Y , 然后 Enter )。
4.1.6 配置防火墙: 如果你的 Ubuntu 服务器启用了防火墙 (如 ufw ),需要允许外部访问配置的端口。

  1. # 允许 Prod 实例端口
  2. sudo ufw allow 17687/tcp
复制代码
  1. sudo ufw allow 17474/tcp
复制代码
  1. # 如果启用了 HTTPS for Prod,也需要允许对应端口
  2. # sudo ufw allow 17473/tcp
复制代码
  1. # 允许 Dev 实例端口
  2. sudo ufw allow 17688/tcp
复制代码
  1. sudo ufw allow 17475/tcp
复制代码
  1. # 如果启用了 HTTPS for Dev,也需要允许对应端口
  2. # sudo ufw allow 17476/tcp
复制代码
  1. # 重新加载防火墙规则使之生效
  2. sudo ufw reload
复制代码
  1. # 查看防火墙状态和规则
  2. sudo ufw status verbose
复制代码
**4.1.7 启动 Neo4j 实例: **分别启动两个实例。

启动 Prod 实例:
  1. sudo /opt/neo4j-prod/bin/neo4j start
复制代码
启动 Dev 实例:
  1. sudo /opt/neo4j-dev/bin/neo4j start
复制代码
**4.1.8 查抄状态: **查抄两个实例的运行状态。

查抄 Prod 实例:
  1. sudo /opt/neo4j-prod/bin/neo4j status
复制代码
查抄 Dev 实例:
  1. sudo /opt/neo4j-dev/bin/neo4j status
复制代码
如果看到 “Neo4j is running” 或雷同信息,表现启动乐成。
4.1.9 访问和初始设置:

至此,就算是摆设完成了。


  • **Prod 实例: **在其他呆板的浏览器中访问 http://<你的服务器IP>:17474 。
  • **Dev 实例: **在其他呆板的浏览器中访问 http://<你的服务器IP>:17475 。
首次毗连时,会要求使用默认用户名 neo4j 和默认暗码 neo4j 登录。登录后,系统会逼迫你修改暗码。请为每个实例设置不同的强暗码。

4.1.10 制止实例 (如果需要):

制止 Prod 实例:
  1. sudo /opt/neo4j-prod/bin/neo4j stop
复制代码
制止 Dev 实例:
  1. sudo /opt/neo4j-dev/bin/neo4j stop
复制代码
4.2 可选的配置

可选:配置为 Systemd 服务 (推荐)
为了方便管理(开机自启、后台运行、重启等),发起将 Neo4j 实例配置为 systemd 服务。
4.2.1 创建 Prod 服务文件:

  1. sudo nano /etc/systemd/system/neo4j-prod.service
复制代码
粘贴以下内容 (如果使用特定用户运行,请修改 User 和 Group ):
  1. [Unit]
  2. Description=Neo4j Graph Database (Prod)
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. User=root  # 或者你创建的专用用户,如 neo4j
  7. Group=root # 或者你创建的专用用户组,如 neo4j
  8. ExecStart=/opt/neo4j-prod/bin/neo4j start
  9. ExecStop=/opt/neo4j-prod/bin/neo4j stop
  10. ExecStatus=/opt/neo4j-prod/bin/neo4j status
  11. PIDFile=/opt/neo4j-prod/run/neo4j.pid # 确认 PID 文件路径是否正确,可能在 /var/run/neo4j-prod 等
  12. Restart=on-failure
  13. LimitNOFILE=65536 # 增加文件描述符限制
  14. [Install]
  15. WantedBy=multi-user.target
复制代码
注意: PIDFile 的路径大概需要根据实际情况调解,查抄 Neo4j 启动后 run 目录下的 neo4j.pid 文件位置。如果以非 root 用户运行,确保该用户对 /opt/neo4j-prod 及其子目录有读写执行权限,特殊是 run , logs , data 目录。
4.2.2 创建 Dev 服务文件:

  1. sudo nano /etc/systemd/system/neo4j-dev.service
复制代码
粘贴以下内容 (同样注意 User 和 Group ):
  1. [Unit]
  2. Description=Neo4j Graph Database (Dev)
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. User=root  # 或者你创建的专用用户
  7. Group=root # 或者你创建的专用用户组
  8. ExecStart=/opt/neo4j-dev/bin/neo4j start
  9. ExecStop=/opt/neo4j-dev/bin/neo4j stop
  10. ExecStatus=/opt/neo4j-dev/bin/neo4j status
  11. PIDFile=/opt/neo4j-dev/run/neo4j.pid # 确认 PID 文件路径
  12. Restart=on-failure
  13. LimitNOFILE=65536
  14. [Install]
  15. WantedBy=multi-user.target
复制代码
4.2.3 启用和管理服务:

  1. # 重新加载 systemd 配置
  2. sudo systemctl daemon-reload
复制代码
  1. # 启动 Prod 服务
  2. sudo systemctl start neo4j-prod
复制代码
  1. # 启动 Dev 服务
  2. sudo systemctl start neo4j-dev
复制代码
  1. # 查看 Prod 服务状态
  2. sudo systemctl status neo4j-prod
复制代码
  1. # 查看 Dev 服务状态
  2. sudo systemctl status neo4j-dev
复制代码
  1. # 设置 Prod 服务开机自启
  2. sudo systemctl enable neo4j-prod
复制代码
  1. # 设置 Dev 服务开机自启
  2. sudo systemctl enable neo4j-dev
复制代码
  1. # 停止服务 (示例: 停止 prod)
  2. # sudo systemctl stop neo4j-prod
复制代码
  1. # 重启服务 (示例: 重启 dev)
  2. # sudo systemctl restart neo4j-dev
复制代码
5. 总结

通过以上步骤,我们乐成地在离线的 Ubuntu 服务器上摆设了两个独立的 Neo4j 实例,并配置了不同的端供词外部访问。关键在于为每个实例提供独立的安装、数据和日志目录,并仔细配置 neo4j.conf 文件中的监听地点、端口和目录路径。同时,确保运行情况满足 Neo4j 的要求(特殊是 Java 11),并掌握了通过查抄日志、访问地点和端口监听状态来排查启动问题的基本方法。使用 systemd 服务管理 Neo4j 实例是推荐的最佳实践,可以大大简化运维工作。
6. 附录

Neo4j下载地点:
https://neo4j.com/deployment-center/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表