centos系统中neo4j数据库和python环境部署

最近因为项目需要,到了一个纯局域网环境中进行知识图谱构建。对于小规模数据,neo4j社区版能够满足基本的建模和查询需要(大规模数据需要商业版,或是选用其他开源分布式图数据库如nebula等)。本文主要介绍图数据库和python环境的部署过程和关键操作,以及一些遇到的问题。

部署需求

现状:手头有一台服务器,安装了centos系统,没有图形化界面。

目标:服务器上建立图数据库,并且有python开发环境支持我们进行图数据库的构建的查询开发。

主要思路:服务器没有图形化界面,作为开发环境不太合适,因此计划服务器上部署的neo4j和python能够被局域网远程机器所访问,在其他机器上通过浏览器进行neo4j的操作和python代码编写。考虑到机器在局域网中,后续的方案基本上都是通过离线下载,导入,本地编译或安装的方式进行。

技术方案:neo4j+python+jupyter notebook

系统现状

系统版本查询

cat /etc/redhat-release

安装python版本

python --version

安装基本工具:

yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel readline-devel sqlite-devel

neo4j图数据库部署

neo4j图数据库运行依赖于java-jdk,首先需要进行java-jdk部署.

java-jdk版本取决于neo4j,对应关系不展开。本文使用的是neo4j 5.21.0+java-jdk 21的方案。

java-jdk部署

1.下载地址:Java Downloads | Oracle]

2.迁移到服务器上

3.解压缩到指定目录

tar -zxvf jdk-版本号-linux-x64.tar.gz -C /opt/

4.配置环境变量,让系统识别到:

vi /etc/profile #打开环境配置文件,在文件最后插入以下内容
# 以下是profile文件要添加内容
export JAVA_HOME=/opt/jdk-版本号 #配置主地址
export PATH=$PATH:$JAVA_HOME/bin #配置启动地址

5.运行配置方案,让方案生效:

source /etc/profile

6.检查安装是否成功

java -version

neo4j部署

1.下载:[Neo4j Deployment Center - Graph Database & Analytics]

2.迁移到服务器上

3.解压到指定目录

tar xvf neo4j-community-3.5.26-unix.tar.gz -C /opt/

4.修改配置,开放监听IP和端口,让远程服务器能够访问

vi ./opt/neo4j-community/conf/neo4j.conf #路径自己修改,主要打开neo4j配置文件,在里面添加两句话
#以下是neo4j.conf文档内添加内容
dbms.connector.http.listen_address=0.0.0.0:7474 #添加http监听
dbms.connector.bolt.listen_address=0.0.0.0:7687 #添加bolt连接监听

5.在neo4j安装目录下的服务启动

./bin/neo4j start #启动neo4j
./bin/neo4j status #查看启动状态

6.测试,在局域网其他机器打开http://服务器IP:7474,进入neo4j管理页面。

首次进去初始账号和密码都是neo4j,进去后让你修改密码

如果发现无法打开,在配置正确情况下,确认局域网互通且服务器防火墙配置。纠错这里不展开。

python环境部署

可以独立地安装python+jupyter,本次我直接安装了anaconda,里面包含了python和jupyter等一些工具,如果要轻量化部署则还是分开安装好些。

anaconda部署

1.下载,直接打开网址,或是使用命令,在其他机器下载后,迁移到服务器。

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-1-Linux-x86_64.sh

2.安装:

bash Anaconda3-版本号-Linux-x86_64.sh

3.配置环境变量,默认安装地址的话,一般会自动配置环境变量,但如果是自定义地址,还是自己配置下环境变量靠谱些。配置方案与jdk类似,需要添加的是这个。

export PATH=/opt/anaconda3/bin:$PATH

4.检查安装是否成功

conda list

jupyter配置

1.检查jupyter是否安装成功了

jupyter notebook --version

2.生成配置文件

jupyter notebook --generate-config

命令会生成一个配置文件~/.jupyter/jupyter_notebook_config.py

3.配置监听地址和端口,密码

c.NotebookApp.ip = '*' #所有地址都监听
c.NotebookApp.port = 8888 #监听端口
c.NotebookApp.password = u'sha1:xxxxxxxxxxxxxxxxxxxxxx' #访问密码哈希值

密码的生成使用需要在python环境内运行以下代码:

from notebook.auth import passwd
passwd()

结果让你输入密码以及生成该密码的哈希值。

4.启动服务

jupyter notebook

5.如果为了更安全,可以使用SSH端口转发(不一定)

ssh -N -f -L localhost:xxxx:localhost:yyyy username@server_ip

其中xxxx是本地端口,yyyy是服务器上Jupyter运行的端口(默认为8888)。

在远程浏览器中打开http://服务器IP:8888,进入jupyter。

如果进入成功,输入密码就可以远程进行代码编写和编译工作。

如果无法打开,自己搜索,一般也是配置,网络和防火墙问题。

neo4j python支持安装

在python中操作neo4j需要安装对应的库,py2neo由于停止更新了,目前版本不支持最新的python版本,所以使用neo4j的python库。

1.离线下载地址:[neo4j · PyPI]

2.传输wheel文件:
将下载的.whl文件复制到离线安装的目标机器上。

3.使用pip进行离线安装:
在目标机器上,使用pip安装这些wheel文件:

pip install --no-index --find-links=file:///path/to/offline/wheels neo4j

4.验证安装:
安装完成后,使用以下命令验证Neo4j Python驱动程序是否安装成功:

python -c "import neo4j"


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黄金架构编译部署

LNMP黄金架构部署 行走的CD: LNMP的解析过程:提到 LNMP的解析过程,我们应需要了解一个概念 CGI, CGI 就是指一个通用网关接口,用于 HTTP 服务器和其他应用服务器通讯的一个工具,在这 HTTP 服务器一般咱们就是指的是 Nginx、 Apac…

Java | Leetcode Java题解之第201题数字范围按位与

题目&#xff1a; 题解&#xff1a; class Solution {public int rangeBitwiseAnd(int m, int n) {while (m < n) {// 抹去最右边的 1n n & (n - 1);}return n;} }

获取当前操作系统的名称platform.system()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 获取当前操作系统的名称 platform.system() [太阳]选择题 在Python中&#xff0c;platform.system() 函数被用来获取什么信息&#xff1f; import platform print("【执行】platform.s…

如何在Java中实现自定义数据结构

如何在Java中实现自定义数据结构 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我将为大家介绍如何在Java中实现自定义数据结构。尽管Java提供了丰富的内置…

05 threeJs基础---阵列立方体和相机适配体验立方体

1.增加相机视角fov 注&#xff1a; 范围更大&#xff0c;意味着可以看到渲染范围更大&#xff0c;远小近大的视觉效果更明显 fov:眼球张开的角度&#xff0c;0时相当于闭眼。aspect:可视区域横纵比。near:眼睛能看到的最近垂直距离。far&#xff1a;眼睛能看到的最远垂直距离。…

Python中的@property装饰器:深入理解与应用

Python中的property装饰器&#xff1a;深入理解与应用 在Python中&#xff0c;property装饰器是一个强大的工具&#xff0c;它允许我们将方法作为属性来访问&#xff0c;使得代码更加简洁、清晰&#xff0c;并提供了更好的封装性。本文将深入探讨property装饰器的工作原理、应…

字节数组输出流转换为Base64方法记录

1. 今天在做字节数组转换Base64的时候遇到一个问题&#xff0c;转换成的Base64字符串自动换行&#xff0c;导致传输失败 关键代码&#xff1a; ByteArrayOutputStream out new ByteArrayOutputStream(); ............. BASE64Encoder encoder new BASE64Encoder(); Stri…

Python 3 循环语句

Python 3 循环语句 Python 是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而闻名。在 Python 中,循环语句是控制程序流程的关键组成部分,它们允许我们重复执行代码块,直到满足特定的条件。Python 3 提供了几种循环语句,包括 for 循环和 while 循环,以及一…

由于没有远程桌面授权服务器怎么办?

在现代的工作环境中&#xff0c;远程访问和远程桌面控制已经成为一项日益重要的需求。随着企业和组织的扩张&#xff0c;人们经常需要在不同的地点之间共享文件和应用程序。由于缺乏远程桌面授权服务器&#xff0c;这一过程可能会变得困难和不安全。 远程桌面授权服务器是一种…

day02-登录模块-主页鉴权

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.分析登录流程1.1传统思路是登录校验通过之后&#xff0c;直接调用接口&#xff0c;获取token之后&#xff0c;跳转到主页1.2vue-element-admin模板的登录思路&…

信息(文字、图像、音频、视频等)在计算机中是如何存储及显示的

信息&#xff08;文字、图像、音频、视频等&#xff09;在计算机中是如何存储及显示的 图片的存储图片的文件格式像素数据的二进制表示存储和处理显示总结 图片的显示4. 像素点控制具体的像素控制过程示例总结 如题&#xff0c;这里以图片为例。 图片的存储 计算机桌面上的一…

基于盲信号处理的声音分离-基于改进的信息最大化的ICA算法

基于信息最大化的ICA算法的主要依据是使输入端与输出端的互信息达到最大&#xff0c;且输出各个分量之间的相关性最小化&#xff0c;即输出各个分量之间互信息量最小化&#xff0c;其算法的系统框图如图所示。 基于信息最大化的ICA算法的主要依据是使输入端与输出端的互信息达到…

华侨大学24计算机考研数据速览,专硕22408复试线290分,学硕11408接收调剂!

华侨大学计算机专业创建于1980年&#xff0c;是福建省最早设立计算机专业的高校之一。1982年成立计算机系&#xff0c;2008年成立计算机科学与技术学院。根据“华侨大学计算机科学与技术学院网站”资料&#xff0c;该院有计算机科学与技术、软件工程、网络工程3个本科专业&…

java中常见数据结构

ArrayList 是 Java 集合框架&#xff08;Java Collections Framework&#xff09;中的一个重要类&#xff0c;它实现了 List 接口&#xff0c;并提供了动态数组的功能。以下是 ArrayList 上的一些常用方法&#xff1a; 构造方法&#xff1a; ArrayList<E>(): 构造一个空的…

git基本使用(二):git分支的操作命令

Git 的多分支管理是指在同一个仓库中创建和管理多个分支&#xff0c;每个分支可以独立开发&#xff0c;互不干扰。分支是 Git 中的一种强大功能&#xff0c;允许开发人员同时在多个不同的功能、修复或实验上工作&#xff0c;而不会影响主分支或其他分支。通过多分支管理&#x…

spring-boot-starter-json配置对象属性为空不显示

问题背景 在Spring Boot中使用spring-boot-starter-json&#xff08;通常是通过jackson实现的&#xff09;时&#xff0c;如果你希望在序列化对象时&#xff0c;如果某个属性为空&#xff0c;则不显示该属性&#xff0c;你可以使用JsonInclude注解来实现这一点。 pom.xml <…

Java数据结构算法(最长递增序列二分查找)

前言: 最长递增子序列&#xff08;Longest Increasing Subsequence, LIS&#xff09;是指在一个给定的序列中&#xff0c;找到一个最长的子序列&#xff0c;使得这个子序列中的元素是单调递增的。子序列不要求在原序列中连续。 实现原理 使用一个 tails 列表&#xff0c;其中…

Java对象集合按照指定元素顺序排序

需求背景 最近在对一个集合列表的数据进行排序&#xff0c;需求是要集合数据按照一个排序状态值进行排序&#xff0c;而这个状态值&#xff0c;不是按照从小到大这样的顺序排序的&#xff0c;而是要按照特定的顺序&#xff0c;比如按照1, 0, 2的顺序排的&#xff0c;所以需要自…

clickhouse count和uniqCombined

count(distinct ) 和 uniqCombined 获取去重后的总数。 去重&#xff1a;order by distinct argMax group by 哪个好&#xff1f;&#xff1f; clickhouse数据去重函数介绍&#xff08;count distinct&#xff09;_clickhouse distinct-CSDN博客

stm32-USART通信

什么是usart&#xff1f;和其他通信又有什么区别&#xff1f; 如下图&#xff1a; USART是一种用于串行通信的设备&#xff0c;可以在同步和异步模式下工作。 usart有两根数据线&#xff0c;一根发送线&#xff08;tx&#xff09;一根接收线&#xff08;rx&#xff09;&#x…