最近因为项目需要,到了一个纯局域网环境中进行知识图谱构建。对于小规模数据,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图数据库运行依赖于java-jdk,首先需要进行java-jdk部署.
java-jdk版本取决于neo4j,对应关系不展开。本文使用的是neo4j 5.21.0+java-jdk 21的方案。
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
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+jupyter,本次我直接安装了anaconda,里面包含了python和jupyter等一些工具,如果要轻量化部署则还是分开安装好些。
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
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。
如果进入成功,输入密码就可以远程进行代码编写和编译工作。
如果无法打开,自己搜索,一般也是配置,网络和防火墙问题。
在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"